dewenni / ESP_Buderus_KM271

Control your Buderus Logamatic 2107 or HS-2105 with MQTT or Home Assistant
MIT License
54 stars 10 forks source link

Solar-Werte in Oberfläche anzeigen und MQTT implementieren #64

Open solutionfound opened 5 months ago

solutionfound commented 5 months ago

Hallo, das ich auch die FM244 im System habe, wollte ich fragen, ob die Solar-Werte auch implementiert werden können.

Danke und Grüße -Marco

dewenni commented 5 months ago

Hallo,

mir sind leider keine weiteren Werte aus dem Protokoll bekannt. Es gibt zwar noch ein paar Telegramme die noch nicht umgesetzt sind, aber dazu kenne ich keine Interpretation. Wenn sich darin noch Werte für das Modul FM244 verbergen, dann könnte man dass gegebenenfalls noch durch probieren herausfinden.

Unbekannt sind noch folgende Teile: #6 #5 #4 #7

Du könntest Werte für das FM244 ändern und dann schauen ob sich in diesen Telegrammen etwas verändert. Ich habe dazu eine Debug Ausgabe im MQTT eingebaut die man aktivieren könnte

image
solutionfound commented 5 months ago

Zu den unbekannten Teilen: wenn du kein Solar und FM244 installiert hast, halte ich es für unwahrscheinlich, dass diese damit zu tun haben.

Das mit dem Ändern der Werte kann ich mal versuchen. Wie du den Debug mode einschaltest, ist mir nicht ganz klar. Sofern der debug Modus an ist, kommen dann alle Werte als Debug_message oder nur die unbekannten?

dewenni commented 4 months ago

@solutionfound In der neuesten Version kannst du den Debug Modus einfach selbst aktivieren. Zusätzlich kannst du auch einen Filter setzten um nur bestimmte Telegramme per mqtt zu senden. Du könntest also mal einzelne Solar Werte an der Logamatic verändern und schauen welche Telegramme gesendet werden und ob du innerhalb des Telegramms deinen eingestellten Wert wiederfindest. Beachte aber das im Telegramm Hex Werte enthalten sind.

solutionfound commented 4 months ago

@dewenni : cool! Allerdings habe ich noch ein paar Hürden zu überwinden: Ich habe gelesen, dass mindestens eine Version ab 3.2.5 per Kabel geflasht werden muss - leider habe ich kein Kabel dazu. In weiser Voraussicht hatte ich aber eine Version mit eingelötetem Debug Header von Daniel geordert. Hast Du einen Tipp für ein Kabel?

Nächste Hürde ist: Ich muss erst mal wieder zur Wohnung meiner Mutter kommen - die ist gerade auf Reha, d.h. vor Mitte Februar komme ich sicher nicht vorbei - was mir auf der anderen Seite Zeit gibt ein Kabel zu organisieren ;-)

Also nicht wundern, wenn es etwas länger dauert.

Daniel hatte ja geschrieben, dass die letzten Boards mehr Speicher haben, ist die Speichereinschränkung trotzdem relevant?

dewenni commented 4 months ago

Ich hatte bisher ein sehr einfachen Adapter wie diesen hier: https://eckstein-shop.de/32C3V2F5VTypAUSBtoTTLKonverterUART5PinSerialSTCChipCP2102ModuleArduino

Du findest da im Shop aber auch noch einige andere Varianten die vermutlich genauso funktionieren. https://eckstein-shop.de/search/?qs=usb+ttl

Bei dem 4MB Boards war der Speicher bei dem Default Partitions-Schema schon >90% voll. Mit dem anderen Partitions-Schema bin ich jetzt wieder bei ca. 56% Bei einem 8MB Board ist das vermutlich kein Problem, aber ich habe auch keines hier um das nachzuvollziehen.

the78mole commented 4 months ago

