Viessmann API und Node Red – Teil 4

Einstellungen ändern

Nachdem wir in den vorherigen Kapiteln gelernt haben, wie der Zugriff auf die API erfolgt und wie man Daten daraus auslesen kann, sehen wir jetzt, wie man die Einstellung der Heizung – z.B. die Temperatur oder den Betriebsmodus über die API verändern kann.

Schauen wir uns zuerst einmal das JSON Objekt aus der Feature Abfrage an. Der hier dargestellte Auszug zeigt bzw. setzt die Normaltemperatur des Heizkreises 2 (Feature: heating.circuits.2.operating.programs.normal): Ein Feature fängt immer mit “properties” an und läuft bis zur nächsten “properties” Zeile.

Beispiel: Normaltemperatur Heizkreis 2 einstellen

Die eingestellte Solltemperatur beträgt 17 Grad Celsius – wie man sie ausliest ist im vorigen Kapitel beschrieben.

Jedes Feature, das bei “commands” einen nicht leeren Inhalt hat, kann – theoretisch – manipuliert werden. In unserem Beispiel ist das der Fall. Dort steht "commands": { "setTemperature": {... gefolgt von einer URL und einigen Constraints (Einschränkungen).

Der Parameter “isExecutable” gibt an, ob sich ein Befehl in einem Feature unter den aktuellen Gegebenheiten ausführen lässt oder nicht. Bei “isExecutable” = true lässt sich der Befehl ausführen, ansonsten nicht. Beispiel: Du kannst das Betriebsprogramm “Eco” nicht einstellen, weil sich die Anlage im Standby Modus befindet.

Wie stellen wir nun die Normaltemperatur von Heizkreis 2 ein?

Straight forward

Zuerst kommt der Dashboard Slider Node, den wir so einstellen, dass er “Output only on release” liefert. Der Zielwert steckt jetzt in msg.payload. Der Function Node wird wie folgt programmiert:

bzw. als Javascript Snippet zum copy&paste:

Der http Rquest Node “set feature” enthält die für die Normaltemperatur Heizkreis 2 erforderliche URI:

Fertig! Oder nicht?

Flow Betriebssicher machen

Bedient man das Dashboard mit einem Mobilgerät, kann es schnell passieren, dass man den Slider Temperaturwähler versehentlich verstellt. Das ist natürlich nicht im Sinne des Erfinders. Ich habe deshalb den Slider und den Befehl enkoppelt. Zum Abschicken der neuen Temperatur muss noch ein Bestätigungsbutton geklickt werden.

Das sieht insgesamt wie folgt aus:

Die oberen drei grau unterlegten Nodes aus dem Feature Request hast du sicher schon; sie dienen lediglich der Rückkopplung des aktell in der Heizung eingestellten Werts. Da unsere Applikation ja nicht die einzige Eingabemöglichkeit ist – es gibt ja noch die ViCare App oder die Tasten am Gerät selbst – ist die Rückkopplung sehr wichtig um immer die aktuell geltende Einstellung zu sehen.

Der Function Node mit Namen “HK Soll Temp normal” wird einfach mit dem bereits existierenden “Feature auslesen” http Request verdrahtet. Dieser Node macht nichts Anderes als sich den in der Heizanlage geltenden Wert aus dem JSON File herauszusuchen. Die Logik ist aus dem vorigen Kapitel bekannt.

Danach kommt der Dashboard Slider Node – Einstellung wie oben. Letzter Node in diesem Strang ist noch ein Change Node, der die Flow Variable gemäß des Slider Werts zur Verwendung im nächsten Schritt abspeichert. Wenn nun der Slider bewegt wird, passiert wie gewollt erst einmal nichts. Das geschieht erst im nächsten Schritt, denn erst die unteren drei Nodes nehmen nach dem Auslösen des Dashboard Buttons die Einstellung vor.

Der Dashboard Button Node wird wie unten gezeigt eingestellt – wobei ich die Darstellung des Button Icons geändert habe:

Die Payload enhält die Flow Variable mit der eingestellten Temperatur.

Der Function Node Headers & Parameter sieht fast so aus, wie der beim “straight forward” Beispiel. Lediglich Zeile 2 ist unterschiedlich

Der http Requst Node “Set Feature” ist identisch zum straight forward Beispiel

Und hier noch die Darstellung des Dashboards mit Auswahl Betriebsart, Slider für normale und reduzierte Temperatur. Die gelben “OK Haken” lösen aus.

 

Beispiel: Betriebsart einstellen

Je nach Anlage gibt es mehrere Betriebsarten: Bei mir sind dies Aus, Nur Warmwasser, Zeitprogramm Heizung und Warmwasser, dauernd reduziert und dauernd normal.

Diese stellt man je nach Heizkreis wie folgt ein; in unserem Beispiel für Heizkreis 2:

Im Prinzip funktioniert alles so wie bei der Temperatureinstellung. Der Function Node HK Betriebsart ist wieder die Rückkopplung aus der Feature Abfrage Betriebsart. Die Einstellung erfolgt über einen Dashboard Dropdown Node, der Headers & Parameter Node setzt die Payload auf einen der vorgeschriebenen Werte “mode: standby”,
“mode: dhw”, “mode: dhwAndHeating”, “mode: forcedReduced”, “mode: forcedNormal” .
Der http Request hat die URL https://api.viessmann.com/iot/v1/equipment/installations/{{installationID}}/gateways/{{gatewaySerial}}/devices/{{deviceId}}/features/heating.circuits.2.operating.modes.active/commands/setMode

Das zugehörige JSON File für Node-Red findest du hier:

 

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert