User mit Weishaupt Heizung mit eBus / Lust auf Weishaupt Codes zu entschlüsseln

Ich hoffe sehr, dass man euren Adapter dann auch käuflich erwerben kann? :smiley:
Klingt nämlich äußerst interessant und meine Vaillant Solaranlage wartet schon lange aufs Auslesen… :loveips:

Hallo, ich klinke mich hier mal ein.
Lese schon eine Zeitlang mit bzw. suche immer wieder was über den Ebus, da mir das unter den Fingern brennt. Leider findet man darüber so gut wie nichts, aber hier schein ich richtig zu sein.

Zuerst mal kurze Info:
Bin Heizungsbauer (seit ca. 17 Jahren und Sohn vom Chef) und als Hobby bastel ich gerne mit Elektrik/Elektronik und schon eine Zeit lang mit Microcontroller (AVR Atmega) incl. deren Programmierung in C.

Vor ein paar Jahren hab ich mit viel Aufwand und Zeiteinsatz eine Heizungsregelung gebaut, die schon über 10 Jahre läuft mit jeder Menge Hardware, da wären z.B.

[ul]
[li]24 PT1000 Fühler
[/li][li]16 230 V Ausgänge mit Triacs
[/li][li]div. Eingänge
[/li][li]LDC-Display mit Drehencoder im EG
[/li][li]Bus-Kommunikation und Regelung mit 2 Grundfos Pumpen über Genibus (RS485)
[/li][li]Ethernet-Anbindung ans Hausnetz mit Syslog, NTP, div. andere Protokolle
[/li][li]Bedienprogramm am PC über Netzwerk
[/li][li]Regelung Wärmeerzeuger Öl-Brennwert
[/li][li]Regelung Warmwasser
[/li][li]Regelung Solaranlage (40 m2)
[/li][li]Wärmemengenerfassung mit Wärmezähler
[/li][li]Regelung 2 Heizkreise
[/li][li]Echtzeitdatenausgabe auf Webseite.
[/li][li] usw…
[/li][/ul]

Die Regelung war sogar schonmal in einer Fachzeitschrift abgebildet.
Die Liveseite kann man hier betrachten: http://tux.zugspitzort.de/heizung/

Bei vielen unseren Kundenanlagen haben wir eine WTC und die WCM-FS + Heizkreismodule, teilweise mit dem WCM-COM und Internetanschluss.

Vor einiger Zeit haben wir einen neuen Kessel eingebaut, einen WTC-OB 45, der natürlich auch eine Ebus-Schnittstelle hat. Gesteuert wird der Kessel im Moment noch wie der alte (Blaubrenner ein-aus) über den H1 Eingang.
Das Sahneschnittchen wär natürlich jetzt die Anbindung des Ebus an die Regelung, womit ich mich zur Zeit beschäftige.
Da es ja fast keine Dokumentation über die von Weishaupt verwendeten Telegramme gibt, hab ich mir mit Hilfe des FHEM-Projekts und anderen Beispielen den Ebus-Konverter gebaut und den Kessel provisorisch an eine baugleiche Regelung angeschlossen zum testen und programmieren.

Mit dem W-EA Interface und der Original Software ist es mir jetzt gelungen, ein paar Telegramme „auszuwerten“, was aber recht zeitintensiv ist und bei manchen Datenpunkten echt schwierig (einzelne Bits z.B. die sich zeitgleich mit anderen ändern). Temperaturen sind z.B. recht einfach herauszulesen.

Die Software kann schon alle Telegramme protokollieren, analysieren und ausgeben, und auch selbst den Kessel mit bestimmten Telegrammen abfragen und die schon „gefundenen“ Daten auswerten.