Naja, das Problem ist, wenn wir das Partitionsschema von 4 auf 8 MB ändern, dass dann einige der älteren Module nicht mehr updatebar sind. Eine gangbare Varainte wäre, verschiedene Varianten der Firmware zu bauen, eine Full-Blown für die User mit 8MB und eine feature-stripped-Variante, die noch ins 4 MB-Flash passt und auch das andere PArtitionsschema verwendet. Aber der Release-Aufwand ist halt deutlich höher und das bleibt dann leider bei dewenni hängen. Nun könnte man als erstes mal einen GitHub Actions workflow aufsetzen, damit das Release wenigsten automatisch funktioniert. Das würde dewenni vermutlich schon stark entlasten. Daraus dann mehrere Outputs mit unterschiedlichen Settings/Partition-Schemes zu erstellen ist wahrscheinlich kein großer Aufwand mehr. @dewenni, was denkst Du?

dewenni commented 4 months ago

Ich denke das ist nicht nötig. Die 4MB genügen ja aktuell auch. Nur werden die 4MB mit dem Standard Partitions-Schema so aufgeteilt, dass nur ca 1,3MB für Applikation frei sind. Das wurde jetzt eben schon knapp. Ich habe das Schema daher auf "min_spiffs" geändert und jetzt gibt es auch bei den 4MB bis zu 1,9MB für die Applikation. Diese 1,9MB sind jetzt aktuell nur zu 56% belegt. Der mehr Speicher kommt daher, das jetzt die SPIFFS Partition kleiner ist. Das ist aber egal, da liegt nur die Config Datei.

Um das Schema zu ändern muss man halt einmal neu flashen. Danach kann man ja wieder OTA machen.

solutionfound commented 1 month ago

Heute habe ich 4.1.0 geflasht - von Version 3.2.5. Interessanterweise muss ich OTA immer 2x den Flashvorgang durchführen und beim 2. Mal bootet das System in der neuen Version. Aber das nur als Randbemerkung. Mit der neuen Version habe ich gleich das Feature der unbekannten Datagramme genutzt und eine Korrelation mit den Solar-Werten in der Oberfläche zu machen. Folgendes habe ich herausgefunden: 91_46 ist wohl die Kollektor-Temperatur mit dem Sensor, der im Modul verbaut ist. Es kommen viele Diagrammen, die sich nur um einen Wert bei dem dritten Hex-Wert verändern und dazu noch mit der Anzeige übereinstimmen. Ich denke das passt ;-) 91_46_37_00_00_00_00_00_ff_00_00 --> Kollektor Temperatur 55 °C

Anderer Wert ist 91_44 der mit WW-Solar übereinstimmt. 91_44_32_00_00_00_00_00_ff_00_00 --> WW-Solar 50 °C

Ansonsten habe ich gerade nur noch 91_42 der nur 01 oder 00 ist und daher vsl. ein Schaltzustand abbildet. Vielleicht die Ladungspumpe für WW-Solar? Da muss ich mal die Werte etwas genauer mit den Temperaturwerten korrelieren.

91_47 --> da läuft der Wert von Hex 10 über die Zeit herunter bis auf 00. Nur die Werte Hex 09, 06, 03 werden nicht aufgeführt. Vielleicht irgendein Temperatur offset? Ich habe die Anlage so eingestellt, dass wenn es WW-Solarertrag gibt, der untere Schwellwert für die WW-Aufbereitung weiter herunter gesetzt wird. Da da die Werte gegen Abend aber auf 00 gehen ist es vielleicht auch irgendetwas mit "Solar-Ertrag in Grad"?

91_4a --> ist an einigen Zeiten fast identisch mit 91_46 Kollektor Temperatur, aber wird dann irgendwann nicht mehr gesendet. Gerade als die Sonne stark scheinte ist 91_4a recht gering und steigt dann an bis auf Dec 60 und wird dann nicht mehr gesendet.

Da ich nur kurz Zeit hatte, habe ich noch keine Werte verändert und dann überprüft welche Datagramme gesendet werden. Das versuche ich das nächste Mal, da die Anlage bei meiner Mutter steht.

