Skip to content

Steuerung Miele

H. Klages edited this page Mar 28, 2020 · 3 revisions

Clone this wiki locally

Category: User Flows

Steuerung von Miele Geräten

Anwendungsbereich

Mit diesen subflows können Miele Geräte abgefragt und gesteuert werden. Der von Miele angebotene Funktionsumfang ist allerdings "recht begrenzt". Bei Waschtrockner geht Start/Stop/Gerätename definieren sowie Abfragen des aktuellen Programms, Laufzeit und Status (aus, an, ...)

Benötigte Erweiterungen

Empfohlen ist credentials, da ansonsten durch versehentliche Node Exports oder im Falle des Einsatzes von Projekten(github) kritische Kennwörter im Internet zu sehen sind.

Installation

  1. Installation des Miele Gerätes/Wifi Interfaces laut Miele Handbuch

  2. Installation the Miele@mobile app auf dem Smartphone gemäß Miele Anleitung. Hierzu muss man sich mit Benutzer/Kennwort registrieren.

  3. Bei Miele client_id und client_secret anfordern: developer@miele.com

  4. Installieren der Node credentials credentials. Dies hilft die obigen Kennwörter etc nicht versehentlich zu exportieren oder mit GitHub zu "exposen".

  5. Importieren der Flows (siehe unten). Die Subflows sind dann in der Palette unter Kategory Miele zu sehen

  6. Eigene Daten in die credential node eintragen: Benutzername, Kennwort, client_id and client_secret

  7. Mit "get_bearer" einen Token / bearer anfordern. Dieser wird in die globale Variable system_bearerMiele geschrieben. Der Refresh Token wird in system_refreshMiele geschrieben.

Achtung: Die globalen Variablen sollten permanent gespeicher werden (RedMatic Konfiguration, Context Storage, Default file!).

  1. Jetzt kann man die anderen Subflows verwenden.

Achtung: Der Token muss alle 30 Tage aktualisiert(refresh) werden.