Ich hab die entsprechenden Anfrage-Telegramme aus dem xls weiter oben mit meinen verglichen, leider scheint da kaum etwas übereinzustimmen :frowning:
Nächste Woche versuch ich mal die Software umzuschreiben so daß ich dem W-EA und der WCM-Diagnose meinen Kessel „vorgaugle“, also im Prinzip die Slave-Antworten mit meinen eigenen Bytes füttere und schaue, was die Software anzeigt. Als SYN-Generator und Stromversorgung verwende ich dafür eine alte WCM-CPU von einer WTC, da das W-EA wohl keinen hat.

Ziel ist es auf jeden Fall daß man die Telegramme in der Liste möglichst vollständig dokumentiert.

Nach einiger Zeit hab ich doch schon viel herausgefunden, und zwar fast alles was man mit dem W-EA auslesen kann.
Hab die Weishaupt-Software mit dem Kessel verbunden, und dann einfach die (ebus-)Adresse am Kessel selbst geändert -> Keine Verbindung. Dann kommt mein Controller ins Spiel, er sendet als Slave die Daten (vom vorherigem abhören) zurück und das Programm zeigt es an. Wie das genau funktioniert ist jetzt unwichtig, aber so konnte ich einzelne Bits und Bytes ändern und das Resultat in der Original Software prüfen.
Bei manchen Telegrammen scheint auch eine CRC berechnung dabei zu sein (Fachmann und A-Parameter z.B.), zusätzlich zu dem Ebus-CRC.

Hier mal die Tabelle, ich arbeite noch dran.
Übereinstimmungen mit der Tabelle ganz oben konnte ich leider keine finden.

WTC-OB-45-Ebus.xls (89.5 KB)

Oh wow cool! Das werde ich mir nachher gleich mal ansehen… Bei mir ist das Thema leider etwas in Vergessenheit geraten… Mal schauen ob ich damit jetzt das ganze noch besser auslesen oder sogar programmieren kann :slight_smile:

Danke auf jeden Fall schon mal für deinen Einsatz!

Viele Grüße,

Chris

Hallo!

Freut mich sehr, dass sich auch hier zum Thema Weishaupt und eBus etwas tut!

@geronet: Mit großem Interesse habe ich deine Excel-Tabelle angeschaut und mir neue Erkenntnisse daraus für meine Anbindung eines WTC 15-A erhofft!
Übrigens: sehr schöner, strukturierter Aufbau - ich habe mich recht schnell darin zurechtgefunden!

Leider - so scheint es - sind die Request-Telegramme, beispielsweise für die Prozesswerte, nicht mit meinem Gerät kompatibel. Sie unterscheiden sich - nach dem PBSB=5000 - in der Länge und den folgenden Werten.
Aber an diesem Punkt, der Entschlüsselung der Parameter der „WCM-CPU“, bin ich auch gerade…

Für die Entschlüsselung der eBus-Telegramme verwende ich den ebusd (der meines Wissens auch SYN erzeugen kann - Option „–generatesyn“).
https://github.com/john30/ebusd/wiki

Meine aktuelle Konfiguration für ebusd mit den Nachrichtendefinitionen ist hier zu finden:
https://github.com/J0EK3R/ebusd-configuration-weishaupt

Und hier gibt es ein Forum, in dem ich meine Fortschritte poste:
https://forum.fhem.de/index.php/topic,61017.0/all.html

Interessant ist für Dich bestimmt die Möglichkeit, die Parameter der Heizkreisregler (Adressen 0x35/0x75) im Bedienteil WCM-FB abfragen und ändern zu können. Die Telegramme sind inzwischen weitgehend entschlüsselt.

Der Aufbau dieser Requests ist auch recht logisch und einfach: Dienst + Adresse + Länge.

Schau ich mir die Request-Telegramme aus Deiner Excel-Tabelle an, dann erkenne ich dort (noch) kein Schema…
Beispielsweise die Abfrage der Fehlerhistorie - hier wird doch bestimmt ein zusammenhängender Speicherbereich ausgelesen, die Struktur der einzelnen Fehlereinträge ist ja immer gleich. Nur ist die Abfrage des Speicherbereichs auf mehrere Telegramme verteilt…

