hardillb / node-red-alexa-home-skill-web

Apache License 2.0
45 stars 28 forks source link

Full Echo data structure in msg.extraInfo? #103

Closed stefanis closed 4 years ago

stefanis commented 4 years ago

Since I am a sponsor, and American, I feel entitled to make demands... err requests. :) I hate Lambda, so when I write my own skills for, personal use, I host them on my own site. When I do that, the message that comes in contains the ID of the device that was used to invoke the skill. If you know the IDs of your devices, then you can use that ID to figure out the location of the invocation. For example: If I created a target called "my lights" then I could switch on the invoking device to figure out that "my" means bedroom, kitchen, living room, toilet, etc. based on the ID of the echo device that heard the command. It would be nice if the the full Echo data structure was available in the msg.extraInfo, assuming that is possible. It would then be possible to create a flow that performs different operations based on the ID of the Echo device that triggered it.

Bra1nK commented 4 years ago

I too would welcome this, didn't even know it was possible

hardillb commented 4 years ago

You shouldn't need that information for most things. As long as you have set up rooms and added the Echo device to that room in the Alexa app it should automatically match "Alexa, turn on the lights" to any device tagged as a light in that room.

But for anything else I'm sorry, but it's just not going to happen.

Firstly, this skill is based on the old v2 Smart Home Skill API . v2 API doesn't have any information about the source device passed to the lambda. I can't even find the device id in the current v3 Smart Home Skill API doc (Amazon seam to have now removed/hidden the v2 doc).

And unless I've missed a major change somewhere, Smart Home Skills must use a lambda, you can't self host them.

Secondly, I don't have the time or the inclination ( I do still have 2 echo devices in the house but I use Google Home for everything) to rewrite this from the ground up using the V3 API even if it did supply this information (and work out how to maintain backwards compatibility with already deployed flows).

The skill works but it's basically in ongoing maintenance mode, I'll fix things if it breaks and stand it up when it falls over, but it's not getting any new features.

stefanis commented 4 years ago

Yes, you have to use Lambda, which is the reason I don’t write my own smart home skills. Actually that’s not true, I just don’t want to have to say “Alexa, tell the house turn on the lights” But using your skill lets me leave that “tell the house” bit out, so I like it more. I had no idea about room tagging. I’ll have to check that out. Sorry to hear you are not actively developing this skill. I’ll still keep supporting you though in case you change your mind. J