@dewenni : ist es für Dich aufwändig zumindest schon mal die beiden Datagrammtypen zu verarbeiten und per MQTT und ggf. auch über die Oberfläche bereitzustellen? Wenn die nicht mehr als unbekannte Datagramm in der Liste auftauchen wird es auch übersichtlicher beim "forschen".

Viele Grüße

dewenni commented 1 month ago

@solutionfound

cool, danke für die Analyse. Gerne füge ich weitere Werte hinzu. In der Oberfläche würde ich dafür am besten noch eine extra Seite machen. Bei bisher "nur" zwei Werten wäre das jetzt noch etwas wenig. Aber wenn du noch ein paar mehr Werte herausfindest, dann machen ich das gerne.

Hier sind die Werte vom Typ 91 auch erwähnt, allerdings ohne weitere Erklärung https://www.mikrocontroller.net/topic/141831?page=single#1526149

Als MQTT Werte kann ich die beiden aber gerne schon mal aufnehmen. Dann müssen wir noch noch herausfinden warum das bei dir mit den Einstellungen so komisch ist.

dewenni commented 1 month ago

Ich könnte dir auch eine "spezielle" Version machen, wo alle 91er Werte per mqtt gesendet werden. Dann könntest du die ggf. besser auswerten und vielleicht auch aufzeichnen, um dann besser die Zusammenhänge herauszufinden?!

dewenni commented 1 month ago

Die Einstellungen wären dann auch noch interessant herauszufinden. https://www.manualslib.de/manual/15526/Buderus-Logamatic-2107.html?page=42#manual

Solar EIN/AUS - default EIN MAX Solar - 60..90°C - default 75°C MIN Solar - 30..45°C AUS - default AUS

Du könntest also bitte mal die 3 Werte verändern und schauen welche Telegramme das sind. Ist vielleicht eines dieser Telegramme #4 - sollte denke ich jedenfalls mit Adresse 0x anfangen.

solutionfound commented 1 month ago

Ich könnte dir auch eine "spezielle" Version machen, wo alle 91er Werte per mqtt gesendet werden. Dann könntest du die ggf. besser auswerten und vielleicht auch aufzeichnen, um dann besser die Zusammenhänge herauszufinden?!

Das wäre sehr cool - denn die Temperaturwerte erzeugen viel "traffic" und ich könnte die mit Wassertemperatur und Außentemperatur in Diagramme aufnehmen.

Vielleicht kannst Du die noch nicht komplett verstanden Werte irgendwie mit einem Draft-Topic in MQTT aufnehmen, dann kann ich die zusammen in Graphen darstellen, das würde helfen zu versehen was da gemessen wird bzw. bei 91_42 was bzw. wann der Wert von 00 auf 01 geht.

Ich hoffe, dass das Risiko mittlerweile gering ist, dass ich den Zugriff verliere, da die Version 4.1.0 ja zu funktionieren scheint. Davor musste ich immer wieder mit dem seriellen Adapter zurück flashen.

Bzgl. Verändern der Einstellungen: Das werde ich sicher das nächste Mal machen wenn ich vor Ort bin. Die Anlage ist halt 100km weit entfernt - daher verbinde ich das eben wenn ich bei meiner Mutter bin. Zusätzlich zu den von Dir erwähnten drei Settings, die man im Service-Modus einstellt, kann man auch Solar auf manuell und auto stellen. Denn Sinn habe ich noch nicht verstanden, aber das wird auch noch Datagramme triggern, schätze ich.

