[gelöst - update] Smart Gardena Flow

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

Antworten
chrimu
Beiträge: 119
Registriert: 18.08.2012, 17:10
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal

[gelöst - update] Smart Gardena Flow

Beitrag von chrimu » 20.05.2020, 00:26

Hallo,

Hat von Euch noch oder schon jemand diesen etwas älteren Gardena flow in Betrieb: https://github.com/FrodoVDR/node-red-gardena-sileno ?

Ich habe ihn soweit zum laufen gebracht, jedoch fehlt mir dir Bewässerungssteuerung (einzel-Bewässerungscomputer). Hat das jemand, und wäre bereit zu teilen?
Oder kennt jemand einen neueren flow/node (es gibt ja eine neuere API Version), der das beinhaltet?

Bin dankbar für jeden Tipp!
Gruss, C.
Zuletzt geändert von chrimu am 07.03.2022, 02:10, insgesamt 2-mal geändert.

chrimu
Beiträge: 119
Registriert: 18.08.2012, 17:10
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal

Re: Smart Gardena Flow oder Node

Beitrag von chrimu » 23.05.2020, 17:19

Nicht alle auf einmal!!! :P

Niemand mit Gardena-Smart & Node-Red?

Fonzo
Beiträge: 6722
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 479 Mal

Re: Smart Gardena Flow oder Node

Beitrag von Fonzo » 23.05.2020, 17:34

chrimu hat geschrieben:
23.05.2020, 17:19
Niemand mit Gardena-Smart & Node-Red?
Wenn Du nur was schalten willst kannst Du ja was an IFTTT schicken aus Node Red. Wenn Du auch Werte abfragen willst brauchst Du eine zertifizierte Cloudanbindung und Authentifizierung über OAuth, keine Ahnung ob und wie das mit Node Red geht, gibt ja meines Wissens nach keinen Clouddienst bei Node Red und damit auch keine feste Redirect URL für OAuth 2 Authentifizierung.

chrimu
Beiträge: 119
Registriert: 18.08.2012, 17:10
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal

Re: Smart Gardena Flow oder Node

Beitrag von chrimu » 24.05.2020, 18:12

Dank'Dir. Das Problem ist, dass wenn man sich Sensordaten über den oben verlinkten flow liefern lässt, sich die API Benutzung durch IFTTT nicht mehr sicherstellen lässt: Man wird täglich disconnected (zuviele Verbundungsaufbaue). Ausserdem noch 'ne App...

Ich hab's dann halt doch als ziemlicher Node-Red-Anfänger nach langem Try&Error noch soweit hingebracht. Ganz aus- und durchgetestet ist es noch nicht, aber die wesentlichen Funktionen laufen schon mal geschmeidig. Indertat war die "node-red-contrib-oauth2" super-hilfreich, händisch wäre eine Authentifizierung für mich nicht zu bewältigen gewesen.
NRFgardena.gif
Ich hab den flow mal angehängt, Verbesserungen wären sehr erwünscht - Insbesondere die Nutzung des Websockets, den ich irgendwie einfach nicht hinbringe. So ist man von Gardena derzeit auf mindestens 15min Updatefrequenz limitiert (3000/monat)

Code: Alles auswählen

