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" .

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

Alternative lokale Anbindungen

Rein lokale, inoffizielle  Lösungen unter Umgehung der Viessmann Server gibt es  auch, viele sind meiner Meinung nach nicht so ausgereift und generell von der Umsetzung her sehr viel anspruchsvoller. Zwei Lösungen möchte ich dennoch erwähnen:

Optolink Splitter

Der Viessman User HerrP hat im April 2024 seinen Optolink Splitter in der Viessmann Community veröffentlicht, mit dem er eine sehr interessante Lösung zur Offline-Verarbeitung der Viessmann Daten aufzeigt – und das ohne auf VitoConnect zu verzichten.
Leider funktioniert diese Lösung nur für die älteren Viessmann Geräte mit Optolink Schnittstelle.
Das Ganze ist ziemlich genial: Ein Raspberry Pi (o.ä.) wird anstatt des VitoConnect Kästchens an die Optolink Schnittstelle angesteckt und das VitoConnect mit einem USB2TTL Converter an die serielle Schnittstelle des Raspi angeschlossen.
Ein Python Skript auf dem Pi zieht die Daten aus dem Gerät und reicht sie an VitoConnect und/oder per MQTT oder TCP/IP an die Hausautomatisierung weiter.
Die Parametrisierung, d.h. die Adressen der Viessmann Datenpunkte und deren Abfrage bzw. Manipulation ist nicht trivial aber für ambitionierte IoT Bastler lösbar.
Eine umfassende Beschreibung findet sich in Github. Ein Youtube Video gibt's auch.
Ich habe mein Node-Red Dashboard inzwischen komplett auf den Optolink-Splitter umgestellt und habe meine Erfahrungen hier veröffentlicht.

open3e

Hier werden die neueren E3 Geräte über den CAN Bus angesprochen. Informationen gibt's bei der Viessmann Community und/oder Github.

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.

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 besser eine 64GB SD Karte in "Industrial Quality" oder "Max Endurance" verwendet werden (z.B. diese hier). 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 notfalls 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:

 

7 Gedanken zu „Viessmann API und Node-Red – Teil 1

  1. > Manche sehen das auch kritisch, weil Viessmann so eine Menge über unser Heiz- und Kühlverhalten lernt.

    Viessmann ist mir ja egal. Tuya auch.

    > Immerhin stehen die Server nicht in China.

    Das macht es, wie die Erfahrung zeigt, nicht besser.

    Aber aus den Daten kann man sehr schnell An- und Abwesenheit ableiten (am besten sammelt die eigene HA auch noch Standortdaten und fährt brav die Heizung hoch, wenn man auf dem Weg nach Hause ist… Echtzeit-Alarmierung der Einbrecher eingeschlossen). Selbst IKEA ist Tuya-Kunde, ein Vorfall wie der Microsoft-Exchange-Accident und alle, die da irgendwas haben, stehen nackt unter der kalten Regendusche. Am besten monatelang. Und selbst wenn der Hack bemerkt wird: Passwörter kann man ändern, nicht-selbstbestimmte Gegebenheiten (z. B. Arbeitszeiten) weniger. Sind die Daten weg und ausgewertet, hilft das Wissen, daß das danebengegangen ist, nur marginal.

    Wenn ich meine Heizung also vernetze, stecke ich dem Schwein lieber gleich den Stecker in den Rüssel, als es and Internet anzuschließen und darüber abzufragen; da bin ich dann auch bereit, ModBus mit der Heizung zu reden, wenn es sein muß.

    1. Sicher ist nur der Tod.
      In wie weit jemand ein Risiko eingehen will, indem er/sie IoT Geschichten und Cloudsysteme nutzt, muss jeder mit sich selbst ausmachen. Notfalls eben wieder mit Brennholz heizen — aber Vorsicht, der Kramer, bei dem du die Zündhölzer kaufst, führt sicher eine Liste über deinen Zündholzverbrauch 😉

  2. 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.

  3. 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