Thanks for the response! I can do everything down to the testing the sensor part already. I can have Alexa speak whatever phrase from whichever device I choose, including the one I speak too. I'm foggy on how to test the hubitat device nodes and route the appropriate response. I don't quite know how to create the if/then logic in NodeRED.
There are a couple of ways to do this including using joins etc.. Here is a very simple example using my office lights.. what this sequence does accumulate the status of each "on" light in a msg property called "status". "msg.topic" contains the name of the device.
The change node and switch node use JSONATA.. I put the expressions in the name so you can see them. You can add as many devices as you want..
payload.value = "on" ?
(status != "" ? status & " and " : "") & topic
: status
Note: both change nodes are the same - I did this so all you would have to do is copy/paste for each device you want to use..
EDIT Now that I've re-read your post, I see that I'm not picking up the output after the switch node like you are, where it seems you're checking for the existence of msg.status. I'm not sure what's going on in that switch statement so that's probably what I'm missing.
2nd EDIT I'm learning! It occurred to me that maybe I didn't understand exactly the output I was seeing in the debug log. With more than one door open, injecting a timestamp to give me the value of msg.status NOW, does indeed show me the accumulating string. So it was there, I just didn't know how to see it properly I'm assuming. I'm still tinkering with setting msg.status when no doors are open.
Thanks so much for the time and effort. I have no experience with jsonata, until now, so I've been reading up and I believe I understand the syntax and what the expression is doing each time a device changes. For some reason msg.status is not accumulating, just listing the current device that's open. I haven't been able to figure out what I've done wrong. Screenshots below. Secondly, when no door is open, msg.status is undefined. In your example, you seem to have msg.status set to "No lights are on" if all lights are off. How do you set that string as "default"? (all doors are closed in my case).