[{"id":"f91bcc92.a35bc","type":"tab","label":"CM Gardena Flow","disabled":false,"info":""},{"id":"341d2921.2167c6","type":"inject","z":"f91bcc92.a35bc","name":"GardenaRefresh15min","topic":"","payload":"","payloadType":"date","repeat":"900","crontab":"","once":true,"onceDelay":0.1,"x":150,"y":40,"wires":[["29b47d4e.9e9d22","eabfca9.2e4cd38"]]},{"id":"a786ccc7.ebf8e","type":"debug","z":"f91bcc92.a35bc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1050,"y":40,"wires":[]},{"id":"29b47d4e.9e9d22","type":"oauth2","z":"f91bcc92.a35bc","name":"GardenaOAuth","container":"payload","access_token_url":"https://api.authentication.husqvarnagroup.dev/v1/oauth2/token","grant_type":"password","username":"name@email.xx","password":"secret","client_id":"app-id--by--gardena-xxxx-xxxxx-xxxx","client_secret":"very stronggardenaprovidedappsecret","scope":"","x":380,"y":40,"wires":[["a786ccc7.ebf8e","6654c82a.d99fe8"]]},{"id":"6654c82a.d99fe8","type":"function","z":"f91bcc92.a35bc","name":"GetLocation","func":"global.set(\"access_token\", msg.payload[\"oauth2Response\"][\"body\"][\"access_token\"]);\n\nvar mytoken = global.get(\"access_token\"); \n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\nreturn msg;","outputs":1,"noerr":0,"x":590,"y":120,"wires":[["e6eb5247.395a4"]]},{"id":"e6eb5247.395a4","type":"http request","z":"f91bcc92.a35bc","name":"","method":"GET","ret":"obj","paytoqs":false,"url":"https://api.smart.gardena.dev/v1/locations","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":120,"wires":[["b7b1dc87.ae493","c7da54b6.ffc078","f5ff86dd.d2eb08"]]},{"id":"b7b1dc87.ae493","type":"debug","z":"f91bcc92.a35bc","name":"","active":true,"console":"false","complete":"false","x":1050,"y":120,"wires":[]},{"id":"f5ff86dd.d2eb08","type":"function","z":"f91bcc92.a35bc","name":"GetSocketUrl","func":"global.set(\"location\", msg.payload[\"data\"][0][\"id\"]);\n\nvar mylocation = global.get(\"location\");\nvar mytoken = global.get(\"access_token\"); \n\nmsg.payload = {\n    \"data\": {\n    \"id\": \"request-1\",\n    \"type\": \"WEBSOCKET\",\n    \"attributes\": {\n      \"locationId\": mylocation\n      }\n  }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\nreturn msg;","outputs":1,"noerr":0,"x":650,"y":80,"wires":[["83116225.cf7b"]]},{"id":"83116225.cf7b","type":"http request","z":"f91bcc92.a35bc","name":"","method":"POST","ret":"obj","paytoqs":false,"url":"https://api.smart.gardena.dev/v1/websocket","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":80,"wires":[["1bc69559.a67e5b"]]},{"id":"1bc69559.a67e5b","type":"debug","z":"f91bcc92.a35bc","name":"","active":true,"console":"false","complete":"false","x":1050,"y":80,"wires":[]},{"id":"c7da54b6.ffc078","type":"function","z":"f91bcc92.a35bc","name":"GetServiceIDs","func":"global.set(\"location\", msg.payload[\"data\"][0][\"id\"]);\n\nvar mylocation = global.get(\"location\");\nvar mytoken = global.get(\"access_token\"); \n\nmsg.payload = {\n    \"data\": {\n    \"id\": \"request-1\",\n    \"type\": \"WEBSOCKET\",\n    \"attributes\": {\n      \"locationId\": mylocation\n    }\n  }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/locations/\"+mylocation;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":660,"y":160,"wires":[["12771770.854aa9"]]},{"id":"12771770.854aa9","type":"http request","z":"f91bcc92.a35bc","name":"","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":160,"wires":[["148d9b42.a8eea5","f5c40b57.89dd28","11a19961.0d4a67","a2af8d66.bcc0c","e359b319.18848","4e69dd89.52ceb4","2e863070.f6fea"]]},{"id":"148d9b42.a8eea5","type":"debug","z":"f91bcc92.a35bc","name":"","active":true,"console":"false","complete":"false","x":1050,"y":160,"wires":[]},{"id":"6a3c2cc5.fe0194","type":"ccu-sysvar","z":"f91bcc92.a35bc","name":"Bodenfeuchte","ccuConfig":"b66dd3a1.5ff8e","topic":"ReGaHSS/${Name}","change":false,"cache":false,"x":1060,"y":260,"wires":[[]]},{"id":"f5c40b57.89dd28","type":"change","z":"f91bcc92.a35bc","name":"Extract State","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"included\"][4][\"attributes\"][\"soilHumidity\"].value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":260,"wires":[["6a3c2cc5.fe0194"]]},{"id":"2f77e676.82ed8a","type":"ccu-sysvar","z":"f91bcc92.a35bc","name":"BodenBeleuStaerke","ccuConfig":"b66dd3a1.5ff8e","topic":"ReGaHSS/${Name}","change":false,"cache":false,"x":1080,"y":300,"wires":[[]]},{"id":"11a19961.0d4a67","type":"change","z":"f91bcc92.a35bc","name":"Extract State","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"included\"][4][\"attributes\"][\"lightIntensity\"].value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":300,"wires":[["2f77e676.82ed8a"]]},{"id":"8756f8af.3efed8","type":"ccu-sysvar","z":"f91bcc92.a35bc","name":"Bodentemperatur","ccuConfig":"b66dd3a1.5ff8e","topic":"ReGaHSS/${Name}","change":false,"cache":false,"x":1070,"y":340,"wires":[[]]},{"id":"a2af8d66.bcc0c","type":"change","z":"f91bcc92.a35bc","name":"Extract State","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"included\"][4][\"attributes\"][\"soilTemperature\"].value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":340,"wires":[["8756f8af.3efed8"]]},{"id":"b3ca3d26.c40fd","type":"ccu-sysvar","z":"f91bcc92.a35bc","name":"MaeherStatus","ccuConfig":"b66dd3a1.5ff8e","topic":"ReGaHSS/${Name}","change":false,"cache":false,"x":600,"y":260,"wires":[[]]},{"id":"e359b319.18848","type":"change","z":"f91bcc92.a35bc","name":"Extract State","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"included\"][9][\"attributes\"][\"activity\"].value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":260,"wires":[["b3ca3d26.c40fd"]]},{"id":"9ee50a02.b5fab8","type":"ccu-sysvar","z":"f91bcc92.a35bc","name":"BewaessStatusHI","ccuConfig":"b66dd3a1.5ff8e","topic":"ReGaHSS/${Name}","change":false,"cache":false,"x":610,"y":300,"wires":[[]]},{"id":"4e69dd89.52ceb4","type":"change","z":"f91bcc92.a35bc","name":"Extract State","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"included\"][12][\"attributes\"][\"activity\"].value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":300,"wires":[["9ee50a02.b5fab8"]]},{"id":"b693a721.122808","type":"ccu-sysvar","z":"f91bcc92.a35bc","name":"BewaessStatusVO","ccuConfig":"b66dd3a1.5ff8e","topic":"ReGaHSS/${Name}","change":false,"cache":false,"x":610,"y":340,"wires":[[]]},{"id":"2e863070.f6fea","type":"change","z":"f91bcc92.a35bc","name":"Extract State","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"included\"][7][\"attributes\"][\"activity\"].value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":340,"wires":[["b693a721.122808"]]},{"id":"eabfca9.2e4cd38","type":"http request","z":"f91bcc92.a35bc","name":"integraalwaterbeleid.be","method":"GET","ret":"txt","paytoqs":false,"url":"https://www.integraalwaterbeleid.be/nl/overleg/droogtecommissie","tls":"","persist":false,"proxy":"","authType":"","x":330,"y":380,"wires":[["98921c45.594e2","380bd96b.6c5306","91268e0f.a7b4f","daa1d758.3fd488"]]},{"id":"98921c45.594e2","type":"switch","z":"f91bcc92.a35bc","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"https://www.integraalwaterbeleid.be/nl/overleg/droogtecommissie/droogtecommissie-beelden/droogteniveau-groen","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":570,"y":380,"wires":[["e5cdd481.b4b0d8"]]},{"id":"e5cdd481.b4b0d8","type":"change","z":"f91bcc92.a35bc","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":380,"wires":[["d2d4585.82bd6a8"]]},{"id":"380bd96b.6c5306","type":"switch","z":"f91bcc92.a35bc","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"https://www.integraalwaterbeleid.be/nl/overleg/droogtecommissie/droogtecommissie-beelden/droogteniveau-geel","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":570,"y":420,"wires":[["e5cdd481.b4b0d8"]]},{"id":"91268e0f.a7b4f","type":"switch","z":"f91bcc92.a35bc","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"https://www.integraalwaterbeleid.be/nl/overleg/droogtecommissie/droogtecommissie-beelden/droogteniveau-oranje","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":570,"y":460,"wires":[["8807f106.5c487"]]},{"id":"8807f106.5c487","type":"change","z":"f91bcc92.a35bc","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":420,"wires":[["d2d4585.82bd6a8"]]},{"id":"daa1d758.3fd488","type":"switch","z":"f91bcc92.a35bc","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"https://www.integraalwaterbeleid.be/nl/overleg/droogtecommissie/droogtecommissie-beelden/droogteniveau-rood","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":570,"y":500,"wires":[["8807f106.5c487"]]},{"id":"d2d4585.82bd6a8","type":"ccu-sysvar","z":"f91bcc92.a35bc","name":"BewaessErlaubt","ccuConfig":"b66dd3a1.5ff8e","topic":"ReGaHSS/${Name}","change":false,"cache":false,"x":1060,"y":380,"wires":[[]]},{"id":"5e969e78.d3dbc","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:5 MaeherFirmStaSto:5","datapoint":"PRESS_SHORT","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":140,"y":700,"wires":[["5be49f56.3d77d"]]},{"id":"8329f9d7.060358","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:6 MaeherScheduleStaSto:6","datapoint":"PRESS_LONG","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":150,"y":580,"wires":[["9b1800f.1d1ee"]]},{"id":"63ee4600.d392f8","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:5 MaeherFirmStaSto:5","datapoint":"PRESS_LONG","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":140,"y":660,"wires":[["3a8974ad.9f76bc"]]},{"id":"c61a5a1b.d40b38","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:6 MaeherScheduleStaSto:6","datapoint":"PRESS_SHORT","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":160,"y":620,"wires":[["76dc45a7.5c801c"]]},{"id":"608aa230.382dcc","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:8 WaterHIscheduleStaSto:8","datapoint":"PRESS_LONG","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":160,"y":740,"wires":[["2f335fae.c7fe8"]]},{"id":"85eabb7d.cf4788","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:8 WaterHIscheduleStaSto:8","datapoint":"PRESS_SHORT","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":160,"y":780,"wires":[["e2e3c8a7.9a8c58"]]},{"id":"fe67d0d9.72e5b","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:7 WaterHIfirmStaSto:7","datapoint":"PRESS_LONG","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":140,"y":820,"wires":[["6b1e65ee.27ddec"]]},{"id":"ba411b99.306028","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:7 WaterHIfirmStaSto:7","datapoint":"PRESS_SHORT","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":140,"y":860,"wires":[["6d588769.63c608"]]},{"id":"c730adb6.07856","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:12 WaterVOfscheduleStaSto:12","datapoint":"PRESS_LONG","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":160,"y":900,"wires":[["3f54c137.1cd42e"]]},{"id":"5e866229.265c7c","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:12 WaterVOfscheduleStaSto:12","datapoint":"PRESS_SHORT","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":170,"y":940,"wires":[["4a854181.ab19c"]]},{"id":"bdef0797.b1d738","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:10 WaterVOfirmStaSto:10","datapoint":"PRESS_LONG","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":150,"y":980,"wires":[["8ef44301.b114d"]]},{"id":"4f7d4086.ffec9","type":"ccu-value","z":"f91bcc92.a35bc","name":"","iface":"BidCos-RF","channel":"BidCoS-RF:10 WaterVOfirmStaSto:10","datapoint":"PRESS_SHORT","mode":"","start":true,"change":true,"cache":true,"queue":true,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":true,"ccuConfig":"b66dd3a1.5ff8e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":150,"y":1020,"wires":[["4c0cc7a1.a6d1d8"]]},{"id":"6b1e65ee.27ddec","type":"function","z":"f91bcc92.a35bc","name":"BAwateringNow30m","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"c8a38172-90c8-429e-a622-2984e7cf709a\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-8\", \n          \"attributes\": {\n          \"command\": \"START_SECONDS_TO_OVERRIDE\",\n          \"seconds\": 1800\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":820,"wires":[["56329d24.3c16f4"]]},{"id":"56329d24.3c16f4","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":820,"wires":[[]]},{"id":"e2e3c8a7.9a8c58","type":"function","z":"f91bcc92.a35bc","name":"WateringBAstopToSched","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"c8a38172-90c8-429e-a622-2984e7cf709a\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-9\", \n          \"attributes\": {\n          \"command\": \"STOP_UNTIL_NEXT_TASK\"\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":780,"wires":[["4167ba16.adc7f4"]]},{"id":"4167ba16.adc7f4","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":780,"wires":[[]]},{"id":"8ef44301.b114d","type":"function","z":"f91bcc92.a35bc","name":"FRwateringNow15m","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"3fe52ddf-9e50-48f7-a147-c3472318de9f\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-12\", \n          \"attributes\": {\n          \"command\": \"START_SECONDS_TO_OVERRIDE\",\n          \"seconds\": 900\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":980,"wires":[["542ab8fb.ce8658"]]},{"id":"542ab8fb.ce8658","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":980,"wires":[[]]},{"id":"4a854181.ab19c","type":"function","z":"f91bcc92.a35bc","name":"WateringFRstopToSched","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"3fe52ddf-9e50-48f7-a147-c3472318de9f\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-13\", \n          \"attributes\": {\n          \"command\": \"STOP_UNTIL_NEXT_TASK\"\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":940,"wires":[["7b1e52de.4ac5ac"]]},{"id":"7b1e52de.4ac5ac","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":940,"wires":[[]]},{"id":"6d588769.63c608","type":"function","z":"f91bcc92.a35bc","name":"SkipBAwateringSched1d","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"c8a38172-90c8-429e-a622-2984e7cf709a\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-7\", \n          \"attributes\": {\n          \"command\": \"PAUSE\",\n          \"seconds\": 86400\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":860,"wires":[["62c1f635.c13fb8"]]},{"id":"62c1f635.c13fb8","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":860,"wires":[[]]},{"id":"2f335fae.c7fe8","type":"function","z":"f91bcc92.a35bc","name":"WaterBAtoSchedule","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"c8a38172-90c8-429e-a622-2984e7cf709a\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-6\", \n          \"attributes\": {\n          \"command\": \"UNPAUSE\"\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":740,"wires":[["a6918fdc.fbf5"]]},{"id":"a6918fdc.fbf5","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":740,"wires":[[]]},{"id":"4c0cc7a1.a6d1d8","type":"function","z":"f91bcc92.a35bc","name":"SkipFRwateringSched1d","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"3fe52ddf-9e50-48f7-a147-c3472318de9f\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-11\", \n          \"attributes\": {\n          \"command\": \"PAUSE\",\n          \"seconds\": 86400\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":1020,"wires":[["9bc7dc70.6ad99"]]},{"id":"9bc7dc70.6ad99","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":1020,"wires":[[]]},{"id":"3f54c137.1cd42e","type":"function","z":"f91bcc92.a35bc","name":"WaterFRtoSchedule","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"3fe52ddf-9e50-48f7-a147-c3472318de9f\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-10\", \n          \"attributes\": {\n          \"command\": \"UNPAUSE\"\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":900,"wires":[["e72f3c70.8fc15"]]},{"id":"e72f3c70.8fc15","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":900,"wires":[[]]},{"id":"3a8974ad.9f76bc","type":"function","z":"f91bcc92.a35bc","name":"MowNowFor3h","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"c8a38172-90c8-429e-a622-2984e7cf709a\"; \n\nmsg.payload = {\n        'data': {\n        'type': 'MOWER_CONTROL', \n\t\t'id': 'request-4', \n\t\t'attributes': {\n\t\t\t'command': 'START_SECONDS_TO_OVERRIDE',\n\t\t\t'seconds': 10800\n\t\t}\n\t}\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":660,"wires":[["9c193a70.0c6cb8"]]},{"id":"9c193a70.0c6cb8","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":660,"wires":[[]]},{"id":"c66dbd42.8b1b3","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":700,"wires":[[]]},{"id":"5be49f56.3d77d","type":"function","z":"f91bcc92.a35bc","name":"StopMowing","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"c8a38172-90c8-429e-a622-2984e7cf709a\"; \n\nmsg.payload = {\n        'data': {\n        'type': 'MOWER_CONTROL', \n\t\t'id': 'request-5', \n\t\t'attributes': {\n\t\t\t'command': 'PARK_UNTIL_FURTHER_NOTICE'\n\t\t}\n\t}\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":590,"y":700,"wires":[[]]},{"id":"32e6920e.c9372e","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":580,"wires":[[]]},{"id":"3f1e426a.94cf5e","type":"http request","z":"f91bcc92.a35bc","name":"","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":830,"y":620,"wires":[[]]},{"id":"9b1800f.1d1ee","type":"function","z":"f91bcc92.a35bc","name":"MowToSchedule","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"c8a38172-90c8-429e-a622-2984e7cf709a\"; \n\nmsg.payload = {\n        'data': {\n        'type': 'MOWER_CONTROL', \n\t\t'id': 'request-2', \n\t\t'attributes': {\n\t\t\t'command': 'START_DONT_OVERRIDE'\n\t\t}\n\t}\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":580,"wires":[["32e6920e.c9372e"]]},{"id":"76dc45a7.5c801c","type":"function","z":"f91bcc92.a35bc","name":"StopMowTillSchedule","func":"var mytoken = global.get(\"access_token\"); \nvar myservice = \"c8a38172-90c8-429e-a622-2984e7cf709a\"; \n\nmsg.payload = {\n        'data': {\n        'type': 'MOWER_CONTROL', \n\t\t'id': 'request-3', \n\t\t'attributes': {\n\t\t\t'command': 'PARK_UNTIL_NEXT_TASK'\n\t\t}\n\t}\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': 'PROVIDE_API_KEY_HERE',\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":620,"wires":[["3f1e426a.94cf5e"]]},{"id":"58d2bc9e.06fb94","type":"comment","z":"f91bcc92.a35bc","name":"Identify the right item number in extract-argument first line by the response string corresponding to the desired device","info":"","x":1590,"y":260,"wires":[]},{"id":"3dc39833.071f28","type":"comment","z":"f91bcc92.a35bc","name":"Unrelated; This parses the water-authority website for watering allowance","info":"","x":1460,"y":380,"wires":[]},{"id":"15c44b99.fabf54","type":"comment","z":"f91bcc92.a35bc","name":"Websocket beyond my competence","info":"","x":1340,"y":80,"wires":[]},{"id":"e1703a3c.3352a8","type":"comment","z":"f91bcc92.a35bc","name":"Provide credencials here","info":"","x":410,"y":80,"wires":[]},{"id":"7f070be9.238324","type":"comment","z":"f91bcc92.a35bc","name":"Identify the right device-ID the the command-argument also through the response string corresponding to the desired device","info":"","x":1050,"y":540,"wires":[]},{"id":"8306888d.da5f88","type":"comment","z":"f91bcc92.a35bc","name":"BA/FR are back-and front garden watering, thus diff device-IDs","info":"","x":1140,"y":740,"wires":[]},{"id":"f060adb.fd9a95","type":"comment","z":"f91bcc92.a35bc","name":"Provide the API key to all functions","info":"","x":160,"y":140,"wires":[]},{"id":"b66dd3a1.5ff8e","type":"ccu-connection","z":"","name":"BeeCCU","host":"192.168.1.8","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"","rpcServerHost":"192.168.1.129","rpcBinPort":"2068","rpcXmlPort":"2069","queueTimeout":"5000","queuePause":"250","contextStore":""}]
Gruss, C.

Zwenjo
Beiträge: 52
Registriert: 13.11.2020, 12:12
System: CCU
Hat sich bedankt: 11 Mal
Danksagung erhalten: 3 Mal

Re: [gelöst] Smart Gardena Flow

Beitrag von Zwenjo » 17.01.2022, 18:24

Hey,

danke für den Flow, habe es jetzt auch endlich mal hinbekommen. :D

Falls noch jemand wie ich stundenlang am verzweifeln ist:
In die oauth2-Node muss bei Scope auch noch händisch "scope" eingtragen werden. Sonst funktioniert es nicht.

Bist du mit dem Thema websocket noch weiter gekommen?

Gruß Sven
Dateianhänge
scope.png
scope.png (28.3 KiB) 2067 mal betrachtet
--------------------------------------------
356 Kanäle in 50 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten:
1x HmIP-CCU3, 1x HmIP-HAP, 1x CUX28, 1x HmIP-STHO-A, 2x HmIP-FSM, 1x HmIP-SPI, 1x HmIP-SAM, 1x HM-LC-Sw1-Pl-CT-R1, 1x HmIP-FSI16, 1x HmIP-SRH, 1x HmIP-eTRV-E, 6x HmIP-HEATING, 1x HmIP-BSL, 1x HmIP-FROLL, 7x HMIP-SWDO, 9x HmIP-BROLL, 6x HmIP-eTRV-2, 1x HmIP-BSM, 1x HmIP-BDT, 1x HmIP-SWSD, 2x HmIP-WTH-2, 1x HMIP-PS, 1x HmIP-PCBS, 1x HmIP-RCV-50, 1x HMIP-PSM
--------------------------------------------

chrimu
Beiträge: 119
Registriert: 18.08.2012, 17:10
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal

Re: [gelöst] Smart Gardena Flow

Beitrag von chrimu » 05.03.2022, 02:31

Ja, Hat sich was getan, siehe anbei und im NR flows Verzeichnis. Da Node-Red keine Websockets mit dynamischem Pfad unterstützt geht's halt über das Python script im Exec-Node. Der websocket path wird über command line Variable übergeben. Bisher bin ich sehr zufrieden, und man kommt auch nicht mehr annähernd an die API-Abfragegrenzen...

Code: Alles auswählen

[
    {
        "id": "8603c38cd8dca9a1",
        "type": "tab",
        "label": "Sandbox",
        "disabled": false,
        "info": ""
    },
    {
        "id": "11a48f4217f434a4",
        "type": "inject",
        "z": "8603c38cd8dca9a1",
        "name": "InitialToken",
        "props": [],
        "repeat": "3600",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "x": 130,
        "y": 60,
        "wires": [
            [
                "5027aac530bce687"
            ]
        ]
    },
    {
        "id": "dcf64b1356151361",
        "type": "http request",
        "z": "8603c38cd8dca9a1",
        "name": "http request",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "senderr": false,
        "x": 610,
        "y": 120,
        "wires": [
            [
                "01230423b9a7a105",
                "5604ef05215e521e",
                "16c491d14cf48e1a"
            ]
        ]
    },
    {
        "id": "2f55d45f74d24846",
        "type": "json",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "property": "payload",
        "action": "",
        "pretty": true,
        "x": 1090,
        "y": 300,
        "wires": [
            [
                "f81fad61a4fda163"
            ]
        ]
    },
    {
        "id": "886acde701e555a0",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "GetLocation",
        "func": "global.set(\"access_token\", msg.oauth2Response.access_token);\nglobal.set(\"refresh_token\", msg.oauth2Response.refresh_token);\nglobal.set(\"user_id\", msg.oauth2Response.user_id)\n\nvar mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar url= \"https://api.smart.gardena.dev/v1/locations\";\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json',\n};\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 390,
        "y": 120,
        "wires": [
            [
                "dcf64b1356151361"
            ]
        ]
    },
    {
        "id": "93664bf94534160a",
        "type": "switch",
        "z": "8603c38cd8dca9a1",
        "name": "WhichDeviceID",
        "property": "payload.id",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "9c43c641-90c5-4c06-a631-b2f7fda41a51",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "00405078-9f5f-4312-84c7-97abde24b1b7",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "3fe52ddf-9e50-48f7-a147-c3472318de9f",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "c8a38172-90c8-429e-a622-2984e7cf709a",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 4,
        "x": 1120,
        "y": 360,
        "wires": [
            [
                "36e8a1c1665e55bc"
            ],
            [
                "17bd24a32c14a7bc",
                "35a5d5cb43e4b85a",
                "2400e7dbf1495bd2"
            ],
            [
                "b2e16fefc955a0d3"
            ],
            [
                "3b05a150b9c6eb97"
            ]
        ]
    },
    {
        "id": "36e8a1c1665e55bc",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "MowerExtrState",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"attributes\"][\"activity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 420,
        "wires": [
            [
                "716910299028eb2d"
            ]
        ]
    },
    {
        "id": "3b05a150b9c6eb97",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "WaReExtrState",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"attributes\"][\"activity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 620,
        "wires": [
            [
                "6c50ebf99d07921e"
            ]
        ]
    },
    {
        "id": "b2e16fefc955a0d3",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "WaFrExtrState",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"attributes\"][\"activity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 580,
        "wires": [
            [
                "2bbccba53065bb5e"
            ]
        ]
    },
    {
        "id": "17bd24a32c14a7bc",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "SensExtrHum",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"attributes\"][\"soilHumidity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 460,
        "wires": [
            [
                "ac3c1e9f9028c9a7"
            ]
        ]
    },
    {
        "id": "35a5d5cb43e4b85a",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "SensExtrLight",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"attributes\"][\"lightIntensity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 500,
        "wires": [
            [
                "72b43dbfb083e25e"
            ]
        ]
    },
    {
        "id": "f7bb8e53b254d0a3",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "Extract State",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"included\"][4][\"attributes\"][\"soilHumidity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 390,
        "y": 460,
        "wires": [
            [
                "ac3c1e9f9028c9a7"
            ]
        ]
    },
    {
        "id": "6fb86e51e2449588",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "Extract State",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"included\"][4][\"attributes\"][\"lightIntensity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 390,
        "y": 500,
        "wires": [
            [
                "72b43dbfb083e25e"
            ]
        ]
    },
    {
        "id": "54681dc81672b4d3",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "Extract State",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"included\"][4][\"attributes\"][\"soilTemperature\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 390,
        "y": 540,
        "wires": [
            [
                "27cf795fcc2ab49f"
            ]
        ]
    },
    {
        "id": "1bd6622781046e65",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "Extract State",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"included\"][9][\"attributes\"][\"activity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 390,
        "y": 420,
        "wires": [
            [
                "716910299028eb2d"
            ]
        ]
    },
    {
        "id": "4f482abde3d2f8c1",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "Extract State",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"included\"][12][\"attributes\"][\"activity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 390,
        "y": 620,
        "wires": [
            [
                "6c50ebf99d07921e"
            ]
        ]
    },
    {
        "id": "4f408de0810cc182",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "Extract State",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"included\"][7][\"attributes\"][\"activity\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 390,
        "y": 580,
        "wires": [
            [
                "2bbccba53065bb5e"
            ]
        ]
    },
    {
        "id": "a4c36ffc5541a4a2",
        "type": "http request",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "senderr": false,
        "x": 610,
        "y": 200,
        "wires": [
            [
                "1bd6622781046e65",
                "4f482abde3d2f8c1",
                "4f408de0810cc182",
                "f7bb8e53b254d0a3",
                "6fb86e51e2449588",
                "54681dc81672b4d3",
                "fa69dd3123599178"
            ]
        ]
    },
    {
        "id": "01230423b9a7a105",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "GetServiceIDs",
        "func": "global.set(\"location\", msg.payload[\"data\"][\"0\"][\"id\"]);\n\nvar mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar mylocation = global.get(\"location\"); \nvar url= \"https://api.smart.gardena.dev/v1/locations/\"+mylocation;\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 400,
        "y": 200,
        "wires": [
            [
                "a4c36ffc5541a4a2"
            ]
        ],
        "info": "Location coule be d8a1faef-2ee3-421d-a3f8-f8ed577c2ad3:suffix\n\nvar url= \"https://api.smart.gardena.dev/v1/locations/\"+mylocation;\nvar url= \"https://api.smart.gardena.dev/v1/locations/d8a1faef-2ee3-421d-a3f8-f8ed577c2ad3\";"
    },
    {
        "id": "fa69dd3123599178",
        "type": "debug",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1110,
        "y": 200,
        "wires": []
    },
    {
        "id": "2400e7dbf1495bd2",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "SensExtrLight",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload[\"attributes\"][\"soilTemperature\"].value",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 540,
        "wires": [
            [
                "27cf795fcc2ab49f"
            ]
        ]
    },
    {
        "id": "f81fad61a4fda163",
        "type": "switch",
        "z": "8603c38cd8dca9a1",
        "name": "WhichDeviceType",
        "property": "payload.type",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "MOWER",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "SENSOR",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "VALVE",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 3,
        "x": 850,
        "y": 360,
        "wires": [
            [
                "93664bf94534160a"
            ],
            [
                "93664bf94534160a"
            ],
            [
                "93664bf94534160a"
            ]
        ]
    },
    {
        "id": "1ecc20c925ead3c1",
        "type": "switch",
        "z": "8603c38cd8dca9a1",
        "name": "RefreshPID=0",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "cont",
                "v": "code: 0",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 400,
        "y": 360,
        "wires": [
            [
                "5027aac530bce687"
            ]
        ]
    },
    {
        "id": "5604ef05215e521e",
        "type": "debug",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1110,
        "y": 120,
        "wires": []
    },
    {
        "id": "5027aac530bce687",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "Credentials",
        "func": "global.set(\"gard_login\", \"c.muckle@skynet.be\");\nglobal.set(\"gard_pass\", \"Cm--2398\");\nglobal.set(\"api_key\", \"e66cb86b-f943-4a77-a4f6-234fb54b08a7\");\nglobal.set(\"api_secret\", \"5aaa3149-9df1-4b16-b048-1da9b4129c48\");\n\n\nvar mylogin = global.get(\"gard_login\");\nvar mypass = global.get(\"gard_pass\"); \nvar myrefresh = global.get(\"refresh_token\"); \nvar myapi = global.get(\"api_key\"); \nvar mysecret = global.get(\"api_secret\"); \n\nmsg.oauth2Request = { \n\"access_token_url\": \"https://api.authentication.husqvarnagroup.dev/v1/oauth2/token\", \n\"credentials\": {\n    \"grant_type\": \"password\",\n    \"username\": mylogin,\n    \"password\": mypass,\n    \"client_id\": myapi,\n    \"client_secret\": mysecret,\n    \"scope\": \"openid\"\n    }\n};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 390,
        "y": 60,
        "wires": [
            [
                "d3ef3bfa775a7727"
            ]
        ]
    },
    {
        "id": "16c491d14cf48e1a",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "GetSocketUrl",
        "func": "global.set(\"location\", msg.payload[\"data\"][\"0\"][\"id\"]);\n\nvar mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar mylocation = global.get(\"location\"); \nvar url= \"https://api.smart.gardena.dev/v1/websocket\";\n\nmsg.payload = {\n    \"data\": {\n    \"id\": \"request-1\",\n    \"type\": \"WEBSOCKET\",\n    \"attributes\": {\n      \"locationId\": mylocation\n      }\n  }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 390,
        "y": 160,
        "wires": [
            [
                "43602269cbbb64e6"
            ]
        ]
    },
    {
        "id": "43602269cbbb64e6",
        "type": "http request",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "method": "POST",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "https://api.smart.gardena.dev/v1/websocket",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 610,
        "y": 160,
        "wires": [
            [
                "3b5862b07de94063",
                "0c7d45e29d856a11"
            ]
        ]
    },
    {
        "id": "3b5862b07de94063",
        "type": "debug",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1110,
        "y": 160,
        "wires": []
    },
    {
        "id": "c5595cd6b44a1d6d",
        "type": "link in",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "links": [],
        "x": 75,
        "y": 100,
        "wires": [
            [
                "5027aac530bce687"
            ]
        ]
    },
    {
        "id": "716910299028eb2d",
        "type": "ccu-sysvar",
        "z": "8603c38cd8dca9a1",
        "name": "MaeherStatus",
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "ReGaHSS/${Name}",
        "change": false,
        "cache": false,
        "x": 840,
        "y": 420,
        "wires": [
            []
        ]
    },
    {
        "id": "6c50ebf99d07921e",
        "type": "ccu-sysvar",
        "z": "8603c38cd8dca9a1",
        "name": "BewaessStatusHI",
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "ReGaHSS/${Name}",
        "change": false,
        "cache": false,
        "x": 1150,
        "y": 620,
        "wires": [
            []
        ]
    },
    {
        "id": "2bbccba53065bb5e",
        "type": "ccu-sysvar",
        "z": "8603c38cd8dca9a1",
        "name": "BewaessStatusVO",
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "ReGaHSS/${Name}",
        "change": false,
        "cache": false,
        "x": 1090,
        "y": 580,
        "wires": [
            []
        ]
    },
    {
        "id": "ac3c1e9f9028c9a7",
        "type": "ccu-sysvar",
        "z": "8603c38cd8dca9a1",
        "name": "Bodenfeuchte",
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "ReGaHSS/${Name}",
        "change": false,
        "cache": false,
        "x": 900,
        "y": 460,
        "wires": [
            []
        ]
    },
    {
        "id": "72b43dbfb083e25e",
        "type": "ccu-sysvar",
        "z": "8603c38cd8dca9a1",
        "name": "BodenBeleuStaerke",
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "ReGaHSS/${Name}",
        "change": false,
        "cache": false,
        "x": 980,
        "y": 500,
        "wires": [
            []
        ]
    },
    {
        "id": "27cf795fcc2ab49f",
        "type": "ccu-sysvar",
        "z": "8603c38cd8dca9a1",
        "name": "Bodentemperatur",
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "ReGaHSS/${Name}",
        "change": false,
        "cache": false,
        "x": 1030,
        "y": 540,
        "wires": [
            []
        ]
    },
    {
        "id": "da47da2cfb142b55",
        "type": "change",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "rules": [
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "msg {",
                "fromt": "str",
                "to": "{",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 860,
        "y": 300,
        "wires": [
            [
                "2f55d45f74d24846",
                "1ecc20c925ead3c1",
                "3d8aae2f257ebcfb"
            ]
        ]
    },
    {
        "id": "0c7d45e29d856a11",
        "type": "exec",
        "z": "8603c38cd8dca9a1",
        "command": "python3 /volume1/homes/admin/noderedgardenasocket.py ",
        "addpay": "payload.data.attributes.url",
        "append": "",
        "useSpawn": "true",
        "timer": "",
        "winHide": false,
        "oldrc": false,
        "name": "GardenaWebsock",
        "x": 630,
        "y": 300,
        "wires": [
            [
                "da47da2cfb142b55"
            ],
            [],
            [
                "1ecc20c925ead3c1"
            ]
        ]
    },
    {
        "id": "d3ef3bfa775a7727",
        "type": "oauth2",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "container": "oauth2Response",
        "access_token_url": "",
        "grant_type": "set_by_credentials",
        "username": "",
        "password": "",
        "client_id": "",
        "client_secret": "",
        "scope": "",
        "rejectUnauthorized": true,
        "headers": {},
        "x": 590,
        "y": 60,
        "wires": [
            [
                "886acde701e555a0",
                "4c38a7ef4515f10c"
            ]
        ]
    },
    {
        "id": "96a043e308f235cc",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "BAwateringNow30m",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-8\", \n          \"attributes\": {\n          \"command\": \"START_SECONDS_TO_OVERRIDE\",\n          \"seconds\": 1800\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 860,
        "y": 960,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "5ae51971ce5bc9e8",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "WateringBAstopToSched",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-9\", \n          \"attributes\": {\n          \"command\": \"STOP_UNTIL_NEXT_TASK\"\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 870,
        "y": 920,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "4147f086c7d8f790",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "FRwateringNow15m",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-12\", \n          \"attributes\": {\n          \"command\": \"START_SECONDS_TO_OVERRIDE\",\n          \"seconds\": 900\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 860,
        "y": 1120,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "78fcbe37b821521d",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "WateringFRstopToSched",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-13\", \n          \"attributes\": {\n          \"command\": \"STOP_UNTIL_NEXT_TASK\"\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 870,
        "y": 1080,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "930de4a318a161d4",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "SkipBAwateringSched1d",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-7\", \n          \"attributes\": {\n          \"command\": \"PAUSE\",\n          \"seconds\": 86400\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 870,
        "y": 1000,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "f71d7373914976f7",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "WaterBAtoSchedule",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-6\", \n          \"attributes\": {\n          \"command\": \"UNPAUSE\"\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 860,
        "y": 880,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "df19e7384ace39c1",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "SkipFRwateringSched1d",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-11\", \n          \"attributes\": {\n          \"command\": \"PAUSE\",\n          \"seconds\": 86400\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 870,
        "y": 1160,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "fc2b05b2ee15283f",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "WaterFRtoSchedule",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        \"data\": {\n          \"type\": \"VALVE_CONTROL\", \n          \"id\": \"request-10\", \n          \"attributes\": {\n          \"command\": \"UNPAUSE\"\n        }\n     }\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 860,
        "y": 1040,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "64883fca333bab5c",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "MowNowFor3h",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        'data': {\n        'type': 'MOWER_CONTROL', \n\t\t'id': 'request-4', \n\t\t'attributes': {\n\t\t\t'command': 'START_SECONDS_TO_OVERRIDE',\n\t\t\t'seconds': 10800\n\t\t}\n\t}\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 840,
        "y": 800,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "8e1ff7ff57d4d2f3",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "StopMowing",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        'data': {\n        'type': 'MOWER_CONTROL', \n\t\t'id': 'request-5', \n\t\t'attributes': {\n\t\t\t'command': 'PARK_UNTIL_FURTHER_NOTICE'\n\t\t}\n\t}\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 830,
        "y": 840,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "1057884222fa40ca",
        "type": "http request",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "method": "PUT",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 1150,
        "y": 920,
        "wires": [
            [
                "38e5038e75b4e434"
            ]
        ]
    },
    {
        "id": "816a3a4ec0a87d09",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "MowToSchedule",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        'data': {\n        'type': 'MOWER_CONTROL', \n\t\t'id': 'request-2', \n\t\t'attributes': {\n\t\t\t'command': 'START_DONT_OVERRIDE'\n\t\t}\n\t}\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 840,
        "y": 720,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "81aa290feb78341e",
        "type": "function",
        "z": "8603c38cd8dca9a1",
        "name": "StopMowTillSchedule",
        "func": "var mytoken = global.get(\"access_token\"); \nvar myapi = global.get(\"api_key\"); \nvar myservice = \"Service-ID des Geräts aus Debug\"; \n\nmsg.payload = {\n        'data': {\n        'type': 'MOWER_CONTROL', \n\t\t'id': 'request-3', \n\t\t'attributes': {\n\t\t\t'command': 'PARK_UNTIL_NEXT_TASK'\n\t\t}\n\t}\n};\n\nmsg.headers = {\n\t'Authorization': 'Bearer '+mytoken,\n\t'Authorization-Provider': 'husqvarna',\n\t'X-Api-Key': myapi,\n\t'Content-Type': 'application/vnd.api+json'\n};\n\n\nvar url= \"https://api.smart.gardena.dev/v1/command/\"+myservice;\n\nmsg.url = url;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 860,
        "y": 760,
        "wires": [
            [
                "1057884222fa40ca"
            ]
        ]
    },
    {
        "id": "38e5038e75b4e434",
        "type": "debug",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1350,
        "y": 920,
        "wires": []
    },
    {
        "id": "04a5da3d11083df1",
        "type": "link out",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "links": [],
        "x": 435,
        "y": 940,
        "wires": []
    },
    {
        "id": "44f68099632d8e3b",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 720,
        "wires": [
            [
                "816a3a4ec0a87d09"
            ]
        ]
    },
    {
        "id": "763356c55c3bf418",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 760,
        "wires": [
            [
                "81aa290feb78341e"
            ]
        ]
    },
    {
        "id": "819d2a8209581bf4",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 800,
        "wires": [
            [
                "64883fca333bab5c"
            ]
        ]
    },
    {
        "id": "6f9c9bf764931406",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 840,
        "wires": [
            [
                "8e1ff7ff57d4d2f3"
            ]
        ]
    },
    {
        "id": "7f6df0b358091034",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 880,
        "wires": [
            [
                "f71d7373914976f7"
            ]
        ]
    },
    {
        "id": "5ef4c6d0d10910c4",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 920,
        "wires": [
            [
                "5ae51971ce5bc9e8"
            ]
        ]
    },
    {
        "id": "c499dbf92bf4fe2e",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 960,
        "wires": [
            [
                "96a043e308f235cc"
            ]
        ]
    },
    {
        "id": "a74989ffa5631da1",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 1000,
        "wires": [
            [
                "930de4a318a161d4"
            ]
        ]
    },
    {
        "id": "68a176994fb5f1df",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 1040,
        "wires": [
            [
                "fc2b05b2ee15283f"
            ]
        ]
    },
    {
        "id": "7442bf28d7e07608",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 1080,
        "wires": [
            [
                "78fcbe37b821521d"
            ]
        ]
    },
    {
        "id": "348522ce7152c366",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 1120,
        "wires": [
            [
                "4147f086c7d8f790"
            ]
        ]
    },
    {
        "id": "acd9e3e41a283b08",
        "type": "delay",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 600,
        "y": 1160,
        "wires": [
            [
                "df19e7384ace39c1"
            ]
        ]
    },
    {
        "id": "0232c94ab479cf1f",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:5 MaeherFirmStaSto:5",
        "datapoint": "PRESS_SHORT",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 180,
        "y": 840,
        "wires": [
            [
                "04a5da3d11083df1",
                "6f9c9bf764931406"
            ]
        ]
    },
    {
        "id": "2899641da22b272d",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:6 MaeherScheduleStaSto:6",
        "datapoint": "PRESS_LONG",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 190,
        "y": 720,
        "wires": [
            [
                "04a5da3d11083df1",
                "44f68099632d8e3b"
            ]
        ]
    },
    {
        "id": "ce89845bf3c4ca47",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:5 MaeherFirmStaSto:5",
        "datapoint": "PRESS_LONG",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 180,
        "y": 800,
        "wires": [
            [
                "04a5da3d11083df1",
                "819d2a8209581bf4"
            ]
        ]
    },
    {
        "id": "495335f3b750e3b2",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:6 MaeherScheduleStaSto:6",
        "datapoint": "PRESS_SHORT",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 200,
        "y": 760,
        "wires": [
            [
                "04a5da3d11083df1",
                "763356c55c3bf418"
            ]
        ]
    },
    {
        "id": "22f80ac9c2d963b4",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:8 WaterHIscheduleStaSto:8",
        "datapoint": "PRESS_LONG",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 200,
        "y": 880,
        "wires": [
            [
                "04a5da3d11083df1",
                "7f6df0b358091034"
            ]
        ]
    },
    {
        "id": "7bebcdd618f94b2e",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:8 WaterHIscheduleStaSto:8",
        "datapoint": "PRESS_SHORT",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 200,
        "y": 920,
        "wires": [
            [
                "04a5da3d11083df1",
                "5ef4c6d0d10910c4"
            ]
        ]
    },
    {
        "id": "d747f72526ae1c7f",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:7 WaterHIfirmStaSto:7",
        "datapoint": "PRESS_LONG",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 180,
        "y": 960,
        "wires": [
            [
                "04a5da3d11083df1",
                "c499dbf92bf4fe2e"
            ]
        ]
    },
    {
        "id": "b679985415475939",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:7 WaterHIfirmStaSto:7",
        "datapoint": "PRESS_SHORT",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 180,
        "y": 1000,
        "wires": [
            [
                "04a5da3d11083df1",
                "a74989ffa5631da1"
            ]
        ]
    },
    {
        "id": "cdc03a678cc846f8",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:12 WaterVOfscheduleStaSto:12",
        "datapoint": "PRESS_LONG",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 200,
        "y": 1040,
        "wires": [
            [
                "04a5da3d11083df1",
                "68a176994fb5f1df"
            ]
        ]
    },
    {
        "id": "980f1293c03793b1",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:12 WaterVOfscheduleStaSto:12",
        "datapoint": "PRESS_SHORT",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 210,
        "y": 1080,
        "wires": [
            [
                "04a5da3d11083df1",
                "7442bf28d7e07608"
            ]
        ]
    },
    {
        "id": "b98e54bd668ef7f9",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:10 WaterVOfirmStaSto:10",
        "datapoint": "PRESS_LONG",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 190,
        "y": 1120,
        "wires": [
            [
                "04a5da3d11083df1",
                "348522ce7152c366"
            ]
        ]
    },
    {
        "id": "fac260d9ada1b472",
        "type": "ccu-value",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "iface": "BidCos-RF",
        "channel": "BidCoS-RF:10 WaterVOfirmStaSto:10",
        "datapoint": "PRESS_SHORT",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": true,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "bbd015c6d7c78bf4",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 190,
        "y": 1160,
        "wires": [
            [
                "04a5da3d11083df1",
                "acd9e3e41a283b08"
            ]
        ]
    },
    {
        "id": "4c38a7ef4515f10c",
        "type": "debug",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "oauth2Response",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1140,
        "y": 60,
        "wires": []
    },
    {
        "id": "3d8aae2f257ebcfb",
        "type": "debug",
        "z": "8603c38cd8dca9a1",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1350,
        "y": 300,
        "wires": []
    },
    {
        "id": "b2bfd2f0fcc39ee5",
        "type": "comment",
        "z": "8603c38cd8dca9a1",
        "name": "Input your credentials",
        "info": "",
        "x": 420,
        "y": 20,
        "wires": []
    },
    {
        "id": "12a933412ff602e2",
        "type": "comment",
        "z": "8603c38cd8dca9a1",
        "name": "Save the python file (open this text-node) where it can execute, and adapt exec-node accordingly richtig angeben",
        "info": "import websocket\nfrom threading import Thread\nimport time\nimport sys\nimport requests\n\nlist_of_arguments = sys.argv\n\n# account specific values\nwebsocket_url = (list_of_arguments[1])\n\nclass Client:\n    def on_message(self, message):\n        print(\"msg\", message)\n        sys.stdout.flush()\n\n    def on_error(self, error):\n        print(\"error\", error)\n\n    def on_close(self):\n        self.live = False\n        print(\"### closed ###\")\n        sys.exit(0)\n\n    def on_open(self):\n        print(\"### connected ###\")\n\n        self.live = True\n\n        def run(*args):\n            while self.live:\n                time.sleep(1)\n\n        Thread(target=run).start()\n\n\nif __name__ == \"__main__\":\n\n    # websocket.enableTrace(True)\n    client = Client()\n    ws = websocket.WebSocketApp(\n        websocket_url,\n        on_message=client.on_message,\n        on_error=client.on_error,\n        on_close=client.on_close)\n    ws.on_open = client.on_open\n    ws.run_forever(ping_interval=150, ping_timeout=1)",
        "x": 440,
        "y": 240,
        "wires": []
    },
    {
        "id": "9060e85deda3b90e",
        "type": "comment",
        "z": "8603c38cd8dca9a1",
        "name": "Input your appliances' sservice-IDs from debug",
        "info": "",
        "x": 940,
        "y": 680,
        "wires": []
    },
    {
        "id": "bbd015c6d7c78bf4",
        "type": "ccu-connection",
        "name": "BeeCCU",
        "host": "192.168.1.8",
        "regaEnabled": true,
        "bcrfEnabled": true,
        "iprfEnabled": true,
        "virtEnabled": true,
        "bcwiEnabled": false,
        "cuxdEnabled": true,
        "regaPoll": true,
        "regaInterval": "30",
        "rpcPingTimeout": "60",
        "rpcInitAddress": "",
        "rpcServerHost": "192.168.1.9",
        "rpcBinPort": "2068",
        "rpcXmlPort": "2069",
        "tls": false,
        "inSecure": false,
        "authentication": false,
        "username": "",
        "password": "",
        "queueTimeout": "5000",
        "queuePause": "250",
        "contextStore": ""
    }
]
Sonst auch hier: https://flows.nodered.org/flow/5d397eb7 ... 1074938ba5

VG, C.
Dateianhänge
CMUflow.jpg

Zwenjo
Beiträge: 52
Registriert: 13.11.2020, 12:12
System: CCU
Hat sich bedankt: 11 Mal
Danksagung erhalten: 3 Mal

Re: [gelöst - update] Smart Gardena Flow

Beitrag von Zwenjo » 22.03.2022, 01:03

Und die Python-Datei kann ich einfach auf einen USB-Stick, der in der CCU3 steckt, speichern?
Und dann natürlich noch den richtigen Pfad in der exec-Node angeben.

Oder brauche ich da noch irgendwas?

Kenne mich mit Python bisher noch nicht aus.

Danke für die Rückmeldung!
--------------------------------------------
356 Kanäle in 50 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten:
1x HmIP-CCU3, 1x HmIP-HAP, 1x CUX28, 1x HmIP-STHO-A, 2x HmIP-FSM, 1x HmIP-SPI, 1x HmIP-SAM, 1x HM-LC-Sw1-Pl-CT-R1, 1x HmIP-FSI16, 1x HmIP-SRH, 1x HmIP-eTRV-E, 6x HmIP-HEATING, 1x HmIP-BSL, 1x HmIP-FROLL, 7x HMIP-SWDO, 9x HmIP-BROLL, 6x HmIP-eTRV-2, 1x HmIP-BSM, 1x HmIP-BDT, 1x HmIP-SWSD, 2x HmIP-WTH-2, 1x HMIP-PS, 1x HmIP-PCBS, 1x HmIP-RCV-50, 1x HMIP-PSM
--------------------------------------------

chrimu
Beiträge: 119
Registriert: 18.08.2012, 17:10
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal

Re: [gelöst - update] Smart Gardena Flow

Beitrag von chrimu » 22.03.2022, 22:59

Ich habe node-red auf der Synology, und ne CCU2. Ich bin fast sicher man bekommt auch Python 3.x auf er CCU3 zu laufen, wenn's nicht eh schon standardmässig drauf ist. Aber besser isses Du fragst die CCU3 Profis hier.

Nicht zu vergessen, und ich vervollständige nochmal die GIT/NR readmes: Man muss in Python auch die Module installieren, die am Anfang des Skripts aufgerufen werden.

VG, C.

Antworten

Zurück zu „RedMatic“