Anekdote: Was ich nicht geschafft habe ist die Solar-Anlage in Betrieb zu bekommen wenn der Sensor im Kollektor zu hohe Werte hat. Ich glaube ich hatte es sogar mit dem "Relaistest" nicht geschafft die Pumpe in der Solaranlage zu starten. Ist aber vielleicht auch nur ein "Randthema". Konkret ist mir das in zwei Fällen passiert als ich einmal die Heizung wegen Wartung (Wechsel der Zirkulationspumpe) und einmal Ende des Urlaubsmodus nicht in Dauerbetrieb hatte. Beide Male war es sehr sonnig und daher der Temperaturwert hoch im Kollektor, der logischerweise sofort runter gehen würde, wenn die Ladungspume das Fluid umpumpen würde. Konsequenz war das an dem Tag das Brauchwasser unützerweise mit dem Brenner auf Temperatur gebracht wurde und erst am nächsten Tag durch Abkühlung in der Nacht die Anlage wieder wie gewünscht funktionierte.

dewenni commented 1 month ago

@solutionfound Ich hab dir jetzt mal eine Testversion gebaut, wo die vermeintlichen Solarwerte als MQTT gesendet werden

image

Die tauchen also jetzt nicht mehr bei den "undefined_messages" auf.

Außerdem habe ich am Webserver mal testweise noch was ergänzt, dass den Browser dazu zwingen soll, dass er keinen Inhalt cached. Bitte berichte mal ob das was an deinem beobachten Verhalten bezüglich der Settings ändert. Ich konnte das bisher nicht nachvollziehen.

buderus_km271_v4.1.7000.zip

solutionfound commented 1 month ago

Danke Dir. Ich habe die neue Version installiert und sie lief auch ca 2,5 Stunden - jetzt ist die Verbindung abgebrochen. Ich war gerade dabei MQTT neu einzurichten in OpenHab um die Daten anzeigen zu lassen. Ob das damit etwas zu tun hat, kann ich aber nicht sagen. Ich werde moren mal mein Mutter bitten die Heizung aus und wieder einzuschalten. Wenn er dann nicht mehr ins Netz kommt muss ich warten bis ich wieder vor Ort bin.

Was ich aber sagen kann, dass es keine Änderungen bzgl. der Einstellungen gab. Wenn ich das Device im Browser im Private-Modus aufgerufen habe, sind die Einstellungen der Logamatic nicht da gewesen. Sehr komisch, dass Du das nicht nachstellen kannst.

solutionfound commented 1 month ago

@dewenni Mit einem Powercycle konnte ich wieder auf die den esp zugreifen und bekomme auch die MQTT Daten geschickt - das funktioniert schon mal. 91_4a scheint ein Zähler zu sein, da er ziemlich genau im 60 Sekundentakt um eins hoch zählt. Nach 255 startet er wieder von 1.

Leider ist nach ca. 4,5 Stunden der esp wieder eingefrohren. Ich habe meine Mutter vorhin nochmals die Heizung aus und einschalten lassen worauf ich wieder Zugriff hatte, aber diesmal nur 35 mins - dann war der esp wieder nicht erreichbar. Ich habe gelesen unter den issues #104, dass die Stabilität Probleme bereitet. Die 4.1.0 lief bei mir fast eine Woche ohne Probleme.

Einziger Unterschied, der mir einfällt. Ich habe die 4.1.0 2x geflasht und die von die bereitgestellte 4.1.7 nur 1x... keine Ahnung, ob das etwas ausmacht.

Mit der aktuellen Stabilität wird es aber schwierig mal längere Werte zu erfassen und ich kann meine Mutter nicht fortwährend in den Keller schicken... vielleicht gehe ich zurück auf die 4.1.

dewenni commented 1 month ago

Tja, das mit der Stabilität ist auch seltsam. Ich habe da überhaupt keine Probleme mit. Mein Board seit 4.x noch kein einziges mal "eingefroren".

In der 4.1.7000 die ich dir gegeben habe, sind auch nur die zusätzlichen MQTT Nachrichten für das FM244 und eine Browser Option bezüglich Caching dazu gekommen. Ich wüsste nicht warum das etwas an der Stabilität ändern sollte. Das war jetzt nur eine "Spezialversion" basierend auf der 4.1.0. Das muss noch irgend einen anderen Zusammenhang haben.