From: Ben Hardill [mailto:notifications@github.com] Sent: Tuesday, June 16, 2020 9:09 AM To: hardillb/node-red-alexa-home-skill-web Cc: Nick Stefanisko; Author Subject: Re: [hardillb/node-red-alexa-home-skill-web] Full Echo data structure in msg.extraInfo? (#103)

You shouldn't need that information for most things. As long as you have set up rooms and added the Echo device to that room in the Alexa app it should automatically match "Alexa, turn on the lights" to any device tagged as a light in that room.

But for anything else I'm sorry, but it's just not going to happen.

Firstly, this skill is based on the old v2 Smart Home Skill API . v2 API doesn't have any information about the source device passed to the lambda. I can't even find the device id in the current v3 Smart Home Skill API doc https://developer.amazon.com/en-US/docs/alexa/smarthome/understand-the-smart-home-skill-api.html (Amazon seam to have now removed/hidden the v2 doc).

And unless I've missed a major change somewhere, Smart Home Skills must use a lambda, you can't self host them.

Secondly, I don't have the time or the inclination ( I do still have 2 echo devices in the house but I use Google Home for everything) to rewrite this from the ground up using the V3 API even if it did supply this information (and work out how to maintain backwards compatibility with already deployed flows).

The skill works but it's basically in ongoing maintenance mode, I'll fix things if it breaks and stand it up when it falls over, but it's not getting any new features.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/hardillb/node-red-alexa-home-skill-web/issues/103#issuecomment-644861235 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ACDKBDLPIA6CKHUEKSLYFVDRW6KLHANCNFSM4N7XVJMQ .Image removed by sender.

stefanis commented 4 years ago

Turns out it isn’t possible. The IDs that I get on a self hosted skill are not transmitted to the Lambda function. So that was a dead end. But Ben mentioned that the new Groups feature will allow you to say “turn of the lights” and it should turn off all lights in the group. I’m not able to make this work because all of my lights have the word “lights” in their name. So when I do it, Alexa asks me, “A few thing share the name lights, which one did you want?” I suspect that if I remove the word “lights” from the name, it may work. I’ll have to try it this weekend.

From: Brian Kelly [mailto:notifications@github.com] Sent: Tuesday, June 16, 2020 8:58 AM To: hardillb/node-red-alexa-home-skill-web Cc: Nick Stefanisko; Author Subject: Re: [hardillb/node-red-alexa-home-skill-web] Full Echo data structure in msg.extraInfo? (#103)

I too would welcome this, didn't even know it was possible

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/hardillb/node-red-alexa-home-skill-web/issues/103#issuecomment-644854688 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ACDKBDMIRBTW5BJ4EE26ZFTRW6JA7ANCNFSM4N7XVJMQ .Image removed by sender.

NorthernMan54 commented 4 years ago

Nick,

In my setup I create a single light in node-red and pass to Alexa to put in the group. Then I use that light turning on or off to control all the lights in the room with Alexa.

Works pretty good, and gets around the naming issue.

On Jun 16, 2020, at 4:03 PM, Nick Stefanisko notifications@github.com wrote:

 Turns out it isn’t possible. The IDs that I get on a self hosted skill are not transmitted to the Lambda function. So that was a dead end. But Ben mentioned that the new Groups feature will allow you to say “turn of the lights” and it should turn off all lights in the group. I’m not able to make this work because all of my lights have the word “lights” in their name. So when I do it, Alexa asks me, “A few thing share the name lights, which one did you want?” I suspect that if I remove the word “lights” from the name, it may work. I’ll have to try it this weekend.

From: Brian Kelly [mailto:notifications@github.com] Sent: Tuesday, June 16, 2020 8:58 AM To: hardillb/node-red-alexa-home-skill-web Cc: Nick Stefanisko; Author Subject: Re: [hardillb/node-red-alexa-home-skill-web] Full Echo data structure in msg.extraInfo? (#103)

I too would welcome this, didn't even know it was possible

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/hardillb/node-red-alexa-home-skill-web/issues/103#issuecomment-644854688 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ACDKBDMIRBTW5BJ4EE26ZFTRW6JA7ANCNFSM4N7XVJMQ .Image removed by sender.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

stefanis commented 4 years ago

That’s basically what I am doing now. I’m using node-red to control SkyLink devices via their network hub. But it really can’t handle more than one web request at a time, very primitive. So I cannot use the macros that the Alexa app provides, so I just string them up serially in node-red. Works very well.

What I was looking to do is create a location aware invokation that would turn off the lights in the room I happen to be in based on which Echo device picks up the command. I set up the groups such that the bedroom Alexa and the bedroom lights are in a group, like Amazon’s directions say to do, but when I say, “Alexa, turn off the lights” it tells me that a few things share the name “lights” and asks which one I was talking about. Right, the living room lights are called “living room lights”. In fact all of my lights have the word “lights” in their names. So I’m wondering if I just remove the word “lights” from the name, probably have to rediscover, and then say “the lights”, will it pick up that I want to turn off all devices of class “light” in the group that the responding device is in? It’s really not a big deal, I’ve been doing it the old way for years, but my son is a mumbley teenager and he has to say the command to turn off his room’s lights several time because Alexa has trouble understanding him. Probably doesn’t help that his Dot is buried under a mound of sweat socks 99% of the time. But She has not problems understanding me. His name is Zak, and I call his lights “zacks lights” I’ve considered renaming them to “my lights” but any other name I can think of: “kids room lights”, “second bedroom lights”, “the F-ing lights” just doesn’t feel right to me.

From: Northern Man [mailto:notifications@github.com] Sent: Tuesday, June 16, 2020 1:36 PM To: hardillb/node-red-alexa-home-skill-web Cc: Nick Stefanisko; Author Subject: Re: [hardillb/node-red-alexa-home-skill-web] Full Echo data structure in msg.extraInfo? (#103)

Nick,

In my setup I create a single light in node-red and pass to Alexa to put in the group. Then I use that light turning on or off to control all the lights in the room with Alexa.

Works pretty good, and gets around the naming issue.

On Jun 16, 2020, at 4:03 PM, Nick Stefanisko notifications@github.com wrote:

 Turns out it isn’t possible. The IDs that I get on a self hosted skill are not transmitted to the Lambda function. So that was a dead end. But Ben mentioned that the new Groups feature will allow you to say “turn of the lights” and it should turn off all lights in the group. I’m not able to make this work because all of my lights have the word “lights” in their name. So when I do it, Alexa asks me, “A few thing share the name lights, which one did you want?” I suspect that if I remove the word “lights” from the name, it may work. I’ll have to try it this weekend.

From: Brian Kelly [mailto:notifications@github.com] Sent: Tuesday, June 16, 2020 8:58 AM To: hardillb/node-red-alexa-home-skill-web Cc: Nick Stefanisko; Author Subject: Re: [hardillb/node-red-alexa-home-skill-web] Full Echo data structure in msg.extraInfo? (#103)

I too would welcome this, didn't even know it was possible

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/hardillb/node-red-alexa-home-skill-web/issues/103#issuecomment-644854688 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ACDKBDMIRBTW5BJ4EE26ZFTRW6JA7ANCNFSM4N7XVJMQ .Image removed by sender.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/hardillb/node-red-alexa-home-skill-web/issues/103#issuecomment-644998223 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ACDKBDO5ZTT3CNOHG4WYRODRW7JURANCNFSM4N7XVJMQ .Image removed by sender.

Programie commented 1 year ago

Sorry for bringing up this old issue, but I have a question about exactly that:

Nick, In my setup I create a single light in node-red and pass to Alexa to put in the group. Then I use that light turning on or off to control all the lights in the room with Alexa. Works pretty good, and gets around the naming issue.

If I understand that correctly, it's possible to pass in the group/room name of the light?

For example, I have a single device in Node-RED and in Alexa and turning that on/off gives me the room/group of my Echo device? I.e. turning on the device in my living room contains "Living room" as group in the message? I haven't seen something in that node yet. How did you achieve that?