NEWS
Viessmann Heizung mit ESP8266 auslesen und steuern
-
@albert Vielleicht sollten wir dazu erst mit dem ursprünglichen Autor Kontakt aufnehmen. Es muss ja einen Grund geben wieso er es von github entfernt hat. Oder wir müssen alternativ das Projekt codeseitig nochmal komplett neu aufziehen. Ich hatte auch schon überlegt ob es nicht möglich ist das ganze als lib für tasmota zu schreiben?
Gruß Jaschkopf
-
Gute Nachrichten: Ich hab den Lesekopf am D1 Mini am laufen und erfolgreich die ersten Werte im Webinterface ausgelesen.
Dazu habe ich in der main.cpp folgendes angepasst:
Zeile 12-15: Wifi Credentials und MQTT Broker (Wenn ich im Sonoff Adapter die Credentials entferne verbindet sich der ESP, sendet jedoch keine Daten. Einziger DP ist Alive=True)Zeile 25-33: Anzeigenamen der Datenpunkte im Webinterface auf Deutsch übersetzt und unbenutzte auskommentiert
Zeile 36-43: Hier müssen die korrekten Speicheradressen der Heizungssteuerung hinterlegt werden. Diese sind hier zu finden: https://github.com/openv/openv/wiki/Adressen
Unbenutzte Werte auskommentiertZeile 46-52: Unbenutzte Werte auskommentiert
@albert ich mache dir jetzt deinen Lesekopf fertig und teste ihn. Sobald du deinen hast und die ersten Werte bei dir rein kommen packt dich hoffentlich das Fieber den Code weiter zu verbessern
Gruß Jaschkopf
-
@Jaschkopf Prima, das ist ein gewaltiger Fortschritt, also sind wir schon mal auf dem richtigen Weg
@Jaschkopf sagte in Viessmann Heizung mit ESP8266 auslesen und steuern:
Zeile 12-15: Wifi Credentials und MQTT Broker (Wenn ich im Sonoff Adapter die Credentials entferne verbindet sich der ESP, sendet jedoch keine Daten. Einziger DP ist Alive=True)
Hast du da die MQTT Credentials eingetragen? Wie? Habe ich da was übersehen?
Ich habe die die neue TreeLight lib geschickt, da ist die setupMQTT funktion überladen und nimmt jetzt auch Benutzer und Password.static const char MQTT_USER[] = "user_test"; static const char MQTT_PASSWORD[] = "password_test";
TreeLight.setupMqtt(BROKER, PORT, MQTT_USER,MQTT_PASSWORD);
Wegen den ganzen Datenpunkten müssen wir uns was überlegen wie wir das am flexibelsten gestalten könnten.
Am Besten wäre etwas ohne, dass man den Code neu bauen muss.Die TreeLight Lib würde ich mittelfristig ersetzen, momentan ist sie ganz hilfreich, aber sie ist auch nur ein Wrapper für andere Libs, entweder machen wir uns einen neuen Wrapper oder verwenden die Libs direkt.
Ich hatte in den letzten Tagen keine Zeit, sobald ich dazu komme werde ich die Lib auf Git laden.
-
@albert die MQTT credentials muss ich noch testen. Mit wifi credentials meinte ich ssid und passwort.
Mit den Adressen müssen wir uns echt was überlegen. Gerade in der testphase ist es echt nervig wenn man jedes mal neu kompilieren muss.
Viessmann hat da eine seltsame Politik bezüglich der Schnittstellenbeschreibung. Laut Support gibt Viessmann keine Adressen etc. raus, aber mit der Vitosoft 300 Software bekommt man alle Adressen in einer XML Datei geliefert und muss sich quasi nur die richtigen Adressen raus suchen. Habe ich heute schonmal in eine übersichtliche Excel Liste konvertiert.
Gruß Jaschkopf
-
@albert Hab es doch gerade noch geschafft die neue Version von TreeLight mal zu flashen und die MQTT Verbindung wird jetzt auch mit Username und Passwort hergestellt. Allerdings bekomme ich keine Daten im ioBroker rein. Hast du eine Idee warum?
-
@Jaschkopf Das mit den Daten werden ich mir mal ansehen, ich versuche ein paar Testdaten zu übertragen.
Ich habe gerade die TreeLight lib, inkl. meiner Änderungen, nach Github geladen und noch ein paar Änderungen in der main.cpp vorgenommen, kannst du bitte mal testen ob es bei dir so funktioniert? Bin mir nicht sicher ob ich alle Abhängigkeiten richtig bekommen habe.
-
@albert Sehr gut. Kann ich morgen mal kompilieren und testen. Heute schaffe ich es leider nicht.
-
@Jaschkopf Danke für den Lesekopf, kurz es funktioniert
Hatte zwar ein paar Anlaufschwierigkeiten, aber keine Ahnung was da falsch war, jetzt geht es.Ich habe mich zum Testen auf zwei Werte konzentriert (boilerTemp, outsideTemp), bei mir kommen die Werte über MQTT am ioBroker an:
Werden bei dir die Nodes im MQTT Adapter erstellt? Es kann sein dass es nicht gleich aktualisiert wird.
-
@albert Ich hab gerade nochmal alles frisch von Github gezogen und neu geflashed. Trotzdem kommen meine Daten im ioBroker an. Welchen Adapter nutzt du dafür? Ich hab bei mir MQTT immer über den "sonoff" Adapter gemacht. Der ESP meldet sich zwar an und wird als "alive=true" angezeigt, aber es kommen keine Werte rein.
Sonst muss ich nochmal einen anderen Adapter ausprobieren. Find ich komisch, weil MQTT doch ein fest definiertes Protokoll ist...
Gruß Jaschkopf
-
@Jaschkopf
Ich nutze den MQTT Broker/Client Adapter
Ich denke der Sonoff Adapter ist speziell für Sonoff und wird nicht alle Datenpunkte anzeigen, die nicht für Sonoff benötigt werden.
Wenn du einen weiteren Adapter installierst der MQTT nutzt musst du darauf achten einen anderen Port zu nutzen, meiner ist auf 2883. -
@albert mit dem MQTT Broker/Client Adapter kommen endlich Werte im ioBroker rein. Hab schon einige Stunden damit verbracht die richtigen Adressen zu finden. Die Komplette Liste aller Adressen beinhaltet 11544 Datenpunkte, von denen aber nur ein Bruchteil mit meiner VT200 (WO1C) Steuerung kompatibel sind. Dazu ist die Beschreibung noch ziemlich kacke... Langsam füllt sich die Liste aber:
Hast du es bereits geschafft die Werte auch zurück zu schreiben? Wenn ich in der "TreeLightNodes" Section jeweils Steuerbar auf true stelle wird zwar ein Regler sichtbar, aber ist ohne Funktion. Über MQTT auch ohne Funktion.
Gruß Jaschkopf
-
@albert Irgendwie müssen die steuerbaren Datenpunkte noch per setRange mit den Werten min, step und max versorgt werden damit der Schieber funktioniert denke ich. Vielleicht kannst du dir das mal angucken.
-
@Jaschkopf Leider habe ich es noch nicht hinbekommen die Datenpunkte zu Schreiben, ich muss in der Richtung mal weiter testen.
Zum automatischen Erstellen der Datenpunkte wollte ich die Gerätekennung an Adresse 0x00F8 nutzen, leider kommt da bei mir nur 0x0000 zurück, könntest du das bei dir mal testen ob du etwas anderes bekommst, vielleicht mache ich etwas falsch? -
@albert je nachdem was du für eine Steuerung hast gibt es auch für die Gerätekennung verschiedene Adressen. Laut meiner Liste 9 verschiedene:
Probier man die anderen Adressen. Eine davon sollte gehen, bedeutet aber nicht das sie dann auch bei anderen Geräten geht.
Mit der Schnittstelle hat Viessmann sich nicht gerade mit Ruhm bekleckert...
Gruß Jaschkopf
-
@albert ich habe gerade auch mal versucht die 0x00F8 abzfragen und bekomme folgendes zurück:
READ 4105000100f801ff ack RCV 4106010100f8012021 ack DP Gerätekennung succes
Hex=0x20
Dez=32Scheint mir auch nicht wirklich plausibel
Gruß Jaschkopf
-
@Jaschkopf Es sollten zwei Byte als Gerätekennung gelesen werden, 0x20 schaut schon mal gut aus, damit fangen die Kennungen an, aber da fehlt noch ein zweites Byte.
Meine Heizung hat sich vor ein paar Tagen "plötzlich" dazu entschieden mir doch mit einer Kennung zu Antworten.
Der ESP lief da bereits ohne Reset für zwei Tage.
Zumindest scheint der Ansatz der richtige zu sein um die Datenpunkte automatisch zu erstellen. -
@albert ok dann muss ich nochmal schauen wo das zweite Byte verloren gegangen ist ich hatte auch noch einen anderen Ansatz.
Was wäre denn wenn man eine Adapter für iobroker schreibt der die Datenpunkte verwaltet und der esp nurnoch die Vermittlung zwischen Adapter und Heizung übernimmt. Somit wäre das Skript für den esp ein leichtgewicht und der iobroker würde das Datenhandling übernehmen. Also iobroker sendet den Anfrage string an den esp, dieser an die Heizung und die Antwort wieder zurück an den iobroker. Was hältst du davon?
Gruß Jaschkopf
-
@albert Ich hab nochmal wegen der Gerätekennung rumprobiert und bin zu dem Ergebnis gekommen, dass es momentan keinen passenden Datentyp gibt. Lediglich das separate Auslesen der beiden Bytes 00F8 und 00F9 als Datentyp DPTempS, TreeLight Node = IntNode und Darstellung = value.getU8. Damit habe ich folgende Antwort bekommen:
0x00F8 = 32 (oder Hex 20)
0x00F9 = 77 (oder Hex 4D)Hier die Raw Strings:
READ 4105000100f801ff RCV 4106010100f8012021 READ 4105000100f90100 RCV 4106010100f9014d4f
Wie weit bist du bezüglich dem Steuern von Variablen? Wenn jetzt demnächst die Heizperiode wieder beginnt würde ich gerne per Skript zusammen mit den Raumthermostaten die Betriebsart der Heizung umstellen. Vorbereitet ist es soweit bei mir schon, lediglich wenn ich den DP im ioBroker ansteuer passiert nichts.
Gruß Jaschkopf
-
@Jaschkopf Alles klar, sobald ich dazu komme, werde ich mich um das Schreiben von Datenpunkten kümmern, so weit ich im Code gesehen habe, ist dafür noch nichts vorhanden. Die Datenpunktänderungen werden also nicht auf die Heizung geschrieben.
Wegen deinem Vorschlag, das wäre natürlich auch eine gute Idee, dafür müssten wir dann aber auch noch einen Adapter erstellen, was ich aber noch nie gemacht habe und ich mir nicht sicher wegen den Aufwänden bin.
Der ESP müsste dann nur noch die erhaltenen Bytes schreiben und die Antwort weiterleiten, das wäre dann eigentlich nichts anderes als ein remote UART. Mal schauen ob es schon so etwas in der Richtung gibt. -
Servus. In letzter Zeit musste ich immer wieder feststellen, dass der ESP nach 10-13 Tagen aufhört per MQTT zu senden. Das Webinterface ist weiterhin erreichbar und aktualisiert fleißig die Werte. Nur im ioBroker kommt irgendwann nichts mehr rein. Hat jemand eine Idee?
Gruß Jaschkopf