Viessmann API und Node-Red - Teil 1

Dies ist eine eigene Serie in meinem Blog, die sich an Besitzer von Viessmann Wärmeerzeugern und sonstigen Geräten dieses Herstellers richtet, welche mit dem Internet verbunden sind.

Überblick

Prinzipiell sind alle neueren Viessmann Steuerungen mit E3 Plattform oder  Vitotronic  (außer Vitotronic 100) dafür ausgelegt, mit dem Internet verbunden zu werden.

Die Variantenvielfalt der Viessmann Geräte ist schier unendlich. Die meisten Hinweise in diesem Blog gelten trotzdem für alle Arten von ViCare bzw. Viessmann API Implementationen. Auf einzelne Modelle einzugehen, würde zu weit führen, zumal ich mich primär nur mit meiner eigenen Heizanlage auskenne.

Die Verbindung ins Internet geschieht bei den sogenannten Legacy Geräten über eine optische Schnittstelle namens Optolink - ein Stecker steckt im Viessmann "V" an der Vorderseite des Geräts und ist mit dem Vitoconnect Kästchen verbunden. Bei den neueren One Base (E3) Geräten  erfolgt die Internetverbindung direkt mit der integrierten  WiFi Connectivity des Geräts - z.B. bei Gasheizgeräten ab  Baujahren ab ca. 2020. Kompatibilitätsliste siehe hier (bei unterstützte Regelungen).

Otto Normalverwender wird derartige Anlagen meist über die ViCare App auf dem Handy kontrollieren und steuern. Das funktioniert, indem die Anlage über das Vitoconnect- oder integrierte Interface eine Internetverbindung zu den Viessmann Servern aufbaut und diese dann  mit ViCare App auf dem Mobiltelefon kommmunizieren. Kommunikation "über Bande" sozusagen.

Viessmann ist hier also immer "the man in the middle".  Das hat dann auch den Vorteil, dass die eigene Heizung von überall auf der Welt angefunkt werden kann, ohne dass man irgendwelche Ports am Router freischalten muss. Bei den millionenfach verbauten IP Überwachungskameras, Rasenmäh- und Putzrobotern funktioniert das genauso.

Manche sehen das auch kritisch, weil Viessmann so eine Menge über unser Heiz- und Kühlverhalten lernt. Ich habe allerdings den Eindruck, dass sich besonders diejenigen darüber aufregen, welche bedenkenlos Whatsapp, Facebook, Tiktok 😖, Google Search und Maps oder Youtube verwenden. Immerhin stehen die Server nicht in China.

Die kommerzielle Seite, nämlich, dass man unter Umständen für das Beziehen seiner eigenen Daten Geld bezahlen muss, sehe ich allerdings auch ausgsprochen kritisch.

Großartige Sorgen um die Sicherheit der Daten mache ich mir weniger. Der Zugang zu den Viessmann Servern ist ziemlich vernagelt und wohl nur schwer zu knacken - aber wer weiß...

Viessmann API

Irgendwann ist man bei Viessmann wohl auf die Idee gekommen, das Application Program Interface (API) öffentlich zugänglich zu machen, um allen, die sich intensiver mit Internet of Things beschäftigen, eine Möglichkeit zur Integration zu bieten. Hierfür gibt es auch eine Reihe von Schnittstellen zu Hausautomatisierungslösungen wie FHEM, Open Hab, Home Assistant, Homematic und so weiter.

Das Ganze funktioniert wieder ähnlich wie bei der ViCare App. Die IoT Lösung zuhause funkt den oder die Viessmann Server an, holt sich Daten, verarbeitet diese und stellt sie dar. Ebenso können die Parameter der Anlage (Temperaturen oder Betriebsmodi) eingestellt werden. Auch hier also wieder der "Viessmann in the middle" - rein lokale, inoffizielle  Lösungen unter Umgehung der Viessmann Server gibt es zwar auch aber die sind meiner Meinung nach nicht so ausgereift und von der Umsetzung her sehr viel anspruchsvoller.

Die kostenfreien Basisfunktionen der API reichen für die meisten Anwendungsfälle aus, weitergehende Abfragen und Funktionen können kostenpflichtig (ViCare+) hinzubestellt werden.