Wirst Du daraus schlau?

Ich werde Deine Fortschritte erwartungsvoll verfolgen!

Leider - so scheint es - sind die Request-Telegramme, beispielsweise für die Prozesswerte, nicht mit meinem Gerät kompatibel. Sie unterscheiden sich - nach dem PBSB=5000 - in der Länge und den folgenden Werten.

Das ist mir auch aufgefallen. Das einzige übereinstimmende Telegramm das ich bis jetzt gefunden haben ist die Sollwertvorgabe mit PB 05 SB 07, die steht auch in der eBus Spezifikation. Bei mir reagiert der Kessel leider nur auf bestimmte Inhalte, nicht wie in der Spezifikation angegeben… aber zumindest kann ich ihm schonmal den Sollwert vorgeben.

Hab mir die Woche mal die WCM-FS von unserem Nachbar „geborgt“, die haben die gleiche Anlage nur komplett mit Weishaupt Regelung incl. WCM-COM. Die lief einfach so weiter und gab nur 20 min. die Meldung W82 raus (Kommunikation zu EM#2 oder WCM-FS#2 fehlerhaft).

An meinem eBus drangesteckt und einen Reset gemacht hab ich mal die Telegramme mitgeloggt (So hab ich die Sollwertvorgabe gefunden). Bin grad am weiteren auswerten, irgendwie muss da ja ein System dahinterstecken. Bei der Abfrage der Fehlerhistorie z.B. hast du schon richtig erkannt, daß da ein Speicherbereich ausgelesen wird. Die Abfragetelegramme hab ich ja nunmal von der Weishaupt Software (WCM Diagnose) so übernommen, in welcher Reihenfolge man die sendet dürfte egal sein. Ich vermute aber daß das letzte Byte im Telegramm noch ein CRC ist (nicht der vom eBus), und in der Slave-Antwort steht 0x00 an erster Stelle = ACK. Wenn ich das 0x00 nämlich ändere, reagiert die WCM Diagnose mit Übertragungsfehler.

Interessant ist für Dich bestimmt die Möglichkeit, die Parameter der Heizkreisregler (Adressen 0x35/0x75) im Bedienteil WCM-FB abfragen und ändern zu können. Die Telegramme sind inzwischen weitgehend entschlüsselt.

Leider nicht, da ich keine FB habe. Mich interessiert eigentlich hauptsächlich erstmal wie ich dem WTC-OB
a) alle Daten entlocken kann, die die WCM Diagnose auch abfrägt und anzeigt (schon erledigt)
b) einen Sollwert vorgeben kann (auch gefunden), am besten noch welche Stufe (scheint schwierig, ist warsch. nicht vorgesehen)
c) ob man die interne PWM Pumpe auch über eine externe Sollwertvorgabe regeln kann (Temperaturdiff. oder Drehzahl)

zu a) es wäre natürlich interessant zu wissen, wie sich die (Sende-)Telegramme zusammensetzen. Teilweise sind ein paar Bytes gleich, der Rest ist aber oft wild durcheinander.
Z.B. könnte ja jede Variable eine Nummer haben (wie auch die P- oder A- Parameter) und die sind in dem Telegramm mit drin? Muss ich noch prüfen.
Das ganze ist natürlich noch umständlicher, da jedes Weishaupt Gerät bei den I- P- und A- Parametern andere Bedeutungen hat, deshalb braucht man da wohl pro Gerät eine Liste, welche Nummer was bedeutet.

Hab gerade deinen FHEM-Beitrag überflogen, du hast kein Diagnose-Adapter (W-EA). Das macht das ganze natürlich um einiges schwieriger. Da kann ich dir evtl. helfen, da ich (wie oben beschrieben) mit meinem Controller ein beliebiges Gerät vorgaukeln kann und somit einfach an die Telegramme und Werte komme, die die Diagnose-Software liest und schreibt.
Eine WCM-CPU von einer WTC25 hab ich hier liegen, mir fehlt nur der Trafo mit den drei Spannungen, der dahinter eingebaut ist. Die kann ich aber selber mal zusammenfrickeln. Wäre dann kein Problem, die Telegramme mit Hilfe der Diagnose-Software zu decodieren und noch so eine Tabelle wie meine zu erstellen (hab ich eh vor).