Hast du das Board per USB versorgt oder nur über die Buderus? Falls du nur über die Buderus versorgst, könntest du ja mal testen ob es über USB besser wird. Da könntest du zur Not auch mal eine schaltbare Steckdose zwischen schalten um aus der Ferne einen PowerCycle durchzuführen. Oder du machst einen Shelly oder ähnliches an die Heizung. Ich habe einen Shelly in der Verkleidung der Logamatic versteckt. Damit kann ich den Stromverbrauch messen und ggf. auch mal neu Starten ohne in den Keller zu müssen.

solutionfound commented 1 month ago

Das Board wird über die Buderus versorgt und ich kenne die Thematik mit bei manchen Modellen nicht ausreichender Stromversorgung. Ich hatte bei früheren Versionen, wo das Board nicht mehr stabil lief zeitweise per USB versorgt. Das brachte aber keine Besserung, daher habe ich die wieder abgebaut, weil 3.2.5 rock solid lief.

Ein Shelly oder ähnliches wäre die ultima ratio. Ich probiere heute die 4.1.7 nochmals ein zweites mal aus der ferne upzudaten.

Ist es nicht so, dass der esp da irgendwie immer zwei Versionen gleichzeitig im Dateisystem/Partitionen liegen hat und bei Problemen auf die andere zugreift? Das war zumindest mal ein Thema bei dem Device, das ich für meine Gasheizung verwende: emsesp.github.io/docs Da war der Effekt, dass nach einem Reboot bei manchen die alte SW wieder da war. Mich hat das auch mal betroffen.

Ich habe im Keller schwaches WLAN. Gestern habe ich gesehen, dass als reboot Grund keine Verbindung zu MQTT angegeben war - vielleicht bootet das Gerät und nimmt dann irgendwann die andere SW, die korrupt ist. Ich kenne mich mit dem esp und der SW-Architektur leider nicht aus, daher alles nur Gedanken, die ich mir zusammenreime.

dewenni commented 1 month ago

hmm, ok.

Ich habe im Keller schwaches WLAN. Gestern habe ich gesehen, dass als reboot Grund keine Verbindung zu MQTT angegeben war

Wenn die MQTT Verbindung verloren geht, dann versuche ich 5x neu zu verbinden und starte dann den ESP neu. Könnte auch sein, dass er sich dann aus irgend einem Grund gar nicht mehr verbindet.

Der Plan ist, demnächst auch eine Unterstützung für einen Ethernet Anschluss zu haben. Hat zwar auch nicht jeder im Keller, aber es wird dem Einen oder Anderen sicher auch helfen. Ich würde dann selbst auch auf Ethernet gehen. Ab und an habe ich nämlich auch Probleme mit dem WLAN im Keller.

solutionfound commented 1 month ago

Wie ich unter #104 geschrieben habe, hat das 2. Mal flashen wohl geholften. Der esp läuft seitdem und daher konnte ich ein paar Weitere Werte identifizieren:

91_42 Solar Ladung ein=1 / aus=0 Schaltet sich ein wenn Kollektortemperatur 10°C höher ist als Solar-WW und schaltet aus wenn Kollektortemperatur auf 5°C über Solar WW fällt

Es ist auch konsistent mit 91_4a - wenn die Ladung ein ist, dann zählen die Minuten dort hoch. Wenn 91_4a von 255 auf 0 springt, dann wird 91_49 um eins hochgezählt. Was mich zu er Annahme brachte, dass es die üblichen 3 Werte für die Betriebsstunden sind. Ich habe die Werte mal in Stunden umgerechnet und das passt mit dem Betriebsstunden zusammen, die ich letzte Woche abfotografiert hatte. Daher ist 91_49 --> Multiplikator für 256 Minuten 91_48 --> Multiplikator für 65536 Minuten