Node-Red

Ich persönlich finde die fertigen Haus Automatisierungssysteme etwas zu komplex und mächtig für meine kleinen Smart Home Anwendungen. Außerdem sind die Smart Home Systeme oft nur mit proprietären Protokollen und Aktoren (Schaltern, Sensoren etc.) und extra Gateway verwendbar und so bei kleinen IoT Installationen auch relativ teuer.

Meine Ansprüche sind deutlich geringer. Mein IoT Zoo enthält neben den üblichen Basteleien mit Shelly Schaltern (über WiFi), selbstgelöteten WiFi Sensoren auf Basis ESP8266, MQTT als Datenprotokoll, einen Raspberry Pi als "Gehirn" mit Node-Red als universeller und leicht erlernbarer Programmierplattform. So bleibt alles unter meiner Kontrolle. Zusätzlich zur Vitodens 200-W B2HB Therme mit VitoConnect Opto2 habe ich noch drei Viessmann Solarthermie Panels, einen Hoxter Heizkamin und einen Viessmann (Italia) Solarcell HSK 1000 Liter Kombispeicher.

Node-Red ist ein graphisches Entwicklungstool zum Programmieren von Abläufen. Es ist wunderbar auf einem Raspberry Pi (ab Pi Zero) lauffähig, wobei ich komplexere Anwendungen eher auf einem Pi 3B+ oder Pi 4B laufen lassen würde.

Neue Raspberry Pi sind zur Zeit (Anfang 2023) leider Mangelware. Ich empfehle, hier auf eBay auszuweichen und sich ein gebrauchtes Teil zu kaufen.

Ferner empfehle ich, dass der Raspberry Pi mit einer SSD Festplatte versehen wird, wenn man einmal über das Experimentierstadium hinaus ist. Allermindestens sollte eine 32GB  oder 64GB SD Karte verwendet werden. Unsere Software Komponenten schreiben jede Menge Logs auf die "Platte". Auch wenn diese Logs nach einiger Zeit gelöscht werden, eine SD Karte verträgt  nur eine begrenzte Anzahl von Lösch-/Schreibzyklen. Bei einer großen Kapazität sorgt das Disk Management für eine bessere Verteilung. Statt einer SSD Festplatte kann man auch einen USB Stick mit entsprechender Kapazität verwenden. Wie Datenträger am USB Port eingerichtet werden, steht vielfach beschrieben im Internet.

Die Ablauflogik wird über Drag & Drop von sogenannten Nodes (Knoten) realisiert, komplexere Operationen werden in Javascript Funktionsblöcken implementiert. Allgemeine Programmierkenntnisse (z.B. Python oder BASIC) braucht man schon, Javascript ist dem sehr ähnlich und man kommt relativ schnell damit zurecht. Zudem unterstützt der Editor beim Erstellen von Funktionen, indem er auf Fehler hinweist. Gewöhnungsbedürftig ist, dass Zeilen in der Regel mit einem Semikolon abgeschlossen werden müssen. Ferner müssen Variablen immer vorher mit var oder let definiert werden. Dafür ist Javascript ausgesprochen tolerant bei Variablentypen wie String oder Float.

Das Schöne ist, dass es bei Node-Red bereits existierende Verknüpfungen (Interface-Nodes) mit dem Raspberry Pi (GPIO), dem MQTT Protokoll, One Wire Sensoren, Datenbanken und externen Diensten (Wetter,  Astronomie etc.) gibt. Die selbst entwickelten Logiken bzw. Abläufe lassen sich über ein Dashboard visualisieren. Auch einfache Diagramme zur Wertedarstellung sind möglich. Wenn man etwas tiefer einsteigt, sind wirklich sehr hübsche und funktionale Panels realisierbar.

Der erste Schritt ist die Installation von Node-Red auf dem Raspberry Pi. Das Ganze ist hier sehr gut (auf englisch) beschrieben: https://nodered.org/docs/getting-started/raspberrypi

Weiterführende Tutorials gibt es tonnenweie (meist auf englisch) im Internet.

Mein Energie-Dashboard mit Heizkreis-Temperatureinstellung

