{"id":2694,"date":"2024-03-16T14:38:07","date_gmt":"2024-03-16T13:38:07","guid":{"rendered":"https:\/\/www.rustimation.eu\/?p=2694"},"modified":"2024-12-13T18:48:54","modified_gmt":"2024-12-13T17:48:54","slug":"viessmann-api-und-node-red-die-leidige-zirkulation","status":"publish","type":"post","link":"https:\/\/www.rustimation.eu\/index.php\/viessmann-api-und-node-red-die-leidige-zirkulation\/","title":{"rendered":"Viessmann API und Node Red \u2013 Teil 9 \u2013 Steuern der Warmwasser Zirkulationspumpe \u00fcber die API"},"content":{"rendered":"<h2>Die leidige Zirkulation<\/h2>\n<h3>Vergeudete Energie<\/h3>\n<p>Eigenheimbesitzer kennen das Problem: will man in einer entlegeneren Ecke des Hauses oder der Wohnung Warmwasser zapfen, dauert es eine Weile, bis es warm wird. Abhilfe schafft die Warmwasserzirkulation, die das warme Wasser st\u00e4ndig im Kreis durchs ganze Haus schickt.<\/p>\n<p>Das spart zwar Wasser, verschwendet aber Energie, weil W\u00e4rme \u00fcber die Leitung verloren geht. Das l\u00e4ppert sich: Unter Umst\u00e4nden gehen so pro Jahr 1 MWh und mehr verloren, was je nach Energiekosten 500\u20ac und mehr pro Jahr ausmachen kann. Um so mehr bei l\u00e4ngerer Abwesenheit oder schlecht isolierten Zirkulationsleitungen.<\/p>\n<p><!--more--><\/p>\n<h3>Expertenmeinung<\/h3>\n<p>Hierzu gibt es auch einen interessanten Artikel, den ich im Netz gefunden habe: <a href=\"https:\/\/www.ikz.de\/uploads\/media\/Brauchwasser.pdf\" target=\"_blank\" rel=\"noopener\">https:\/\/www.ikz.de\/uploads\/media\/Brauchwasser.pdf<\/a><\/p>\n<p>Au\u00dferdem empfehle ich euch, noch folgendes YT Video von Andreas Schmitz anzuschauen: <a href=\"https:\/\/www.youtube.com\/watch?v=kPwMIsA0chc\" target=\"_blank\" rel=\"noopener\">https:\/\/www.youtube.com\/watch?v=kPwMIsA0chc<\/a><\/p>\n<h2>Was tun?<\/h2>\n<ul>\n<li>Zirkulation abschalten oder gar nicht erst einbauen lassen.<br \/>\nJe nach Wasserpreis die wahrscheinlich g\u00fcnstigste L\u00f6sung &#8211; au\u00dfer man lebt in Spanien oder anderen Gegenden, in denen Wasser sehr kostbar ist. Nat\u00fcrlich entsteht ein Komfortverlust, den eventuell nicht alle Familienmitglieder mittragen wollen.<br \/>\nGgf. droht die\u00a0 Verkeimung des Brauchwassers durch Stagnation in den Rohren.<\/li>\n<li>Festes Zeitprogramm<br \/>\nZum Beispiel von 6:00 Uhr bis 21:00 Uhr gibt's sofort warmes Wasser, sonst dauert es ein bisschen.<br \/>\nBei l\u00e4ngerer Abwesenheit k\u00f6nnte man die Pumpe manuell ausschalten &#8211; wenn Viessmann diese Funktion h\u00e4tte &#8211; hamse abba nich!<br \/>\nUmprogrammieren ist umst\u00e4ndlich &#8211; macht kaum einer.<\/li>\n<li>Bedarfsweises Einschalten der Zirkulation<br \/>\nHier gibt es sehr interessante, fast schon KI getriebene L\u00f6sungen, die auch in dem oben verlinkten Artikel beschrieben sind.<br \/>\nOder alternativ \u00fcber einen externen Schalter (Shelly o.\u00e4.).<\/li>\n<li>Oder durch kurzfristiges<strong> Umstellen des Zirkulationsplans in ViCare mittels der hier beschriebene L\u00f6sung<\/strong> &#8211; kostet erstmal nichts, kann beliebig mit weiteren Features erg\u00e4nzt werden.<\/li>\n<\/ul>\n<h2>Kurzzeitige Plan\u00e4nderung<\/h2>\n<p>Das API Feature hei\u00dft <span class=\"lang:default decode:true crayon-inline \">heating.dhw.pumps.circulation.schedule<\/span><\/p>\n<p><strong>Viessmann bietet keine direkte Schaltm\u00f6glichkeit<\/strong> f\u00fcr die Z-Pumpe an! Man muss also hilfsweise den gesamten Plan (die Schedule) umstellen (Stand M\u00e4rz 2024).<\/p>\n<h3>Aktuellen Plan wegsichern<\/h3>\n<p>Hat man sich einen komplexen Z-Plan \u00fcberlegt und m\u00fchevoll mit der App aktiviert, will man diesen nat\u00fcrlich nicht verlieren, wenn eine tempor\u00e4re Plan\u00e4nderung eingestellt werden soll. Das Sichern geschieht wie folgt:<a href=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_10_44-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2695 size-full\" src=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_10_44-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox.png\" alt=\"\" width=\"1204\" height=\"129\" srcset=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_10_44-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox.png 1204w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_10_44-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox-300x32.png 300w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_10_44-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox-1024x110.png 1024w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_10_44-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox-768x82.png 768w\" sizes=\"auto, (max-width: 1204px) 100vw, 1204px\" \/><\/a>Den Universal Header Function Node kennt ihr schon. Anschlie\u00dfend wird nur die Schedule und nicht das gesamte Featureset geholt, aus dem JSON ausgelesen und in einer Textdatei gespeichert.<\/p>\n<p>Wenn ihr an der in den vorherigen Kapiteln beschriebenen Benennung der Kontextvariablen (flow.xxx) nichts ge\u00e4ndert habt, braucht ihr an dem Flow nichts weiter \u00e4ndern. Der letzte Schritt ist noch, das Unterverzeichnis f\u00fcr die Datei zu definieren: Im Debian Terminal des Raspberry Pi gebt ihr ein <span class=\"lang:default decode:true crayon-inline\">mkdir \/home\/pi\/.node-red\/data<\/span><br \/>\nVorausgesetzt euer NR User hei\u00dft \"pi\".\u00a0 Das war's auch schon. Bei anderen Setups m\u00fcsst ihr selber herausfinden, wo das NR Verzeichnis liegt.<\/p>\n<p>Nachfolgend noch der NR Flow:<\/p>\n<pre class=\"height-set:true height:250 lang:js decode:true\">[\r\n    {\r\n        \"id\": \"307332136dcf9aba\",\r\n        \"type\": \"file\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"store schedule\",\r\n        \"filename\": \"\/home\/pi\/.node-red\/data\/schedule.dat\",\r\n        \"filenameType\": \"str\",\r\n        \"appendNewline\": true,\r\n        \"createDir\": false,\r\n        \"overwriteFile\": \"true\",\r\n        \"encoding\": \"none\",\r\n        \"x\": 1980,\r\n        \"y\": 2600,\r\n        \"wires\": [\r\n            []\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"983a8a37d11bbb84\",\r\n        \"type\": \"function\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"Universal Header\",\r\n        \"func\": \"var atoken = flow.get('accessToken')\\nmsg.headers = {\\n    Authorization: \\\"Bearer \\\"+ atoken\\n}\\nmsg.installationID = flow.get('installationID');\\nmsg.gatewaySerial = flow.get('gatewaySerial');\\nmsg.deviceId = flow.get('deviceID');\\nreturn msg;\\n\\n\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1390,\r\n        \"y\": 2600,\r\n        \"wires\": [\r\n            [\r\n                \"ea11d14313a275cf\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"a19080bc537c55c6\",\r\n        \"type\": \"inject\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"trigger\",\r\n        \"props\": [\r\n            {\r\n                \"p\": \"payload\"\r\n            },\r\n            {\r\n                \"p\": \"topic\",\r\n                \"vt\": \"str\"\r\n            }\r\n        ],\r\n        \"repeat\": \"\",\r\n        \"crontab\": \"\",\r\n        \"once\": false,\r\n        \"onceDelay\": 0.1,\r\n        \"topic\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"date\",\r\n        \"x\": 1210,\r\n        \"y\": 2600,\r\n        \"wires\": [\r\n            [\r\n                \"983a8a37d11bbb84\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"ea11d14313a275cf\",\r\n        \"type\": \"http request\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"get schedule\",\r\n        \"method\": \"GET\",\r\n        \"ret\": \"obj\",\r\n        \"paytoqs\": \"ignore\",\r\n        \"url\": \"https:\/\/api.viessmann.com\/iot\/v1\/features\/installations\/{{installationID}}\/gateways\/{{gatewaySerial}}\/devices\/{{deviceId}}\/features\/heating.dhw.pumps.circulation.schedule\",\r\n        \"tls\": \"\",\r\n        \"persist\": false,\r\n        \"proxy\": \"\",\r\n        \"insecureHTTPParser\": false,\r\n        \"authType\": \"\",\r\n        \"senderr\": true,\r\n        \"headers\": [],\r\n        \"x\": 1590,\r\n        \"y\": 2600,\r\n        \"wires\": [\r\n            [\r\n                \"4da8f020882d3638\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"4da8f020882d3638\",\r\n        \"type\": \"function\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"extract schedule\",\r\n        \"func\": \"msg.payload=msg.payload.data.properties.entries.value; \\nmsg.topic=\\\"dhwCircSched\\\"; \\nreturn msg;\\n\",\r\n        \"outputs\": 1,\r\n        \"timeout\": 0,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1780,\r\n        \"y\": 2600,\r\n        \"wires\": [\r\n            [\r\n                \"307332136dcf9aba\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"4e3ab02d22894671\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"aktuellen Plan sichern\",\r\n        \"info\": \"\",\r\n        \"x\": 1260,\r\n        \"y\": 2560,\r\n        \"wires\": []\r\n    }\r\n]<\/pre>\n<p>&nbsp;<\/p>\n<h3>Gespeicherten Plan wieder herstellen<\/h3>\n<p><a href=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_11_15-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2696\" src=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_11_15-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox.png\" alt=\"\" width=\"1288\" height=\"401\" srcset=\"https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_11_15-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox.png 1288w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_11_15-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox-300x93.png 300w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_11_15-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox-1024x319.png 1024w, https:\/\/www.rustimation.eu\/wordpress\/wp-content\/uploads\/2024\/03\/2024-03-16-13_11_15-Node-RED-_-Viessmann-\u2013-Mozilla-Firefox-768x239.png 768w\" sizes=\"auto, (max-width: 1288px) 100vw, 1288px\" \/><\/a>Aus Effizienzgr\u00fcnden nutzen alle \"Plan \u00e4ndern\" Funktionen dieselben beiden Nodes auf der rechten Seite.<\/p>\n<p>Der Plan wird aus der Datei gelesen. Allerdings liegt dieser im Textformat vor und muss noch etwas erweitert und in JSON konvertiert werden. Das geschieht im <em>schedule JSON<\/em> Funktionsnode:<\/p>\n<pre class=\"lang:js decode:true\">let sched = msg.payload\r\nsched = '{\"newSchedule\":' + sched + '}';\r\nmsg.payload = JSON.parse(sched);\r\nreturn msg;<\/pre>\n<h3>Pumpe komplett ausschalten<\/h3>\n<p>Diese Funktion ist u.a. sinnvoll als standardm\u00e4\u00dfige Einstellung der Zirkulation. Das\u00a0 Einschalten erfolgt dann &#8211; ggf. f\u00fcr nur wenige Minuten &#8211; \u00fcber einen manuellen Befehl oder eine andere Logik. Siehe Kapitel \"<a href=\"https:\/\/www.rustimation.eu\/index.php\/viessmann-api-und-node-red-die-leidige-zirkulation\/#8220Intelligenz8221\">Intelligenz<\/a>\" weiter unten.<\/p>\n<p>Der set <em>schedule \"0\"<\/em> Node sieht wie folgt aus:<\/p>\n<pre class=\"lang:js decode:true \">\/\/L\u00f6sungsidee aus https:\/\/forum.iobroker.net\/topic\/46778\/test-viessmannapi-v2-0-0\/420?_=1663696561218\r\n\r\n\/\/ Plan: Pumpe AUS\r\nvar pump = '{\"newSchedule\":{\"mon\":[], \"tue\":[],\"wed\":[],\"thu\":[],\"fri\":[],\"sat\":[],\"sun\":[]}}' \r\n\r\nmsg.payload = JSON.parse(pump);\r\n\r\nreturn msg;<\/pre>\n<p>Hier wird f\u00fcr jeden Wochentag ein leeres Objekt \u00fcbergeben.<\/p>\n<p>Auch hier macht es Sinn, diese Funktion einige Minuten nach dem Einschalten der Pumpe auszuf\u00fchren; das Wasser in der Leitung ist warm, die Pumpe wird nicht mehr ben\u00f6tigt.<\/p>\n<h3>Pumpe zu bestimmten Zeiten einschalten<\/h3>\n<p>Mit den Einschaltzeiten kann man beliebig spielen. Es k\u00f6nnen auch mehrere Zeiten pro Tag definiert werden. In diesem Beispiel wird die Pumpe tags\u00fcber eingeschaltet: Darauf achten, dass die Minuten immer durch 10 teilbar sind, also 10, 20, 30, etc.<\/p>\n<pre class=\"lang:js decode:true\">\/\/L\u00f6sungsidee aus https:\/\/forum.iobroker.net\/topic\/46778\/test-viessmannapi-v2-0-0\/420?_=1663696561218\r\n\r\n\/\/ Plan: Pumpe an tags\u00fcber - ggf anpassen \r\nvar pump = '{\"newSchedule\":{\"mon\":[{\"start\":\"06:00\",\"end\":\"21:00\",\"mode\":\"on\",\"position\":0}],\"tue\":[{\"start\":\"06:00\",\"end\":\"21:00\",\"mode\":\"on\",\"position\":0}],\"wed\":[{\"start\":\"06:00\",\"end\":\"21:00\",\"mode\":\"on\",\"position\":0}],\"thu\":[{\"start\":\"06:00\",\"end\":\"21:00\",\"mode\":\"on\",\"position\":0}],\"fri\":[{\"start\":\"06:00\",\"end\":\"21:00\",\"mode\":\"on\",\"position\":0}],\"sat\":[{\"start\":\"06:00\",\"end\":\"21:00\",\"mode\":\"on\",\"position\":0}],\"sun\":[{\"start\":\"06:00\",\"end\":\"21:00\",\"mode\":\"on\",\"position\":0}]}}'\r\n\r\nmsg.payload = JSON.parse(pump);\r\n\r\nreturn msg;\r\n<\/pre>\n<p>Und hier die drei \"Plan \u00e4ndern\" Funktionen in einem JSON Flow:<\/p>\n<pre class=\"height-set:true lang:js decode:true\">[\r\n    {\r\n        \"id\": \"71109d791bde5d1a\",\r\n        \"type\": \"file in\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"read schedule\",\r\n        \"filename\": \"\/home\/pi\/.node-red\/data\/schedule.dat\",\r\n        \"filenameType\": \"str\",\r\n        \"format\": \"utf8\",\r\n        \"chunk\": false,\r\n        \"sendError\": false,\r\n        \"encoding\": \"none\",\r\n        \"allProps\": false,\r\n        \"x\": 1440,\r\n        \"y\": 2720,\r\n        \"wires\": [\r\n            [\r\n                \"ec61153bef8c6208\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"ec40ad233db9c172\",\r\n        \"type\": \"inject\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"trigger\",\r\n        \"props\": [\r\n            {\r\n                \"p\": \"payload\"\r\n            },\r\n            {\r\n                \"p\": \"topic\",\r\n                \"vt\": \"str\"\r\n            }\r\n        ],\r\n        \"repeat\": \"\",\r\n        \"crontab\": \"\",\r\n        \"once\": false,\r\n        \"onceDelay\": 0.1,\r\n        \"topic\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"date\",\r\n        \"x\": 1210,\r\n        \"y\": 2720,\r\n        \"wires\": [\r\n            [\r\n                \"71109d791bde5d1a\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"dfc2b8b5f9bf9337\",\r\n        \"type\": \"http request\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"set schedule\",\r\n        \"method\": \"POST\",\r\n        \"ret\": \"txt\",\r\n        \"paytoqs\": \"ignore\",\r\n        \"url\": \"https:\/\/api.viessmann.com\/iot\/v1\/features\/installations\/{{installationID}}\/gateways\/{{gatewaySerial}}\/devices\/{{deviceId}}\/features\/heating.dhw.pumps.circulation.schedule\/commands\/setSchedule\",\r\n        \"tls\": \"\",\r\n        \"persist\": false,\r\n        \"proxy\": \"\",\r\n        \"insecureHTTPParser\": false,\r\n        \"authType\": \"\",\r\n        \"senderr\": false,\r\n        \"headers\": [],\r\n        \"x\": 2070,\r\n        \"y\": 2820,\r\n        \"wires\": [\r\n            []\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"cd43bdcdffc780c7\",\r\n        \"type\": \"function\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"Headers &amp; Parameter\",\r\n        \"func\": \"var atoken = flow.get('accessToken')\\n\\nmsg.headers = {};\\nmsg.headers['content-type'] = 'application\/json';\\nmsg.headers['Authorization'] = \\\"Bearer \\\" + atoken;\\n\\nmsg.installationID = flow.get('installationID');\\nmsg.gatewaySerial = flow.get('gatewaySerial');\\nmsg.deviceId = flow.get('deviceID');\\n\\nreturn msg;\\n\\n\",\r\n        \"outputs\": 1,\r\n        \"timeout\": \"\",\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1860,\r\n        \"y\": 2820,\r\n        \"wires\": [\r\n            [\r\n                \"dfc2b8b5f9bf9337\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"8696147cdc1f5a57\",\r\n        \"type\": \"inject\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"\",\r\n        \"props\": [\r\n            {\r\n                \"p\": \"payload\"\r\n            },\r\n            {\r\n                \"p\": \"topic\",\r\n                \"vt\": \"str\"\r\n            }\r\n        ],\r\n        \"repeat\": \"\",\r\n        \"crontab\": \"\",\r\n        \"once\": false,\r\n        \"onceDelay\": 0.1,\r\n        \"topic\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"date\",\r\n        \"x\": 1220,\r\n        \"y\": 2820,\r\n        \"wires\": [\r\n            [\r\n                \"8d2f4b411ce7d751\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"ec61153bef8c6208\",\r\n        \"type\": \"function\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"schedule JSON\",\r\n        \"func\": \"let sched = msg.payload\\nsched = '{\\\"newSchedule\\\":' + sched + '}';\\nmsg.payload = JSON.parse(sched);\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"timeout\": 0,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1640,\r\n        \"y\": 2720,\r\n        \"wires\": [\r\n            [\r\n                \"cd43bdcdffc780c7\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"f0e6321196d4733c\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"gesicherten Plan aktivieren\",\r\n        \"info\": \"\",\r\n        \"x\": 1270,\r\n        \"y\": 2680,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"d4de2144d70bbb3d\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"Pumpe immer AUS\",\r\n        \"info\": \"\",\r\n        \"x\": 1250,\r\n        \"y\": 2780,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"ae960b9ae438849d\",\r\n        \"type\": \"function\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"set schedule \\\"1\\\"\",\r\n        \"func\": \"\/\/L\u00f6sungsidee aus https:\/\/forum.iobroker.net\/topic\/46778\/test-viessmannapi-v2-0-0\/420?_=1663696561218\\n\\n\/\/ Plan: Pumpe an tags\u00fcber - ggf anpassen \\nvar pump = '{\\\"newSchedule\\\":{\\\"mon\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"tue\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"wed\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"thu\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"fri\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"sat\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"sun\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}]}}'\\n\\n\/\/ Plan: Pumpe AUS\\n\/\/var pump = '{\\\"newSchedule\\\":{\\\"mon\\\":[], \\\"tue\\\":[],\\\"wed\\\":[],\\\"thu\\\":[],\\\"fri\\\":[],\\\"sat\\\":[],\\\"sun\\\":[]}}' \\n\\nmsg.payload = JSON.parse(pump);\\n\\nreturn msg;\\n\\n\\n\\n\",\r\n        \"outputs\": 1,\r\n        \"timeout\": 0,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1440,\r\n        \"y\": 2920,\r\n        \"wires\": [\r\n            [\r\n                \"cd43bdcdffc780c7\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"7a20a29270cfef5b\",\r\n        \"type\": \"inject\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"\",\r\n        \"props\": [\r\n            {\r\n                \"p\": \"payload\"\r\n            },\r\n            {\r\n                \"p\": \"topic\",\r\n                \"vt\": \"str\"\r\n            }\r\n        ],\r\n        \"repeat\": \"\",\r\n        \"crontab\": \"\",\r\n        \"once\": false,\r\n        \"onceDelay\": 0.1,\r\n        \"topic\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"date\",\r\n        \"x\": 1220,\r\n        \"y\": 2920,\r\n        \"wires\": [\r\n            [\r\n                \"ae960b9ae438849d\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"8d2f4b411ce7d751\",\r\n        \"type\": \"function\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"set schedule \\\"0\\\"\",\r\n        \"func\": \"\/\/L\u00f6sungsidee aus https:\/\/forum.iobroker.net\/topic\/46778\/test-viessmannapi-v2-0-0\/420?_=1663696561218\\n\\n\/\/ Plan: Pumpe an tags\u00fcber - ggf anpassen \\n\/\/var pump = '{\\\"newSchedule\\\":{\\\"mon\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"tue\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"wed\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"thu\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"fri\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"sat\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}],\\\"sun\\\":[{\\\"start\\\":\\\"06:00\\\",\\\"end\\\":\\\"21:00\\\",\\\"mode\\\":\\\"on\\\",\\\"position\\\":0}]}}'\\n\\n\/\/ Plan: Pumpe AUS\\nvar pump = '{\\\"newSchedule\\\":{\\\"mon\\\":[], \\\"tue\\\":[],\\\"wed\\\":[],\\\"thu\\\":[],\\\"fri\\\":[],\\\"sat\\\":[],\\\"sun\\\":[]}}' \\n\\nmsg.payload = JSON.parse(pump);\\n\\nreturn msg;\\n\\n\\n\\n\",\r\n        \"outputs\": 1,\r\n        \"timeout\": 0,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"libs\": [],\r\n        \"x\": 1440,\r\n        \"y\": 2820,\r\n        \"wires\": [\r\n            [\r\n                \"cd43bdcdffc780c7\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"cb2e13786812f0f3\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"640d4a161fb8fa28\",\r\n        \"name\": \"Pumpe tags\u00fcber AN\",\r\n        \"info\": \"\",\r\n        \"x\": 1250,\r\n        \"y\": 2880,\r\n        \"wires\": []\r\n    }\r\n]<\/pre>\n<h2>\"Intelligenz\"<\/h2>\n<p>Wir haben jetzt unser R\u00fcstzeug beisammen, um fast beliebige Szenarien zu realisieren.<\/p>\n<ul>\n<li>Manuelles Aus-\/Einschalten<br \/>\nTriviall\u00f6sung \u00fcber einen Button in NR oder \u00fcber eine an NR angeschlossene Fernbedienung (z.B. Shellybutton) oder Alexa. Sinnvoll ist es bei jedem Szenario, die Pumpe nach eine gewissen Laufzeit auch wieder automatisch auszuschalten.<\/li>\n<li>Automatisches Einschalten bei Bedarf<br \/>\nz.B. \u00fcber einen Anlegef\u00fchler an der WW Vorlaufleitung. Wird dort ein Temperaturanstieg bemerkt &#8211; jemand zapft Warmwasser &#8211; wird die Pumpe eingeschaltet, um die Wartezeit zu verk\u00fcrzen.<br \/>\nOder \u00fcber einen PIR Ann\u00e4herungsschalter im Badezimmer oder der Toilette.<br \/>\nOder, oder, oder<\/li>\n<li>Automatisches \"Entkeimen\" der Leitung wenn der WW Speicher gerade auf 60\u00b0C oder mehr aufgeheizt ist. Das Thema Legionellen ist nicht zu untersch\u00e4tzen.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Die leidige Zirkulation Vergeudete Energie Eigenheimbesitzer kennen das Problem: will man in einer entlegeneren Ecke des Hauses oder der Wohnung Warmwasser zapfen, dauert es eine Weile, bis es warm wird. Abhilfe schafft die Warmwasserzirkulation, die das warme Wasser st\u00e4ndig im Kreis durchs ganze Haus schickt. Das spart zwar Wasser, verschwendet aber Energie, weil W\u00e4rme \u00fcber &hellip; <a href=\"https:\/\/www.rustimation.eu\/index.php\/viessmann-api-und-node-red-die-leidige-zirkulation\/\" class=\"more-link\"><span class=\"screen-reader-text\">Viessmann API und Node Red \u2013 Teil 9 \u2013 Steuern der Warmwasser Zirkulationspumpe \u00fcber die API<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53,4,151,190,159],"tags":[126,174],"class_list":["post-2694","post","type-post","status-publish","format-standard","hentry","category-iot","category-json","category-node-red","category-viessmann-api-2","category-viessmann-api","tag-node-red","tag-viessmann-api"],"_links":{"self":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/2694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/comments?post=2694"}],"version-history":[{"count":1,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/2694\/revisions"}],"predecessor-version":[{"id":3210,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/2694\/revisions\/3210"}],"wp:attachment":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/media?parent=2694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/categories?post=2694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/tags?post=2694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}