Mir ist gleich im zweiten Beitrag von dir was aufgefallen:
Deine WTC hat die Adressen 0xF1+0xF6
und zusätzlich 0x03+0x08, den du als Feuerungsautomat bezeichnet. Woher weißt du das?
Bei meinem Kessel sind die 4 Adressen genauso, und ich hab mich immer gewundert warum die Telegramme an 0x08 gehen und nicht 0xF6 nach der Spezifikation.

Also das mit der Sollwertvorgabe hab ich grade gelöst. Man braucht nur an der richtigen Stelle suchen :smiley:

In der Anleitung vom Heizungsregler E8 (Kromschröder) steht drin:

Bei schaltenden mehrstufigen WE kann die zweite Stufe durch eine Leistungsvorgabe > 50% eingeschaltet werden.

Und das funktioniert auch, ich kann nun den Kessel Leistungsmäßig steuern/regeln (Ölbrennwertkessel 2-stufig).
Wie genau steht in meiner Tabelle dann drin.

Hallo!

Die Bezeichnungen der Teilnehmer habe ich aus der eBus-Spezifikation - ich bestehe nicht auf Richtigkeit :wink: spec_prot_7_v1_6_1_anhang_ausgabe_1.pdf.

Der Teilnehmer mit der Adresse 0xF1/0xF6 ist laut Spezifikation der Heizungsregler. WCMDiagnose bezeichnet ihn als „WCM-WST“.
Der Teilnehmer mit der Adresse 0x03/0x08 wird als Feuerungsautomat bezeichnet. In WCMDiagnose heißt der Teilnehmer „WCM-CPU#1 WTC 15“.
Beide Teilnehmer sind mutmaßlich das WTC-Gerät.
Dann gibt es noch 0x30/0x35, den Heizkreisregler 1 („FB#1“ in WCMDiagnose) und 0x70/0x75, den Heizkreisregler 2 („FB#2 EM#2“ in WCMDiagnose) - beide sind in der Hardware WCM-FB zu finden.

Schaue ich mir die Telegramme auf dem eBus an, dann stelle ich folgendes fest:
Die Teilnehmer 0x30 und 0x70 schicken zyklisch Telegramme vom Typ 0507 an den Teilnehmer 0xF1.
Da 0x30 und 0x70 die Regler für meine beiden Heizkreise sind (HK1: Warmwasser, Heizung HK2: Fußbodenheizung) und 0xF1 der Heizungsregler - also die Regelung der Wärmeerzeugung des Systems - macht das für mich Sinn. Ich vermute, dass der Heizungsregler dann den Wärmebedarf aus den Sollwerten beider Heizkreise ermittelt und einen entsprechenden Sollwert an den Feuerungsautomaten schickt (der nicht über den eBus geht, da es sich um die selbe Hardware handelt).
In meinem System schickt dann noch der Teilnehmer 0x70 (Heizkreisregler 2) zyklisch Telegramme an den Teilnehmer 0x51, dem externen Mischer (WCM-EM).

Danke für die Erklärung!

Ich vermute, dass der Heizungsregler dann den Wärmebedarf aus den Sollwerten beider Heizkreise ermittelt und einen entsprechenden Sollwert an den Feuerungsautomaten schickt (der nicht über den eBus geht, da es sich um die selbe Hardware handelt).

Da liegst du richtig, in der WCM Diagnose sieht man die einzelnen Wärmeanforderungen der Heizkreise als Temperaturen, die im Kessel dann den Vorlaufsollwert vorgeben.

Brauchst du auch so eine Tabellenübersicht für die WTC Geräte? Dann würd ich das mal zeitnah in Angriff nehmen.
In der Ersatzteilübersicht ist die Hauptplatine für 15-32 gleich, nur die Ausführung „C“ und die 45 und 60 kW Version hat eine andere Nummer. Ich hoffe doch daß die eBus Telegramme gleich sind.

Hallo und vielen Dank für Dein Angebot! :slight_smile:

Mittlerweile habe ich die Möglichkeit, WCMDiagnose zu nutzen… :rolleyes:
Damit komme ich zumindest an die Telegramme, die von WCMDiagnose verschickt werden und kann Definitionen für ebusd dafür erstellen!

Ok super, die können wir dann vergleichen. Hab grade die Spannungen für die WTC-Platine hergestellt und fange mal an.

Hier mal ein Update meiner Tabelle, mit der WTC drin. Ergänzungen sind in Arbeit!

Ebus-Telegramme.xls (142 KB)

Hallo geronet :slight_smile:

Ich vergleiche gerade die Parameter aus Deiner Excel-Tabelle für WTC mit dem, was ich herausgefunden habe - hier ein Schnellschuss:

  • Prozesswerte - die Telegramme unterscheiden sich im Master-Teil komplett - ich bin dran…
  • Endanwender - das selbe Telegramm, Felder passen (ich muss mir nochmal „Umschalttemperatur Sommer/Winter + Betriebsart“ anschauen und die Betriebsart aus den Infos holen)
    https://github.com/J0EK3R/ebusd-configuration-weishaupt/blob/master/weishaupt/enduser.inc
  • Heizungsfachmann - das erste Telegramm unterscheided sich, die anderen sind gleich - ich bin dran…
  • Statistik - da habe ich keine Übereinstimmungen gefunden!? Aber ich habe die Felder dekodiert (Wobei auch viel geraten ist, weil oft die selben Werte in den Feldern stehen und somit keine eindeutige Zuordnung möglich war…)
    https://github.com/J0EK3R/ebusd-configuration-weishaupt/blob/master/weishaupt/statistic.inc
  • Hersteller - das erste Telegramm ist gleich, das zweite komplett anders - ich bin dran…
  • Fehlerhistorie - auch hier habe ich komplett andere Telegramme… (aber Deine sehen besser aus ;))

