Gardena smart API flow
This requires Python >3 to be installed
The initial idea was to connect the Gardena API with Homematic (CCU2) home automation (pale- and dark-blue nodes) you can exchange the latter to any info receiving and command triggering nodes of your choice.
The upper part of the flow is for information retieval of your Gardena Smart installation including their smart ground sensor (v.1.), the lower part generates commands.
For the retieval part, complete the first function node with your Smart Gardena API credentials. Then extract the Python3 websocket script (the main hassle was due to its dynamic path) as it stands from the text-node and store it somewhere where it can run, and adapt the related exec-node accordingly. Now also install the Python modules called upon in the first 5 lines of the script. The credentials -notably the dynamic websocket path- are handed over as command line arguments.
You might wish to change the pale-blue Homematic system variable outputs into something you can work with (e.g. dashboard), for translation purposes it's: mower state, ground humidity, ground light level, ground temp., watering state front, watering state back.
For the command part, input your devices' service-IDs (in my case one mower and two irrigation computers BAck and FRont) in the function nodes and exchange my dark-blue Homematic-triggers with -again- triggers matching your preferate automation (e.g. dashboard).
https://github.com/FrodoVDR has published 2019 an early forerunner of this flow on GitHub. Gardena is a registered trademark of Husqvarna AB, please refer to the conditions permitting the use of their API.
[{"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\", \"[email protected]\");\nglobal.set(\"gard_pass\", \"Password\");\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","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' service-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":""}]