Success! This has been a great exercise for me. Thanks @erktrek for lighting the way. Here's the current flow that's working. I realized that you have to "restart the flow" to get the accumulated msg.status so I tied in the alexa listens event to refresh it everytime she's asked. I used a big switch statement to cobble together all the possible values of msg.status and then set a "cleaned up" response so she sounds more natural. There's probably a much better way to do that part, or you could just deal with the robotic speech and pass the variable untouched. If there's any hints or tips you have or anything you feel like I don't understand, please feel free. Thanks.
P.S DON'T use an ampersand in a string you're passing to alexa to speak. She doesn't like that and will go off about a Simon Says skill that she can't reach right now. Seriously don't do that.
Would you mind post your flow, I what to do this exact same thing.
TIA
Mike
Title - Ask Alexa which door is open (any device in any state)
Summary - This flow allows me to ask Alexa "Which door is open" and have her respond from the device I asked which door(s) if any, are open. This can be adapted to be any device in any state. I have inovelli red series dimmers and I use the LED notification bars for a number of things. Sometimes it isn't immediately obvious WHICH specific device is responsible for the notification. Occasionally, the LED bars don't update even though all devices are in the desired state, so I've added a virtual switch which clears the LED bar notifications, and if Alexa determines that all devices are as they should be, she clears the notification. Modules required are node-red-contrib-alexa-remote2-applestrudel and node-red-contrib-hubitat. Credit to @erktrek for the considerable assistance getting it running.
Picture -
Flow -
[{"id":"952642caef2d6e90","type":"tab","label":"Alexa, Which Door","disabled":false,"info":""},{"id":"8cb9b3df384674c9","type":"hubitat device","z":"952642caef2d6e90","deviceLabel":"Front Door Sensor","name":"Front Door","server":"e2175bd0.e82808","deviceId":"426","attribute":"contact","sendEvent":true,"x":230,"y":160,"wires":[["4ad8bb4b08215cc7"]]},{"id":"541561a97bb0c876","type":"hubitat device","z":"952642caef2d6e90","deviceLabel":"Back Door Sensor","name":"Back Door","server":"e2175bd0.e82808","deviceId":"425","attribute":"contact","sendEvent":true,"x":230,"y":260,"wires":[["8d51dd9d8fd6822e"]]},{"id":"38d018e25e193a15","type":"hubitat device","z":"952642caef2d6e90","deviceLabel":"Basement Patio Door Sensor","name":"Patio Door","server":"e2175bd0.e82808","deviceId":"427","attribute":"contact","sendEvent":true,"x":230,"y":360,"wires":[["09085daac7cdb883"]]},{"id":"4ad8bb4b08215cc7","type":"change","z":"952642caef2d6e90","name":"payload.value = \"open\" ?\\n \t(status != \"\" ? status & \" and \" : \"\") & topic\\n \t: status","rules":[{"t":"set","p":"status","pt":"msg","to":"payload.value = \"open\" ? \t(status != \"\" ? status & \" and \" : \"\") & topic \t: status","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":160,"wires":[["541561a97bb0c876"]]},{"id":"8d51dd9d8fd6822e","type":"change","z":"952642caef2d6e90","name":"payload.value = \"open\" ?\\n \t(status != \"\" ? status & \" and \" : \"\") & topic\\n \t: status","rules":[{"t":"set","p":"status","pt":"msg","to":"payload.value = \"open\" ? \t(status != \"\" ? status & \" and \" : \"\") & topic \t: status","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":260,"wires":[["38d018e25e193a15"]]},{"id":"09085daac7cdb883","type":"change","z":"952642caef2d6e90","name":"payload.value = \"open\" ?\\n \t(status != \"\" ? status & \" and \" : \"\") & topic\\n \t: status","rules":[{"t":"set","p":"status","pt":"msg","to":"payload.value = \"open\" ? \t(status != \"\" ? status & \" and \" : \"\") & topic \t: status","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":360,"wires":[["3c4e8d7e167fc4e7"]]},{"id":"3c4e8d7e167fc4e7","type":"switch","z":"952642caef2d6e90","name":"","property":"status","propertyType":"msg","rules":[{"t":"null"},{"t":"eq","v":"Front Door","vt":"str"},{"t":"eq","v":"Back Door","vt":"str"},{"t":"eq","v":"Patio Door","vt":"str"},{"t":"eq","v":"Front Door and Back Door","vt":"str"},{"t":"eq","v":"Back Door and Patio Door","vt":"str"},{"t":"eq","v":"Front Door and Patio Door","vt":"str"},{"t":"eq","v":"Front Door and Back Door and Patio Door","vt":"str"}],"checkall":"true","repair":false,"outputs":8,"x":830,"y":240,"wires":[["8aeda17b28698363"],["1d748c93a73f94b6"],["9e0fd186d72017dd"],["3c3425218d089803"],["0f443b74ab442cc8"],["48f4e9d11132e645"],["d252d69452406cd4"],["31479842620f44d9"]]},{"id":"8aeda17b28698363","type":"change","z":"952642caef2d6e90","name":"All Doors are Closed","rules":[{"t":"set","p":"textToSpeak","pt":"flow","to":"Hubitat reports all doors are closed","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1060,"y":120,"wires":[["1a6490052101ced6"]]},{"id":"08c88da7ed128ccd","type":"alexa-remote-event","z":"952642caef2d6e90","name":"","account":"55e8b5ec0dcbeaf2","event":"ws-device-activity","x":110,"y":60,"wires":[["90f5e787a1e3c4f2","8cb9b3df384674c9"]]},{"id":"90f5e787a1e3c4f2","type":"switch","z":"952642caef2d6e90","name":"Which Door is Open","property":"payload.description.summary","propertyType":"msg","rules":[{"t":"cont","v":"which door is open","vt":"str"},{"t":"cont","v":"is there a door open","vt":"str"},{"t":"cont","v":"what door is open","vt":"str"},{"t":"cont","v":"are all the doors closed","vt":"str"},{"t":"cont","v":"are there any doors open","vt":"str"},{"t":"cont","v":"which doors are open","vt":"str"},{"t":"cont","v":"which doors open","vt":"str"}],"checkall":"false","repair":false,"outputs":7,"x":420,"y":60,"wires":[["e02462808a329271"],["e02462808a329271"],["e02462808a329271"],["e02462808a329271"],["e02462808a329271"],["e02462808a329271"],["e02462808a329271"]]},{"id":"ce026cb65621cfa0","type":"alexa-remote-routine","z":"952642caef2d6e90","name":"","account":"55e8b5ec0dcbeaf2","routineNode":{"type":"speak","payload":{"type":"regular","text":{"type":"flow","value":"textToSpeak"},"devices":{"type":"flow","value":"device"}}},"x":880,"y":60,"wires":[[]]},{"id":"e02462808a329271","type":"change","z":"952642caef2d6e90","name":"","rules":[{"t":"set","p":"device","pt":"flow","to":"payload.deviceSerialNumber","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":680,"y":60,"wires":[["ce026cb65621cfa0"]]},{"id":"1d748c93a73f94b6","type":"change","z":"952642caef2d6e90","name":"The Front Door is Open","rules":[{"t":"set","p":"textToSpeak","pt":"flow","to":"The Front Door Is Open","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1070,"y":160,"wires":[[]]},{"id":"9e0fd186d72017dd","type":"change","z":"952642caef2d6e90","name":"The Back Door is Open","rules":[{"t":"set","p":"textToSpeak","pt":"flow","to":"The Back Door Is Open","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1070,"y":200,"wires":[[]]},{"id":"3c3425218d089803","type":"change","z":"952642caef2d6e90","name":"The Patio Door is Open","rules":[{"t":"set","p":"textToSpeak","pt":"flow","to":"The Patio Door Is Open","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1070,"y":240,"wires":[[]]},{"id":"0f443b74ab442cc8","type":"change","z":"952642caef2d6e90","name":"The Front Door and Back Door are both Open","rules":[{"t":"set","p":"textToSpeak","pt":"flow","to":"The Front Door and Back Door are both Open","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1140,"y":280,"wires":[[]]},{"id":"48f4e9d11132e645","type":"change","z":"952642caef2d6e90","name":"The Back Door and Patio Door are both Open","rules":[{"t":"set","p":"textToSpeak","pt":"flow","to":"The Back Door and Patio Door are both Open","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1140,"y":320,"wires":[[]]},{"id":"31479842620f44d9","type":"change","z":"952642caef2d6e90","name":"All doors are open. I've checked twice.","rules":[{"t":"set","p":"textToSpeak","pt":"flow","to":"All doors are open. I've checked twice.","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1110,"y":400,"wires":[[]]},{"id":"d252d69452406cd4","type":"change","z":"952642caef2d6e90","name":"The Front Door and Patio Door are both Open","rules":[{"t":"set","p":"textToSpeak","pt":"flow","to":"The Front Door and Patio Door are both Open","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1140,"y":360,"wires":[[]]},{"id":"1a6490052101ced6","type":"hubitat command","z":"952642caef2d6e90","deviceLabel":"vsClearSwitchNotifications","name":"","server":"e2175bd0.e82808","deviceId":"674","command":"on","commandArgs":"","x":1340,"y":120,"wires":[[]]},{"id":"e2175bd0.e82808","type":"hubitat config","name":"HUBITAT HUB","usetls":false,"host":"192.168.19.8","port":"80","appId":"48","nodeRedServer":"http://192.168.19.7:1880","webhookPath":"/hubitat/webhook","autoRefresh":false,"useWebsocket":false,"colorEnabled":false,"color":"#000000"},{"id":"55e8b5ec0dcbeaf2","type":"alexa-remote-account","name":"","authMethod":"proxy","proxyOwnIp":"192.168.19.7","proxyPort":"3456","cookieFile":"authFile","refreshInterval":"3","alexaServiceHost":"pitangui.amazon.com","amazonPage":"amazon.com","acceptLanguage":"en-US","onKeywordInLanguage":"on","userAgent":"","useWsMqtt":"on","autoInit":"on"}]
Thanks, I'm still learning NR so this will help
Help!
I trying to duplicate this rule form HE in NR. I've tried a combination of switch, change, Boolean, etc. and just can't seem to get it to work.
Here's essentially what I'm trying to achieve.
[{"id":"0258e697074ba84e","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"799a401b17e58b93","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vSwitch","name":"","server":"de459b47a8a34d86","deviceId":"2807","attribute":"switch","sendEvent":true,"x":113,"y":81,"wires":[["4e2de370f6cbe274"]]},{"id":"4e2de370f6cbe274","type":"change","z":"0258e697074ba84e","name":"Switch to Bool","rules":[{"t":"change","p":"payload.value","pt":"msg","from":"on","fromt":"str","to":"true","tot":"str"},{"t":"change","p":"payload.value","pt":"msg","from":"off","fromt":"str","to":"false","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":313,"y":81,"wires":[["a8a65d29b0d59e85"]]},{"id":"a8a65d29b0d59e85","type":"BooleanLogicUltimate","z":"0258e697074ba84e","name":"","filtertrue":"both","persist":true,"sInitializeWith":"WaitForPayload","triggertopic":"trigger","outputtriggeredby":"all","inputCount":"3","topic":"result","restrictinputevaluation":true,"x":553,"y":121,"wires":[[],[],[]]},{"id":"d7fd5153089b0239","type":"change","z":"0258e697074ba84e","name":"Door to Bool","rules":[{"t":"change","p":"payload","pt":"msg","from":"closed","fromt":"str","to":"false","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"open","fromt":"str","to":"true","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":293,"y":141,"wires":[["a8a65d29b0d59e85"]]},{"id":"c38947ebd78f9b03","type":"change","z":"0258e697074ba84e","name":"Door to Bool","rules":[{"t":"change","p":"payload.value","pt":"msg","from":"closed","fromt":"str","to":"false","tot":"str"},{"t":"change","p":"payload.value","pt":"msg","from":"open","fromt":"str","to":"true","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":293,"y":201,"wires":[["a8a65d29b0d59e85"]]},{"id":"d4c35c5c19ea7218","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vDoor 1","name":"","server":"de459b47a8a34d86","deviceId":"3001","attribute":"contact","sendEvent":true,"x":113,"y":141,"wires":[["d7fd5153089b0239"]]},{"id":"6b3595f5b4edbad8","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vDoor 2","name":"","server":"de459b47a8a34d86","deviceId":"3002","attribute":"contact","sendEvent":true,"x":113,"y":201,"wires":[["c38947ebd78f9b03"]]},{"id":"de459b47a8a34d86","type":"hubitat config","name":"TheNutHouse Hubitat","usetls":false,"host":"0.0.0.0","port":"80","appId":"2798","nodeRedServer":"http://0.0.0.0:1880","webhookPath":"/hubitat/webhook","autoRefresh":true,"useWebsocket":false,"colorEnabled":false,"color":"#ace043"}]
Ok now I understand what I was seeing when I saw flows constructed like this.
However its not quite what I need.
The HE original rule is triggered by either motion sensors or contact sensors and any of the doors being open or switch on prevents the action from running.
The example you posted is cumulative and only works if all three conditions are closed/off.
I need any open or on. That's why I was pursuing the logic route.
Thanks for the first ah-ha.
Sorry realized there was a bigger issue so had to delete my prior post.. I think this is what you want:
The main issue you have is the Boolean Node expects "msg.payload" to be true or false NOT "msg.payload.value" - you are currently passing "msg.payload" as a JSON object NOT a boolean value. The above uses JSONATA to return a true/false based on whether the payload.value = "on" or not. You will need to modify the other change nodes to do something similar and test for "open" instead of "on".
edit: for extra efficiency and fun (and who doesn't want that?? ) simply modifying the JSONATA change node expression to use an "OR" means you can run everything through a single change node like this:
Maybe a full explanation of what I want to accomplish. Here's the full rule.
There are motion sensors in the garage/shed and contact sensor on man door and garage doors. Plus I have another shed with a contact sensor on the door and an interior motion sensor.
I use a 24/7 rule to alert me (notify, alexa speaks & pushover) if any motion or door open/close. But the alert only occurs if the house doors are closed and a virtual switch is off. If I'm working outside one or both of the doors are open or I turn on the virtual switch.
Based on your rule, I do not see the need to use a Boolean logic node. You need three switch nodes in a row to test whether:
- Basement Door is closed
- Back Door is closed
- Work Outside is off
The device nodes that preface these switch nodes should not have "Send Events" checked.
The sequence would be triggered by any of the device nodes you have listed (Back Shed Door, Garage Door Left, etc) going through a single switch node which tests for the value of msg.payload.value being either open or active. Note that these device nodes should have "Send Events" checked.
The other thing to do to make things easier is to use the "Zone Motion Controllers" app in HE and create a virtual motion device of all your motion sensors which you can expose to Node-RED. That way it's only one device to test.
Like this?
[{"id":"0258e697074ba84e","type":"tab","label":"Intrusion Test","disabled":false,"info":"","env":[]},{"id":"799a401b17e58b93","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vSwitch","name":"","server":"de459b47a8a34d86","deviceId":"2807","attribute":"switch","sendEvent":false,"x":460,"y":220,"wires":[["63db66ed99e5ab7a"]]},{"id":"d4c35c5c19ea7218","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vDoor 1","name":"","server":"de459b47a8a34d86","deviceId":"3001","attribute":"contact","sendEvent":false,"x":460,"y":60,"wires":[["c23cd0c5c4d6eb91"]]},{"id":"6b3595f5b4edbad8","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vDoor 2","name":"","server":"de459b47a8a34d86","deviceId":"3002","attribute":"contact","sendEvent":false,"x":460,"y":140,"wires":[["38a7d0e6798ba0cb"]]},{"id":"63db66ed99e5ab7a","type":"switch","z":"0258e697074ba84e","name":"on/off","property":"payload.value","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":617,"y":219,"wires":[[],["85a0974606184f94"]]},{"id":"c23cd0c5c4d6eb91","type":"switch","z":"0258e697074ba84e","name":"open/closed","property":"payload.value","propertyType":"msg","rules":[{"t":"eq","v":"open","vt":"str"},{"t":"eq","v":"closed","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":637,"y":59,"wires":[[],["6b3595f5b4edbad8"]]},{"id":"38a7d0e6798ba0cb","type":"switch","z":"0258e697074ba84e","name":"open/closed","property":"payload.value","propertyType":"msg","rules":[{"t":"eq","v":"open","vt":"str"},{"t":"eq","v":"closed","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":637,"y":139,"wires":[[],["799a401b17e58b93"]]},{"id":"85a0974606184f94","type":"debug","z":"0258e697074ba84e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":900,"y":220,"wires":[]},{"id":"dc090561bb819dcf","type":"inject","z":"0258e697074ba84e","name":"Motion garage active","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"name\":\"motion\",\"value\":\"active\",\"displayName\":\"Motion Garage\",\"deviceId\":\"855\",\"descriptionText\":\"Motion Garage is active\",\"unit\":null,\"type\":null,\"data\":null,\"currentValue\":\"active\",\"dataType\":\"ENUM\",\"values\":[\"inactive\",\"active\"]}","payloadType":"json","x":270,"y":60,"wires":[["d4c35c5c19ea7218"]]},{"id":"de459b47a8a34d86","type":"hubitat config","name":"TheNutHouse Hubitat","usetls":false,"host":"192.168.0.199","port":"80","appId":"2798","nodeRedServer":"http://192.168.0.16:1880","webhookPath":"/hubitat/webhook","autoRefresh":true,"useWebsocket":false,"colorEnabled":false,"color":"#ace043"}]
Yup - Exactly!
Just want to mention your switch nodes don't even have to test for the open/on condition.
The switch node for the triggering devices (contact and motion sensors) could look like this, making use of regex to match either contact open or motion active. So you can use a single switch node that all the devices feed into.
Unlike the conditional devices that you've shown above where each device needs its own switch node.
Thank you. @aaiyar
Just caught a error in the regex, and not because I'm a regex expert. Should look like this, otherwise the switch node passes "inactive" events as well.
Now to the second half, sending the triggering device info to Alexa and pushover.
[{"id":"0258e697074ba84e","type":"tab","label":"Intrusion Test","disabled":false,"info":"","env":[]},{"id":"799a401b17e58b93","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vWorkSwitch","name":"","server":"de459b47a8a34d86","deviceId":"2807","attribute":"switch","sendEvent":false,"x":550,"y":180,"wires":[["63db66ed99e5ab7a"]]},{"id":"d4c35c5c19ea7218","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vHouseDoor1","name":"","server":"de459b47a8a34d86","deviceId":"3001","attribute":"contact","sendEvent":false,"x":560,"y":60,"wires":[["c23cd0c5c4d6eb91"]]},{"id":"6b3595f5b4edbad8","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vHouseDoor2","name":"","server":"de459b47a8a34d86","deviceId":"3002","attribute":"contact","sendEvent":false,"x":560,"y":120,"wires":[["38a7d0e6798ba0cb"]]},{"id":"63db66ed99e5ab7a","type":"switch","z":"0258e697074ba84e","name":"on/off","property":"payload.value","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":710,"y":180,"wires":[[],["85a0974606184f94"]]},{"id":"c23cd0c5c4d6eb91","type":"switch","z":"0258e697074ba84e","name":"open/closed","property":"payload.value","propertyType":"msg","rules":[{"t":"eq","v":"open","vt":"str"},{"t":"eq","v":"closed","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":730,"y":60,"wires":[[],["6b3595f5b4edbad8"]]},{"id":"38a7d0e6798ba0cb","type":"switch","z":"0258e697074ba84e","name":"open/closed","property":"payload.value","propertyType":"msg","rules":[{"t":"eq","v":"open","vt":"str"},{"t":"eq","v":"closed","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":730,"y":120,"wires":[[],["799a401b17e58b93"]]},{"id":"85a0974606184f94","type":"debug","z":"0258e697074ba84e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":970,"y":180,"wires":[]},{"id":"57281ae700cb271b","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vShedDoor","name":"","server":"de459b47a8a34d86","deviceId":"3004","attribute":"contact","sendEvent":true,"x":110,"y":120,"wires":[["79ddba60da6e7785"]]},{"id":"36acaa94458f75c0","type":"hubitat device","z":"0258e697074ba84e","deviceLabel":"vMotion1","name":"","server":"de459b47a8a34d86","deviceId":"3003","attribute":"motion","sendEvent":true,"x":100,"y":180,"wires":[["79ddba60da6e7785"]]},{"id":"79ddba60da6e7785","type":"switch","z":"0258e697074ba84e","name":"","property":"payload.value","propertyType":"msg","rules":[{"t":"regex","v":"open|\\bactive\\b","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":1,"x":300,"y":160,"wires":[["d4c35c5c19ea7218"]]},{"id":"de459b47a8a34d86","type":"hubitat config","name":"TheNutHouse Hubitat","usetls":false,"host":"192.168.0.199","port":"80","appId":"2798","nodeRedServer":"http://192.168.0.16:1880","webhookPath":"/hubitat/webhook","autoRefresh":true,"useWebsocket":false,"colorEnabled":false,"color":"#ace043"}]
You might leave that pic up to give others some ideas...
Pushover and Alexa...
I don't have experience with pushover but I do with Alexa..