Ich denke, dass der Grund für die Unterschiede ist, dass unterschiedliche Firmware-Version in Deiner und meiner WTC stecken.
Ich weiß beispielsweise, dass das WTC-COM erst ab einer gewissen Firmware im WTC unterstützt wird.
Mein WTC (V2.16) kann das beispielsweise noch nicht.

Ich hab hier die Version 3.1 liegen. Wenn die Telegramme auch noch pro Version unterschiedlich sind, ist das echt :banghead:

Aber schau dir mal im WCM-Diagnose-Programmverzeichnis die Dateien an.
In der Dl.Ini stehen die Wertebezeichnungen und andere Parameter drin.

In den SYC-Dateien sind wohl pro Gerät die einzelnen Werte als Tabelle/Liste aufgeführt. Öffne die mal mit einem Hex-Editor mit ASCII-Übersetzer und da sieht man mehrere Abschnitte wie z.B.
Liste der RAM-Daten
Bit-Liste
SFR-Liste
Liste der Konstanten
Liste der XRAM-Daten

und viele Bezeichner in Großbuchstaben. Wenn man diese Listen verwenden könnte…
Da drin müsste ja auch stehen welche Telegramme die Software abschicken muss um an die Werte zu kommen/sie zu ändern?
Meine WCM-Diagnose ist übrigens V5.5.12.

Noch ein Update der Tabelle:

Ebus-Telegramme.xls (147 KB)

Hallo geronet :slight_smile:

Die Version meiner WCM-Diagnose ist Version 5.5.19a.

Ja, in den syc-Dateien müsste eigentlich alles stehen…