Ich konnte heute keine weiteren unbekannten Datagramme sehen. 91_4b bis 91_4d sind bis jetzt nicht aufgetreten.

91_47 konnte ich noch nicht zuordnen. Anbei der Verlauf des heutigen Tages - vielleicht hast Du oder jemand anderes eine Idee.

grafik

dewenni commented 1 month ago

ok, dann lass uns mal zusammenfassen:

Status Werte:

Adresse Beschreibung Einheit
9142 Solar Ladung ein=1 / aus=0
9143
9144 WW-Solar °C
9145
9146 Kollektor Temperatur °C
9147
9148 Laufzeit Minuten 65535 min*65535
9149 Laufzeit Minuten 256 min*256
914a Laufzeit Minuten min
914b
914c
9145

Config Werte:

TBD...

solutionfound commented 1 month ago

Hallo,

komme gerade vom Besuch bei der Heizung ;-) Ich habe übrigens keinen einzigen Absturz seit letztem Sonntag. Das nochmalige Flashen half nachhaltig. Ich habe Deine Tabelle etwas ergänzt. Dass kein Wert gesendet wird bis dato und dass etwas gesendet wird, aber die Interpretation offen ist, hat auch etwas Informationswert. Multiplikator bei 9148 müsste 65336 sein analog wie 256 bei 8 bit.

Adresse Beschreibung Einheit
9142 Solar Ladung ein=1 / aus=0
9143 (bis jetzt keine Werte empfangen)   
9144 WW-Solar °C
9145 (bis jetzt keine Werte empfangen)  
9146 Kollektor Temperatur °C
9147 Werte empfangen; Bedeutung unklar   
9148 Laufzeit Minuten 65536 min*65536
9149 Laufzeit Minuten 256 min*256
914a Laufzeit Minuten min
914b (bis jetzt keine Werte empfangen)  
914c (bis jetzt keine Werte empfangen)  
914d (bis jetzt keine Werte empfangen)  

Weitere Erkenntnisse: Schalten des "Heizkreises Solar" über die Tasten Auto, Tag und Nacht analog wie bei HK1 und HK2 und WW 01_d9_28_0a_01_ff_ff_ff_ff_00_00 --> Solar Tag=Manuell (5. Hex-Paar 01) 01_d9_28_0a_02_ff_ff_ff_ff_00_00 --> Solar Automatik ((5. Hex-Paar 02) ist auch der Default-Wert - daher wird der bei Dir wahrscheinlich nach dem Einschalten gesendet - siehe #5 01_d9_28_0a_00_ff_ff_ff_ff_00_00 --> Solar Nacht=Aus nicht im Setup-Menü (5. Hex-Paar 00)

Im Setup-Modus: --> erklärt auch ein weiteres Datagramm in #5 01_d2_78_0a_05_26_46_00_ff_00_00 --> Solar aus im Setup-Menü (8. Hex-Paar 0) 01_d2_78_0a_05_26_46_01_ff_00_00 --> Solar ein im Setup-Menü (8. Hex-Paar 1)

01_d2_78_0a_05_26_44_01_ff_00_00 --> Max Solar 68 °C (7. Hex-Paar 44) 01_d2_78_0a_05_26_45_01_ff_00_00 --> Max Solar 69 °C (7. Hex-Paar 45) 01_d2_78_0a_05_26_46_01_ff_00_00 --> Max Solar 70 °C (7. Hex-Paar 46)

01_d2_78_0a_05_25_46_01_ff_00_00 --> Min Solar 37 °C (6. Hex-Paar 25) 01_d2_78_0a_05_26_46_01_ff_00_00 --> Min Soart 38 °C (6. Hex-Paar 26)

Mehr Einstellungen kenne ich für die Solarfunktion nicht. Damit bleibt aktuell nur offen was 9147 bedeutet.

Meinst Du dass die noch nicht empfangenen Datagramme wirklich existieren? Die könnten auch einfach nicht verwendet sein.