[{"id":"ad607e01.511ea","type":"subflow","name":"set action","info":"Set (execute) an action for the given appliance. Valid action depend on kind of appliance and state!","category":"Miele","in":[{"x":40,"y":75,"wires":[{"id":"2542e5f6.b0fd8a"}]}],"out":[{"x":1011,"y":74,"wires":[{"id":"21b0eeb.798de12","port":0}]}],"env":[],"color":"#A70625","inputLabels":["appliance id in payload and an action "],"outputLabels":["result"],"icon":"font-awesome/fa-angle-double-right","status":{"x":1010,"y":240,"wires":[{"id":"e4fefa21.402038","port":0},{"id":"9ebcdded.4fad9","port":0},{"id":"ebacb8a0.327d58","port":0}]}},{"id":"dafbb889.fb7f58","type":"http request","z":"ad607e01.511ea","name":"PUT to Miele","method":"PUT","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":499,"y":188,"wires":[["21b0eeb.798de12"]]},{"id":"8bbd1614.6e5288","type":"change","z":"ad607e01.511ea","name":"url, body","rules":[{"t":"set","p":"url","pt":"msg","to":"\"https://api.mcs3.miele.com/v1/devices/\" & payload & \"/actions/\"","tot":"jsonata"},{"t":"move","p":"action","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":389,"y":68,"wires":[["47b32910.93a498"]]},{"id":"2542e5f6.b0fd8a","type":"function","z":"ad607e01.511ea","name":"verify input","func":"// verify bearer & msg properties\nif (!global.get('system_bearerMiele')) {\n    node.error('global variable system_bearerMiele not defined', msg)\n    return [null, {payload:'invalid global variable'}]\n}\nif (!msg.payload){\n    node.error('invalid msg.payload - device id', msg)\n    return [null, {payload:\"invalid msg.payload - device id\"}]\n}\nif (!msg.action){\n    node.error('invalid msg.action - action', msg)\n    return [null, {payload:\"invalid msg.action - action\"}]\n}\nreturn [msg, null]","outputs":2,"noerr":0,"x":193,"y":75,"wires":[["8bbd1614.6e5288"],["ebacb8a0.327d58"]]},{"id":"f7de50c4.54625","type":"template","z":"ad607e01.511ea","name":"header with authorization","field":"headers","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"Authorization\":\"bearer {{global.system_bearerMiele}}\", \"Accept\": \"application/json\", \"Accept-Charset\": \"utf-8\"}","output":"json","x":459,"y":146,"wires":[["dafbb889.fb7f58"]]},{"id":"21b0eeb.798de12","type":"switch","z":"ad607e01.511ea","name":"ok?","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"200","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":693,"y":80,"wires":[["e4fefa21.402038"],["6ad0d242.05cb5c"]]},{"id":"6ad0d242.05cb5c","type":"function","z":"ad607e01.511ea","name":"throw error","func":"node.error('http error: ' + msg.payload.message, msg)\nreturn msg\n","outputs":1,"noerr":0,"x":716,"y":160,"wires":[["9ebcdded.4fad9"]]},{"id":"9ebcdded.4fad9","type":"template","z":"ad607e01.511ea","name":"error  http","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload.message}}\"}","output":"json","x":863,"y":160,"wires":[[]]},{"id":"e4fefa21.402038","type":"template","z":"ad607e01.511ea","name":"ok!","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"green\",\"shape\":\"dot\",\"text\":\"ok!\"}","output":"json","x":873,"y":120,"wires":[[]]},{"id":"ebacb8a0.327d58","type":"template","z":"ad607e01.511ea","name":"error input","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload}}\"}","output":"json","x":330,"y":240,"wires":[[]]},{"id":"47b32910.93a498","type":"json","z":"ad607e01.511ea","name":"","property":"payload","action":"obj","pretty":false,"x":399,"y":108,"wires":[["f7de50c4.54625"]]},{"id":"4ae29caa.8056e4","type":"subflow","name":"get actions","info":"Get an object with all valid actions for the given appliance id at the current appliance state.\n\nPrereq: bearer in global variable system_bearerMiele","category":"Miele","in":[{"x":40,"y":88,"wires":[{"id":"d3015191.5633d"}]}],"out":[{"x":1099,"y":38,"wires":[{"id":"c8655abf.93b328","port":0}]}],"env":[],"color":"#A70625","inputLabels":["appliance id"],"outputLabels":["all actions"],"icon":"node-red/debug.svg","status":{"x":1099,"y":158,"wires":[{"id":"2c02bcd4.dc63d4","port":0},{"id":"1455fb1d.b32055","port":0},{"id":"d9bc2537.715df8","port":0}]}},{"id":"a2806ac3.d3a2d8","type":"http request","z":"4ae29caa.8056e4","name":"GET from Miele","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":460,"y":118,"wires":[["c8655abf.93b328"]]},{"id":"e9e5b981.24d568","type":"change","z":"4ae29caa.8056e4","name":"msg.url, no payload","rules":[{"t":"set","p":"url","pt":"msg","to":"\"https://api.mcs3.miele.com/v1/devices/\" & payload & \"/actions/\"","tot":"jsonata"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":78,"wires":[["a2806ac3.d3a2d8"]]},{"id":"f2707f72.38a2f","type":"template","z":"4ae29caa.8056e4","name":"msg.headers with authorization","field":"headers","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"Authorization\":\"bearer {{global.system_bearerMiele}}\", \"Accept\": \"application/json\", \"Accept-Charset\": \"utf-8\"}","output":"json","x":429,"y":38,"wires":[["e9e5b981.24d568"]]},{"id":"d3015191.5633d","type":"function","z":"4ae29caa.8056e4","name":"verify input","func":"// verify bearer & msg properties\nif (!global.get('system_bearerMiele')) {\n    node.error('global variable system_bearerMiele not defined', msg)\n    return [null, {payload:'invalid global variable'}]\n}\nif (!msg.payload){\n    node.error('invalid msg.payload - device id', msg)\n    return [null, {payload:\"invalid msg.payload - device id\"}]\n}\nreturn [msg, null]","outputs":2,"noerr":0,"x":198,"y":88,"wires":[["f2707f72.38a2f"],["d9bc2537.715df8"]]},{"id":"c8655abf.93b328","type":"switch","z":"4ae29caa.8056e4","name":"ok?","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"200","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":703,"y":38,"wires":[["2c02bcd4.dc63d4"],["52535782.315028"]]},{"id":"52535782.315028","type":"function","z":"4ae29caa.8056e4","name":"throw error","func":"node.error('http error: ' + msg.payload.message, msg)\nreturn msg\n","outputs":1,"noerr":0,"x":815,"y":118,"wires":[["1455fb1d.b32055"]]},{"id":"1455fb1d.b32055","type":"template","z":"4ae29caa.8056e4","name":"error  http","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload.message}}\"}","output":"json","x":962,"y":118,"wires":[[]]},{"id":"2c02bcd4.dc63d4","type":"template","z":"4ae29caa.8056e4","name":"ok!","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"green\",\"shape\":\"dot\",\"text\":\"ok!\"}","output":"json","x":972,"y":78,"wires":[[]]},{"id":"d9bc2537.715df8","type":"template","z":"4ae29caa.8056e4","name":"error input","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload}}\"}","output":"json","x":310,"y":158,"wires":[[]]},{"id":"aeba9414.6f40a8","type":"subflow","name":"get appliance","info":"Get an object with identification and state data for the given appliance id.\n\nPrereq: bearer in global variable system_bearerMiele","category":"Miele","in":[{"x":40,"y":97,"wires":[{"id":"a260e272.ea783"}]}],"out":[{"x":1143,"y":33,"wires":[{"id":"3da93881.b6e868","port":0}]}],"env":[{"name":"language","type":"str","value":"en","ui":{"label":{"en-US":"Language"},"type":"select","opts":{"opts":[{"l":{"en-US":"English"},"v":"en"},{"l":{"en-US":"Deutsch"},"v":"de"}]}}}],"color":"#A70625","inputLabels":["appliance id as payload"],"outputLabels":["appliance identification and state"],"icon":"font-awesome/fa-info","status":{"x":1140,"y":164,"wires":[{"id":"dd906f4c.1361a","port":0},{"id":"fd32a717.878c28","port":0},{"id":"96a3026.b505b","port":0}]}},{"id":"88aafd6a.c0982","type":"http request","z":"aeba9414.6f40a8","name":"GET from Miele","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":460,"y":120,"wires":[["3da93881.b6e868"]]},{"id":"3f0996d.8ed756a","type":"change","z":"aeba9414.6f40a8","name":"msg.url, no payload","rules":[{"t":"set","p":"url","pt":"msg","to":"\"https://api.mcs3.miele.com/v1/devices/\" & payload & \"/?language=\" & $env('language')","tot":"jsonata"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":80,"wires":[["88aafd6a.c0982"]]},{"id":"98d65a27.8020b8","type":"template","z":"aeba9414.6f40a8","name":"msg.headers with authorization","field":"headers","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"Authorization\":\"bearer {{global.system_bearerMiele}}\", \"Accept\": \"application/json\", \"Accept-Charset\": \"utf-8\"}","output":"json","x":410,"y":40,"wires":[["3f0996d.8ed756a"]]},{"id":"a260e272.ea783","type":"function","z":"aeba9414.6f40a8","name":"verify input","func":"// verify bearer & msg properties\nif (!global.get('system_bearerMiele')) {\n    node.error('global variable system_bearerMiele not defined', msg)\n    return [null, {payload:'invalid global variable'}]\n}\nif (!msg.payload){\n    node.error('invalid msg.payload - device id', msg)\n    return [null, {payload:\"invalid msg.payload - device id\"}]\n}\nreturn [msg, null]","outputs":2,"noerr":0,"x":192,"y":97,"wires":[["98d65a27.8020b8"],["fd32a717.878c28"]]},{"id":"3da93881.b6e868","type":"switch","z":"aeba9414.6f40a8","name":"ok?","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"200","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":670,"y":40,"wires":[["96a3026.b505b"],["6a599077.f8081"]]},{"id":"6a599077.f8081","type":"function","z":"aeba9414.6f40a8","name":"throw error","func":"node.error('http error: ' + msg.payload.message, msg)\nreturn msg\n","outputs":1,"noerr":0,"x":830,"y":120,"wires":[["dd906f4c.1361a"]]},{"id":"dd906f4c.1361a","type":"template","z":"aeba9414.6f40a8","name":"error  http","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload.message}}\"}","output":"json","x":980,"y":120,"wires":[[]]},{"id":"fd32a717.878c28","type":"template","z":"aeba9414.6f40a8","name":"error input","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload}}\"}","output":"json","x":350,"y":164,"wires":[[]]},{"id":"96a3026.b505b","type":"template","z":"aeba9414.6f40a8","name":"ok!","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"green\",\"shape\":\"dot\",\"text\":\"ok!\"}","output":"json","x":990,"y":80,"wires":[[]]},{"id":"ea970db4.5106b","type":"subflow","name":"get all appliances","info":"Get a list of all appliances with indentification and state.\n\nPrereq: bearer in global variable system_bearerMiele","category":"Miele","in":[{"x":40,"y":80,"wires":[{"id":"eaf22f71.d9969"}]}],"out":[{"x":1119,"y":74,"wires":[{"id":"a35f8dee.9f18f","port":0}]}],"env":[{"name":"language","type":"str","value":"en","ui":{"label":{"en-US":"Language"},"type":"select","opts":{"opts":[{"l":{"en-US":"English"},"v":"en"},{"l":{"en-US":"Deutsch"},"v":"de"}]}}}],"color":"#A70625","inputLabels":["just trigger"],"outputLabels":["appliance list in household"],"icon":"font-awesome/fa-list-ul","status":{"x":1120,"y":220,"wires":[{"id":"fe83c7a3.1ef478","port":0},{"id":"84b66c9d.f62ef","port":0},{"id":"681dd18d.1baa4","port":0}]}},{"id":"1cb172b5.14d9cd","type":"http request","z":"ea970db4.5106b","name":"GET from Miele","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":480,"y":160,"wires":[["a35f8dee.9f18f"]]},{"id":"93008453.2d0988","type":"change","z":"ea970db4.5106b","name":"define url delete payload","rules":[{"t":"set","p":"url","pt":"msg","to":"\"https://api.mcs3.miele.com/v1/devices/?language=\" & $env('language')","tot":"jsonata"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":120,"wires":[["1cb172b5.14d9cd"]]},{"id":"d7fd649a.9ff818","type":"template","z":"ea970db4.5106b","name":"header with authorization","field":"headers","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"Authorization\":\"bearer {{global.system_bearerMiele}}\", \"Accept\": \"application/json\", \"Accept-Charset\": \"utf-8\"}","output":"json","x":429,"y":80,"wires":[["93008453.2d0988"]]},{"id":"eaf22f71.d9969","type":"function","z":"ea970db4.5106b","name":"verify input","func":"// verify token\nif (!global.get('system_bearerMiele')) {\n    node.error('global variable system_bearerMiele not defined', msg)\n    return [null, {payload:'invalid global variable'}]\n}\nreturn [msg, null]","outputs":2,"noerr":0,"x":218,"y":80,"wires":[["d7fd649a.9ff818"],["681dd18d.1baa4"]]},{"id":"a35f8dee.9f18f","type":"switch","z":"ea970db4.5106b","name":"ok?","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"200","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":650,"y":80,"wires":[["84b66c9d.f62ef"],["8c52e1d0.35a7c"]]},{"id":"8c52e1d0.35a7c","type":"function","z":"ea970db4.5106b","name":"throw error","func":"node.error('http error: ' + msg.payload.message, msg)\nreturn msg\n","outputs":1,"noerr":0,"x":810,"y":160,"wires":[["fe83c7a3.1ef478"]]},{"id":"fe83c7a3.1ef478","type":"template","z":"ea970db4.5106b","name":"error http","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload.message}}\"}","output":"json","x":963,"y":160,"wires":[[]]},{"id":"84b66c9d.f62ef","type":"template","z":"ea970db4.5106b","name":"ok!","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"green\",\"shape\":\"dot\",\"text\":\"ok!\"}","output":"json","x":954,"y":120,"wires":[[]]},{"id":"681dd18d.1baa4","type":"template","z":"ea970db4.5106b","name":"error input","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload}}\"}","output":"json","x":390,"y":218,"wires":[[]]},{"id":"24092027.ab82","type":"subflow","name":"get bearer","info":"Get a new bearer and refresh token and stores it in global variables. \n\nThe global variables system_bearerMiele and system_refreshMiele are being used.","category":"Miele","in":[{"x":30,"y":63,"wires":[{"id":"85119bed.21b168"}]}],"out":[{"x":1221,"y":43,"wires":[{"id":"430fd0da.a6602","port":0}]}],"env":[{"name":"vg","type":"str","value":"de-DE","ui":{"label":{"en-US":"Country"},"type":"select","opts":{"opts":[{"l":{"en-US":"Germany"},"v":"de-DE"}]}}},{"name":"doRefresh","type":"bool","value":"false","ui":{"label":{"en-US":"Use refresh token"},"type":"checkbox","opts":{}}}],"color":"#A70625","inputLabels":["client and user credentials"],"outputLabels":["Miele reponse object"],"icon":"font-awesome/fa-key","status":{"x":1221,"y":254,"wires":[{"id":"ccdd1aa3.d7afe8","port":0},{"id":"afceb2f2.d18f3","port":0},{"id":"4400b51a.44eacc","port":0}]}},{"id":"7742f9f5.4a43e8","type":"change","z":"24092027.ab82","name":"get env","rules":[{"t":"set","p":"vg","pt":"msg","to":"vg","tot":"env"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":63,"wires":[["cbba5ff0.57a32"]]},{"id":"e44fd735.4b89a8","type":"switch","z":"24092027.ab82","name":"ok?","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"200","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":774,"y":143,"wires":[["ccdd1aa3.d7afe8","430fd0da.a6602"],["32c1a07f.b3aaa"]]},{"id":"32c1a07f.b3aaa","type":"function","z":"24092027.ab82","name":"throw error","func":"node.error('http error: ' + msg.payload.message, msg)\nreturn msg\n","outputs":1,"noerr":0,"x":934,"y":223,"wires":[["afceb2f2.d18f3"]]},{"id":"afceb2f2.d18f3","type":"template","z":"24092027.ab82","name":"error  http","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload.message}}\"}","output":"json","x":1081,"y":223,"wires":[[]]},{"id":"ccdd1aa3.d7afe8","type":"template","z":"24092027.ab82","name":"ok!","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"green\",\"shape\":\"dot\",\"text\":\"ok!\"}","output":"json","x":1091,"y":183,"wires":[[]]},{"id":"4400b51a.44eacc","type":"template","z":"24092027.ab82","name":"error input","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"error: {{payload}}\"}","output":"json","x":360,"y":258,"wires":[[]]},{"id":"85119bed.21b168","type":"function","z":"24092027.ab82","name":"verify input","func":"// verify bearer & msg properties\nif (!msg.username) {\n    node.error('msg.username not defined', msg)\n    return [null, {payload:'msg.username not defined'}]\n}\nif (!msg.password){\n    node.error('msg.password not defined', msg)\n    return [null, {payload:\"msg.password not definedd\"}]\n}\nif (!msg.clientId){\n    node.error('msg.clientId not defined', msg)\n    return [null, {payload:\"msg.clientId not defined\"}]\n}\nif (!msg.clientSecret){\n    node.error('msg.clientSecret not defined', msg)\n    return [null, {payload:\"msg.clientSecret not defined\"}]\n}\nreturn [msg, null]","outputs":2,"noerr":0,"x":160,"y":63,"wires":[["7742f9f5.4a43e8"],["4400b51a.44eacc"]]},{"id":"994c115f.0117b","type":"template","z":"24092027.ab82","name":"create body new","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"grant_type=password&username={{username}}&password={{password}}&client_id={{clientId}}&client_secret={{clientSecret}}&vg={{vg}}","output":"str","x":527,"y":103,"wires":[["a1d20301.4f124"]]},{"id":"a1d20301.4f124","type":"change","z":"24092027.ab82","name":"define url, headers","rules":[{"t":"set","p":"url","pt":"msg","to":"https://api.mcs3.miele.com/thirdparty/token/","tot":"str"},{"t":"set","p":"headers","pt":"msg","to":"{\"Content-Type\":\"application/x-www-form-urlencoded\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":754,"y":63,"wires":[["d782c3de.6219"]]},{"id":"d782c3de.6219","type":"http request","z":"24092027.ab82","name":"","method":"POST","ret":"obj","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":774,"y":103,"wires":[["e44fd735.4b89a8"]]},{"id":"98c0b90e.acfad8","type":"comment","z":"24092027.ab82","name":"Miele only supports form encoded","info":"","x":530,"y":23,"wires":[]},{"id":"430fd0da.a6602","type":"change","z":"24092027.ab82","name":"","rules":[{"t":"set","p":"system_bearerMiele","pt":"global","to":"payload.access_token","tot":"msg"},{"t":"set","p":"system_refreshMiele","pt":"global","to":"payload.refresh_token","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1001,"y":136,"wires":[[]]},{"id":"6fe89867.753478","type":"template","z":"24092027.ab82","name":"create body refresh","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"grant_type=refresh_token&refresh_token={{global.system_refreshMiele}}&client_id={{clientId}}&client_secret={{clientSecret}}&vg={{vg}}","output":"str","x":537,"y":63,"wires":[["a1d20301.4f124"]]},{"id":"cbba5ff0.57a32","type":"switch","z":"24092027.ab82","name":"","property":"doRefresh","propertyType":"env","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":360,"y":103,"wires":[["6fe89867.753478"],["994c115f.0117b"]]},{"id":"dea3f134.ddc37","type":"inject","z":"91448cef.2efc9","name":"trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":91,"y":150,"wires":[["6ac23f94.dc3d"]]},{"id":"feb96bef.d13c48","type":"comment","z":"91448cef.2efc9","name":"B. get information about all devices","info":"","x":147,"y":117,"wires":[]},{"id":"df69bc9f.4c2d5","type":"debug","z":"91448cef.2efc9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":748,"y":400,"wires":[]},{"id":"754625fb.8865fc","type":"inject","z":"91448cef.2efc9","name":"","topic":"","payload":"000149287451","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":124,"y":323,"wires":[["33b22f76.f4038"]]},{"id":"2ecedcf0.da0db4","type":"comment","z":"91448cef.2efc9","name":"C. get all information about one specifc device","info":"","x":175,"y":289,"wires":[]},{"id":"7a654d71.f942e4","type":"comment","z":"91448cef.2efc9","name":"D. get all actions of one specific device - depend on the current state of the device","info":"","x":285,"y":615,"wires":[]},{"id":"45bd620f.4b086c","type":"comment","z":"91448cef.2efc9","name":"A. get new bearer  - also do refresh token","info":"","x":165,"y":20,"wires":[]},{"id":"fed8fd9e.68c2d","type":"inject","z":"91448cef.2efc9","name":"trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":87,"y":53,"wires":[["f5ecdf57.03ab1"]]},{"id":"a048c655.ec1f78","type":"subflow:24092027.ab82","z":"91448cef.2efc9","name":"","env":[{"name":"language","value":"de","type":"str"},{"name":"clientId","value":"xx","type":"str"},{"name":"clientSecret","value":"xxx","type":"str"},{"name":"username","value":"xxxxx","type":"str"},{"name":"password","value":"xxxxxx","type":"str"}],"x":391,"y":53,"wires":[["df69bc9f.4c2d5"]]},{"id":"f5ecdf57.03ab1","type":"credentials","z":"91448cef.2efc9","name":"","props":[{"value":"username","type":"msg"},{"value":"password","type":"msg"},{"value":"clientId","type":"msg"},{"value":"clientSecret","type":"msg"}],"x":230,"y":53,"wires":[["a048c655.ec1f78"]]},{"id":"6ac23f94.dc3d","type":"subflow:ea970db4.5106b","z":"91448cef.2efc9","name":"","env":[],"x":254,"y":150,"wires":[["df69bc9f.4c2d5"]]},{"id":"33b22f76.f4038","type":"subflow:aeba9414.6f40a8","z":"91448cef.2efc9","name":"","env":[{"name":"language","value":"de","type":"str"}],"x":305,"y":323,"wires":[["df69bc9f.4c2d5"]]},{"id":"bc574599.2b5938","type":"comment","z":"91448cef.2efc9","name":"C. get current status of a specifc device","info":"","x":155,"y":443,"wires":[]},{"id":"8912f7bb.095be8","type":"inject","z":"91448cef.2efc9","name":"","topic":"","payload":"000149287451","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":124,"y":476,"wires":[["9100eaf.d08d818"]]},{"id":"9100eaf.d08d818","type":"subflow:aeba9414.6f40a8","z":"91448cef.2efc9","name":"","env":[{"name":"language","value":"de","type":"str"}],"x":305,"y":476,"wires":[["ffb4b516.d45be8"]]},{"id":"d4f62349.a5a59","type":"comment","z":"91448cef.2efc9","name":"C. get current device type of a specifc device","info":"","x":175,"y":367,"wires":[]},{"id":"3eee5c2a.855a04","type":"inject","z":"91448cef.2efc9","name":"","topic":"","payload":"000149287451","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":124,"y":400,"wires":[["2640e37d.d5b69c"]]},{"id":"2640e37d.d5b69c","type":"subflow:aeba9414.6f40a8","z":"91448cef.2efc9","name":"","env":[{"name":"language","value":"de","type":"str"}],"x":305,"y":400,"wires":[["35daca5.d3adb36"]]},{"id":"1e76a8e5.b32bc7","type":"comment","z":"91448cef.2efc9","name":"B. get device id of first device","info":"","x":125,"y":191,"wires":[]},{"id":"4590828c.8b3f2c","type":"inject","z":"91448cef.2efc9","name":"trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":224,"wires":[["472d288e.030668"]]},{"id":"472d288e.030668","type":"subflow:ea970db4.5106b","z":"91448cef.2efc9","name":"","env":[],"x":251,"y":224,"wires":[["d960c503.4130c8"]]},{"id":"d960c503.4130c8","type":"function","z":"91448cef.2efc9","name":"id first object","func":"msg.payload = msg.payload[Object.keys(msg.payload)[0]].ident.deviceIdentLabel.fabNumber\nreturn msg;","outputs":1,"noerr":0,"x":433,"y":224,"wires":[["df69bc9f.4c2d5"]]},{"id":"80c862b8.062ff","type":"comment","z":"91448cef.2efc9","name":"C. get remaining time of specific device","info":"","x":155,"y":520,"wires":[]},{"id":"c47bb64d.541918","type":"inject","z":"91448cef.2efc9","name":"","topic":"","payload":"000149287451","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":124,"y":553,"wires":[["77c1288.984c0d8"]]},{"id":"77c1288.984c0d8","type":"subflow:aeba9414.6f40a8","z":"91448cef.2efc9","name":"","env":[{"name":"language","value":"de","type":"str"}],"x":305,"y":553,"wires":[["5dfa60dc.87fc8"]]},{"id":"5dfa60dc.87fc8","type":"change","z":"91448cef.2efc9","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.state.remainingTime[0]*60 + payload.state.remainingTime[1] &  \" min\"","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":491,"y":553,"wires":[["df69bc9f.4c2d5"]]},{"id":"35daca5.d3adb36","type":"change","z":"91448cef.2efc9","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.ident.type.value_localized","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":491,"y":400,"wires":[["df69bc9f.4c2d5"]]},{"id":"ffb4b516.d45be8","type":"change","z":"91448cef.2efc9","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.state.status.value_localized","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":491,"y":476,"wires":[["df69bc9f.4c2d5"]]},{"id":"f278936b.e797","type":"subflow:4ae29caa.8056e4","z":"91448cef.2efc9","name":"","env":[{"name":"language","value":"de","type":"str"}],"x":295,"y":648,"wires":[["df69bc9f.4c2d5"]]},{"id":"9c8e0be2.1c8a58","type":"inject","z":"91448cef.2efc9","name":"","topic":"","payload":"000149287451","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":124,"y":648,"wires":[["f278936b.e797"]]},{"id":"c0e959c7.d684f8","type":"comment","z":"91448cef.2efc9","name":"E. execute command set name {\"deviceName\":\"My_Devicename\"}","info":"","x":245,"y":708,"wires":[]},{"id":"b7906361.bd13b","type":"inject","z":"91448cef.2efc9","name":"trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":94,"y":740,"wires":[["21e8e59.be3271a"]]},{"id":"bba95584.0ba288","type":"subflow:ad607e01.511ea","z":"91448cef.2efc9","name":"","env":[{"name":"language","value":"de","type":"str"}],"x":423,"y":740,"wires":[["df69bc9f.4c2d5"]]},{"id":"6f3d8c02.c4ff64","type":"subflow:ad607e01.511ea","z":"91448cef.2efc9","name":"","env":[],"x":423,"y":821,"wires":[["df69bc9f.4c2d5"]]},{"id":"488026b0.68fa38","type":"comment","z":"91448cef.2efc9","name":"E. execute command stop {\"processAction\":2}","info":"","x":175,"y":788,"wires":[]},{"id":"21e8e59.be3271a","type":"change","z":"91448cef.2efc9","name":"machine id, action","rules":[{"t":"set","p":"payload","pt":"msg","to":"000149287451","tot":"str"},{"t":"set","p":"action","pt":"msg","to":"{\"deviceName\":\"hkMiele\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":249,"y":740,"wires":[["bba95584.0ba288"]]},{"id":"7ab1b56e.a9c78c","type":"inject","z":"91448cef.2efc9","name":"trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":94,"y":821,"wires":[["c54123db.3130e"]]},{"id":"c54123db.3130e","type":"change","z":"91448cef.2efc9","name":"machine id, action","rules":[{"t":"set","p":"payload","pt":"msg","to":"000149287451","tot":"str"},{"t":"set","p":"action","pt":"msg","to":"{\"processAction\":2}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":249,"y":821,"wires":[["6f3d8c02.c4ff64"]]}]```