Die syc-Dateien hab ich mir natürlich auch angeschaut. Quasi erfolglos! :eek:
Allerdings waren auch die schnellen Ergebnisse über die Fenster in WCMDiagnose und die passenden Nachrichten im Terminal bis jetzt ausreichend. :wink:

Wie hast Du eigentlich die Zuordnung von Gerät zu syc-Datei gemacht?

Wie hast Du eigentlich die Zuordnung von Gerät zu syc-Datei gemacht?

Die Dateien in Gruppen bzw. einzeln aus dem Verzeichnis geschoben, bis das Programm gemeckert hat :wink:

Schön wäre auf jeden Fall zu wissen, wie sich der CRC zusammensetzt. In den Parametern für den Endanwender und den Heizungsfachmann ist auf jeden Fall einer drin (meldet die WCMDiagnose) und ich denke in der Statistik und der Fehlerhistorie ist jeweils das erste Byte des Request-Telegramms auch einer. Es ist entweder ein echter CRC, eine XOR-Prüfsumme oder einfach nur eine Summierung bestimmter Bytes mit Überlauf… Hab aber bis jetzt noch nicht herausgefunden, welcher :frowning:

Hallo geronet :slight_smile:

Ich beschäftige mich gerade mit den 5000er Telegrammen…

Ich habe mir die Werte hinter der Dienstkennung (0x5000) vorgenommen, beispielhaft an denen des Fehlerspeichers.

|Dienst|Länge|Kennung||?|Check|Länge
|—|---|—|---|—|---|
Hex|Adresse
Hex||Länge
Dez|Adresse
Dez|Delta
Adresse||Antwort|Länge
Antwort|Nutzdaten|Länge
Nutzdaten|
|5000|05|03029F8263||0302|9F|8|263||8|611|||0b0005160652001d1f0c022e|11|05160652001d1f0c022e|10|
|5000|03|A8B26C|||A8|B|26C||11|620|9||0d00e4160652001d1f09022de416|13|e4160652001d1f09022de416|12|
|5000|03|BCB278|||BC|B|278||11|632|12||0d00065600323b090334e416064b|13|065600323b090334e416064b|12|
|5000|03|40B284|||40|B|284||11|466|12||0d000030380a0334e416064e002f|13|0030380a0334e416064e002f|12|
|5000|03|54B290|||54|B|290||11|656|12||0d002f0a0333e416064c0021230c|13|2f0a0333e416064c0021230c|12|
|5000|03|18229C|||18|2|29C||2|668|12||0400022fe4|4|022fe4|3|

Interpretiert man die letzten vier Nibbles als Länge + Adresse, dann kommt man fast hin mit der Kommunikationslogik… :eek:

Update - Gewalt ist doch eine Lösung! :cool:

Ich habe die Taktik geändert:
Ich habe mir das letzte Telegramm aus der Fehlerhistorie vorgenommen, die vermeintliche Länge im vorletzten Byte geändert und so lange den Check-Wert im drittletzten Byte variiert, bis eine Antwort kam! :smiley:
Ein Teil der Antwort ist ja bekannt.

Mit einem Bruteforce-Skript bin ich zu folgendem Ergebnis gekommen:

Dienst Länge Kennung Antwort
5000 03 24029C 020004
5000 03 94129C 03000433
5000 03 18229C 04000433e4
5000 03 A8329c 05000433e406
5000 03 5C429c < Ursprung > 06000433e40600
5000 03 EC529c 07000433e4060000
5000 03 60629c 08000433e406000000
5000 03 D0729C 09000433e40600000092

Wer findet den Algorithmus für die Berechnung des Check-Bytes? :rolleyes:

Update: nun mit geänderter Adresse

Dienst Länge Kennung Antwort
5000 03 23029B 020000b
5000a 03 93129B 03000b04
5000a 03 1F229B 03000b0433
5000a 03 AF329B 03000b0433e4