Node Red Room Aware Voice Control

I think it would be more trouble than is worth, but with Voiceflow you could create an Alexa skill, that could work with node red to do this, but you would have to invoke the skill. It would be something like this:
Alexa, open myskill (something Iike ‘channel selection’ )
Which channel?
ESPN
Then the skill sends the device, name to NR where you could map the channel # to the name. You could also build the mapping inside Voiceflow, but I think it is easier in NR.

Out of interest, what are you using to control the TV?

I'm not too familiar with these but isn't there a way to connect these to HE?

So guessing you have that. So I don't see why it cant be done in NR.

"Alexa, ESPN" if using the driver for HE, then doesn't this allow you to set commands in the Child?
So if "Alexa ESPN" was heard in the lounge, then you use that and switch on that switch in NR.

Or am I missing something?

This supports telnet commands to the device above, works great.

2 Likes

Ah so your able to do it?

I create dummy virtual switches in HE/ Alexa. I then say Alexa turn on ESPN. I hear the chime and then the Alexa NR integration determine the Sonos name I spoke to, then routes the request to the Global Cache device via IR command in the appropriate room. You will need a mapping subflow which converts ESPN to the actual channel number with loop when sending the IR command digits. I use this with AT&T TV streaming box, works great!

1 Like

I do something similar with my Harmony, its very cool :slight_smile:

Yes, but I wanted a solution with zero cloud dependency.

1 Like

I really want to use Natural Language Processing for my smart home but also bypass skill invocation.

Does Amazon sell a business level Alexa solution that would allow me to create my own bot at the root of the Alexa device? Ultimately these results would flow into Node Red with the source Alexa device / group name. I don't want to say, Alexa launch my Home Bot. I just want to say the command directly.

Alexa, change the channel to CBS. (using NLP to parse the channel name with number entity lookup, info would be passed as msg properties)

Alexa

I am not 100% what you are asking but I think you are asking to be able to say "Change channel to CBS" when Alexa has to hear "Alexa, Ask Harmony (or similar) to change channel to CBS." If that's the case, a String Node could prepend "Ask Harmony to" to your command before sending on. Your dummy Routine would have to be the "Change channel to CBS" command.

If your request is more complicated than that, I will sit down and shut up. :grin:

1 Like

Have a look at Amazon developer to see if this meets your needs
https://developer.amazon.com/en-IN/alexa/alexa-skills-kit

I want to be able to say "Alexa, change the channel to CBS." without invocation, nor setting up hundreds of dummy routines in the Alexa app.

I would receive the following data in Node Red from the Alexa node.

msg.intent = "changeChannel"

msg.alexaSourceDevice = "Master Bedroom Echo"

msg.channelNumber = 12

Is there anyway to make create this type of experience? :slight_smile:

Tbh, i have not had a thorough look at the developer docs, but i know you can create your own skill (so no dummy routines), so i would image that, if you integrate the harmony into your own skill, it should be possible.

The whole amazon developer and AWS services is another deep rabbit hole ive only just started scratching the surface on!

I feel like the Alexa part above is your biggest hurdle. I can't come up with any logic you could implement to tell her not to go out and search the internet if your phrase is not in her "quiver" but only do that when you say specific phrases but you don't want to tell her what those phrases are.

I can't seem to get around this. My Alexa skill requires invocation always so no way to issue a direct command. We need HE to add the following, but then again if we push the command through HE, we lose room awareness since alexa doesn't support room awareness for tv, fan, etc. Currently Alexa only supports room awareness for lights.

https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-channelcontroller.html

Have you looked under the Custom Alexa Routines? They added the capability of having them issue "voice" commands - so in theory you could have Alexa tell itself to do something.

Thanks but this does not meet the variable and room awareness requirement. I do not want to create 50 routines for 50 channels. FYI - I use an IR Blaster inside Node Red for TV control.

Does anyone know if a similar NR node exists for Google Assistant when determining the source device spoken to? This would be the equivalent to "node-red-contrib-alexa-remote2".

I am in a similar position, I've used 'node-red-contrib-amazon-echo' to create virtual switches for each tv channel (I use Home Assistant/SmartIR/Broadlink but don't hold that against me!) and they show up in the Alexa app so she doesn't freak out (restart Hubitat/Node Red to reload devices afterwards). I then use room awareness in Node Red as above. To make life easier, you can create 50 'blank' virtual devices then select them all - export them as text and edit the channel names in then import back into NR. Perhaps 'blank1', 'blank2' etc then find and replace 'blank'. I've captured each number on the tv remote and am presently joining them up in the desired format eg; 2,3,4 for Discovery HD. Each channel would have to also have a switch node containing the 'payload.description.summary' = 'discovery hd', or maybe a mega-function node? Hmm. Good luck.