[gelöst - update] Smart Gardena Flow
Moderator: Co-Administratoren
-
- 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
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.
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.
-
- 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
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.
-
- 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
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.
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)
Gruss, C.
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.
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":""}]
-
- 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
Hey,
danke für den Flow, habe es jetzt auch endlich mal hinbekommen.
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
danke für den Flow, habe es jetzt auch endlich mal hinbekommen.
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 (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
--------------------------------------------
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
--------------------------------------------
-
- 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
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...
Sonst auch hier: https://flows.nodered.org/flow/5d397eb7 ... 1074938ba5
VG, C.
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": ""
}
]
VG, C.
-
- 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
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!
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
--------------------------------------------
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
--------------------------------------------
-
- 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
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.
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.