Geplant bzw. verfügbar sind in diesem Blog folgende Artikel:

 

5 Gedanken zu „Viessmann API und Node-Red - Teil 1

  1. Hallo, sehr spannender Ansatz! Und tolle Beschreibungen!
    Seit ein paar Tagen läuft unsere WP und die Möglichkeiten der ViCare App scheinen doch sehr beschränkt zu sein. Grafische Auswertung oder Anzeige von Verläufen gibt's wohl erst mit der Plus Version!?

    Gibt es Erfahrung inwieweit es möglich ist per NR/MQTT die Heizkreispumpen zu schalten? Hintergrund: wir haben einen ungeregelten Heizkreis für Zusatz-Wandheizkörper in den Bäder. Da nutzt die normale Steuerung über Heizkurve und Zeitplan nicht, sondern es sollte ein Zeitplan wie für die Zirkulationspumpe sein (EIN/AUS nach Zeitplan). Aber das wird Viessmann wohl nicht in der App zur Verfügung stellen.
    Gibt es Möglichkeiten zum Schalten der Pumpen?

    1. Hallo,
      schön, wenn dir meine Seite gefällt. Ja, Viessmann Vicare ist in Bezug auf langfristige Auswertungen etwas eingeschränkt. Mit dem, was ich hier fabriziert habe, bekommst zu zwar nicht unbedingt mehr oder andere Daten aus deiner Heizanlage aber du kannst die wenigstens schön auswerten. Siehe auch den Screenshot von meinem Dashboard.
      Autonome 230V Pumpen könntest du z.B. mit Shelly Aktoren (Shelly 1 oder Shelly Plus Plug und andere) oder Schaltaktoren anderer Hersteller steuern. Die Shelly Teile können auch MQTT und sind somit auch z.B. über Node Red steuerbar. Wenn du die Shelly Cloud Funktionen nutzt, kannst du Zeitpläne direkt in den Shellies hinterlegen. In die ViCare App kannst du so etwas allerdings nicht integrieren.
      Wenn du Fragen hast, einfach über die Kommentarfunktion oder, wenn off-topic, über E-Mail melden. Meine E-Mail Adresse findest du im Impressum meiner Seite - aus Anti Spam Gründen als Grafik.
      Viele Grüße
      Chris

      1. Danke für Deine Antwort.
        Bzgl. des Schaltens: Es geht mir nicht um das Schalten von Geräten "außerhalb" des VI-Systems, sondern um das Schalten einer Heizkreispumpe der Viessmann-WP-Anlage. Mit Shelly oder Tasmota Geräte zu arbeiten ist klar, das läuft problemlos bei mir.

        Aber im Moment hapert es total am Start mit der Viessmann API. Alle verschiedenen Login bzw. Generierung von AccessCode Versuchen schlagen fehl.
        Selbst Dein Flow auf der Seite /1_zugang_api/ (mit Anpassung für generiertem ClientID) schlägt fehl.
        Ich arbeite mit Raspberry/headless/SSH Zugang und einem Linux auf dem "PC". Kann das ein Problem hier sein?
        Auf dem Raspberry habe ich auch schon das Verzeichnis "authcode" eingerichtet:
        drwxr-xr-x 2 pi pi 4096 Nov 11 18:48 authcode
        Raspbian GNU/Linux 11 (bullseye) / Node-RED version: v3.0.2

        Mir fällt iM nix mehr ein, hast du Vorschläge?

        1. Hallo,
          dann hatte ich das wohl missverstanden. Es gibt meines Wissens keine Möglichkeit, externe Heizkreise auf einfachem Weg in die Vitotronic Steuerung (bzw. ViCare) einzubinden. Umwälzpumpen werden meiner Erfahrung sowieso nie direkt vom Endkunden an- und ausgeschaltet sondern werden im Verbund mit einem "geheimen" Algorithmus gesteuert. Ich bin aber auch kein Heizungsbauer...
          Bzgl. des Verzeichnisses /authcode (der Name ist beliebig) liegt ein Missverständnis vor. Dieses Verzeichnis musst du nicht selbst anlegen, das bringt auch nichts. Dieses Verzeichnis ist rein virtuell und quasi ein Empfangsbriefkasten von Node Red.
          Das Verzeichnis wird von einem "http in" Node von NR angelegt und existiert nur virtuell im Speicher.
          Wie ich in meiner gestern upgedateten Beschreibung geschrieben habe, musst du für den ersten Test ersteinmal die ersten drei Nodes verwenden und dabei den "http request" node entsprechend der Beschreibung konfigurieren. Das alleine reicht aber noch nicht! Erst mit den in der Beschreibung folgenden drei Nodes ("http in" Node genannt [get]/authcode), Response und dem Debug Node kannst du die Geschichte testen - wenn alles klappt enthalten die Debug Nodes den Authorization Code.
          First Steps
          Bei Fragen bitte melden und das Problem genau bescheiben.
          Den Raspberry Pi über SSH und Putty o.ä. vom PC aus zu bedienen ist völlig normal und der Standardfall. Ich mache nichts Anderes.
          VG
          Chris

          Nachtrag: Man sollte kurz vor Mitternacht keinen Kommentar mehr verfassen. Ich möchte deshalb meine obige Aussage bzgl. Integration weiterer Heizkreise präzisieren: Ohne Kenntnis von deiner Heizanlage zu haben würde ich sagen: Kommt darauf an:
          Sollte der Zusatz Heizkreis bereits in der Steuerung integriert sein, kannst du das problemlos über ViCare einrichten. Heizkreistemperatur "normal" auf die Wunschtemperatur einstellen, Heikreistemperatur "reduziert" auf einen niedrigen Wert (vllt. 7°C) einstellen und dann über den Heizzeiten Assistenten die Zeiten einstellen, zu denen die Zusatz Heizkörper warm sein sollen.
          Ansonsten mal im Viessmann Forum https://www.viessmann-community.com/ nachfragen.

  2. Wie im richtigen Leben 😉 Man trifft nicht oft jemanden der einen versteht, aber im Grunde verfolge ich die gleiche "Strategie" in Bezug auf mein "SmartHome" und eben auch auf die Viessmann-API. Die Heizung ist/war nicht mein "zentrales" Problem wohl aber das kostspieligste und so wird es zwangsläufig zu Einem!
    Habe trotz WP (noch) keinen Smartzähler und so lag der Gedanke nicht weit endlich den "alten" SmartPi (V1!) aus der Schublade zu holen, läuft zur Zeit auf RasPi2 (wegen Stromverbrauch), WLAN nützt im Metallschaltschrank wenig 😉 ) aber immerhin war auch schon NodeRed und MQTT in der "Firmware" vorgesehen, mit 2 x 16 LCD-Matrix sieht das ganze aus wie ein richtiger Zähler und man kann sich an diesem Projekt mit "echten" Problemen so richtig mit NodeRed austoben bzw. viel lernen. Z.B. eine "Bedienoberfläche" und eben viel mehr zu kreieren, incl. RasPi Systemparameter (u.a. Temp, RAM sowie Reset und Shutdown) 🙂 Als "SmartHome" ist (nicht nur erstmal) der ioBroker vorgesehen, nicht zuletzt durch die relativ einfache Unterstützung der "Tasmota" (Sonoff) -Welt die kostengünstig eine sehr breite Palette von Sensoren und Aktoren ermöglicht aber auch all die anderen Adapter mit ihren fantastischen Möglichkeiten incl. der Viessman-API. Freu mich auf mehr 🙂

Schreibe einen Kommentar

Ich freue mich über Lob und Kritik.
Falls du Probleme mit der hier vorgestellten Anleitung hast und nicht weiter kommst:
Bitte das Problem oder die Fehlermeldung(en) möglichst genau beschreiben, auch an welcher Stelle (z.B. in welchem Node oder Befehl) und unter welchen Umständen der Fehler auftritt.
Gerne kannst du mir auch ein Mail schreiben. Die Adresse findest du im Impressum.
Ich gebe mir viel Mühe, meinen Lesern weiterzuhelfen. Je konkreter du bist, desto einfacher und schneller kann ich versuchen zu helfen.
Deine E-Mail-Adresse wird nicht veröffentlicht.
Erforderliche Felder sind mit * markiert