Ik zit sinds een paar dagen te stoeien met HA en Node-Red en wil nu de tuinlampen en de portiek lamp aan en uit laten gaan op basis van een sunevent (https://flows.nodered.org/node/node-red-contrib-sunevents).
Wat ik wil is bij het sunevent dusk dat de lamp aan gaat. Voor zover ik weet heeft een lamp de payload on nodig om aan te gaan. Dus op basis van deze aanname heb ik gebouwd.
Hieronder een voorbeeld van de flow zoals ik het nu zelf opgelost heb, maar vraag me af of het niet makkelijker kan.
De flow heeft 2 inject nodes, zodat de sunevent node elke dag getriggerd wordt (werd geadviseerd in de documentatie). Vervolgens wordt er dan een GPS lokatie in de sunevent node geduwd.
De node sunevent heeft als payload een object met 4 properties: msg.payload.latitude, msg.payload.longitude, msg.payload.sunevent en msg.payload.datetime. Omdat ik alleen geinteresseerd ben in msg.payload.sunevent verwijder ik in een change node eerst de andere 3. Dan gaat de gestripte payload naar een JSON node om het om te zetten in een string, dan weer een change node om de string "sunevent":""dusk" om te zetten naar on.
Is er wellicht ook een makkelijkere manier om dit te doen? Waarschijnlijk met function nodes, maar ik kan niet echt coderen
. Trouwens de sunevent node blijft bij ieder sunevent deze posten en gaat dan onveranderd door naar de switch node als tekst string ipv on omdat deze niet omgezet wordt als de string iets anders is dan sunevent":""dusk". Ik heb nog niet getest wat voor invloed dat dan op een lamp heeft bijv.
Tips zijn welkom!
Wat ik wil is bij het sunevent dusk dat de lamp aan gaat. Voor zover ik weet heeft een lamp de payload on nodig om aan te gaan. Dus op basis van deze aanname heb ik gebouwd.
Hieronder een voorbeeld van de flow zoals ik het nu zelf opgelost heb, maar vraag me af of het niet makkelijker kan.
De flow heeft 2 inject nodes, zodat de sunevent node elke dag getriggerd wordt (werd geadviseerd in de documentatie). Vervolgens wordt er dan een GPS lokatie in de sunevent node geduwd.
De node sunevent heeft als payload een object met 4 properties: msg.payload.latitude, msg.payload.longitude, msg.payload.sunevent en msg.payload.datetime. Omdat ik alleen geinteresseerd ben in msg.payload.sunevent verwijder ik in een change node eerst de andere 3. Dan gaat de gestripte payload naar een JSON node om het om te zetten in een string, dan weer een change node om de string "sunevent":""dusk" om te zetten naar on.
Is er wellicht ook een makkelijkere manier om dit te doen? Waarschijnlijk met function nodes, maar ik kan niet echt coderen
Tips zijn welkom!
code:
1
| [{"id":"32cb8da3.eeffc2","type":"tab","label":"Sun Events simple example","disabled":false,"info":""},{"id":"2d8758dc.922e08","type":"inject","z":"32cb8da3.eeffc2","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payloadType":"str","x":110,"y":120,"wires":[["58c171f7.59b7a"]]},{"id":"ae9be1e3.2e7ab","type":"sun events","z":"32cb8da3.eeffc2","testmode":true,"verbose":true,"topic":"sunset","name":"","x":590,"y":180,"wires":[["7c3cf0a444bb5631"],[]]},{"id":"58c171f7.59b7a","type":"change","z":"32cb8da3.eeffc2","name":"set GPS coordinates (change node) ","rules":[{"t":"set","p":"payload.latitude","pt":"msg","to":"52.702521","tot":"num"},{"t":"set","p":"payload.longitude","pt":"msg","to":"3.188700","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":180,"wires":[["ae9be1e3.2e7ab"]]},{"id":"c0aa61b0.223ae","type":"inject","z":"32cb8da3.eeffc2","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 12 * * *","once":false,"onceDelay":0.1,"topic":"","payloadType":"str","x":110,"y":240,"wires":[["58c171f7.59b7a"]]},{"id":"448101bf3080f56a","type":"debug","z":"32cb8da3.eeffc2","name":"debug 7","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":840,"y":280,"wires":[]},{"id":"7c3cf0a444bb5631","type":"change","z":"32cb8da3.eeffc2","name":"","rules":[{"t":"delete","p":"payload.latitude","pt":"msg"},{"t":"delete","p":"payload.longitude","pt":"msg"},{"t":"delete","p":"payload.datetime","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":600,"y":380,"wires":[["cf8e5d92f04a1243"]]},{"id":"cf8e5d92f04a1243","type":"json","z":"32cb8da3.eeffc2","name":"","property":"payload","action":"","pretty":false,"x":610,"y":480,"wires":[["a5ea0f971b1aad50"]]},{"id":"a5ea0f971b1aad50","type":"change","z":"32cb8da3.eeffc2","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"{\"sunevent\":\"dusk\"}","fromt":"str","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":480,"wires":[["448101bf3080f56a"]]}] |