eBus Telegramme auswerten / Heizung / Solar

Hallo,

mit dankenswerter Unterstützung durch Babba ist es mir jetzt gelungen eBus Telegramme in IPS einzulesen. Das ganze sieht so aus:

20.06.2010 16:10:40.00 | RECEIVED | AA
20.06.2010 16:10:40.00 | RECEIVED | AA
20.06.2010 16:10:40.00 | RECEIVED | AA
20.06.2010 16:10:40.00 | RECEIVED | AA 30 50 50 14 08 61 00
20.06.2010 16:10:40.00 | RECEIVED | 08 80 15 08 00 00 B2
20.06.2010 16:10:40.00 | RECEIVED | FA 30 50 50 14 08 61 00
20.06.2010 16:10:40.00 | RECEIVED | 08 80 15 08 00 00 B2
20.06.2010 16:10:40.00 | RECEIVED | 30 50 50 14 08 61 00 08
20.06.2010 16:10:40.00 | RECEIVED | 80 15 08 00 00 B2
20.06.2010 16:10:40.00 | RECEIVED | 30
20.06.2010 16:10:40.00 | RECEIVED | 50 50 14 08 61 00 08 80
20.06.2010 16:10:40.00 | RECEIVED | 15 08 00 00 B2
20.06.2010 16:10:40.00 | RECEIVED | 30 50 50 14 08 61 00 08
20.06.2010 16:10:40.00 | RECEIVED | 80 15 08 00 00 B2
20.06.2010 16:10:41.00 | RECEIVED | 30 50 50 14 08 61 00 08
20.06.2010 16:10:41.00 | RECEIVED | 80 15 08 00 00 B2
20.06.2010 16:10:41.00 | RECEIVED | 30
20.06.2010 16:10:41.00 | RECEIVED | 50 50 14 08 61 00 08 80
20.06.2010 16:10:41.00 | RECEIVED | 15 08 00 00 B2
20.06.2010 16:10:41.00 | RECEIVED | FE 30 50 50 14 08 61 00
20.06.2010 16:10:41.00 | RECEIVED | 08 80 15 08 00 00 B2
20.06.2010 16:10:41.00 | RECEIVED | 30 50 50 14 08 61 00 08
20.06.2010 16:10:41.00 | RECEIVED | 80 15 08 00 00 B2
20.06.2010 16:10:41.00 | RECEIVED | 30
20.06.2010 16:10:41.00 | RECEIVED | 50 50 14 08 61 00 08 80
20.06.2010 16:10:41.00 | RECEIVED | 15 08 00 00 B2
20.06.2010 16:10:41.00 | RECEIVED | 30
20.06.2010 16:10:41.00 | RECEIVED | 50 50 14 08 61 00 08 80
20.06.2010 16:10:41.00 | RECEIVED | 15 08 00 00 B2
20.06.2010 16:10:42.00 | RECEIVED | AA 30 FE 09 03 04 76 00
20.06.2010 16:10:42.00 | RECEIVED | 18 FC 46
20.06.2010 16:10:42.00 | RECEIVED | AA
20.06.2010 16:10:42.00 | RECEIVED | AA

Wie man sieht, kommen die Telegramme nicht schön mit einem CRLF am Ende, sondern man muss sie sich wohl „zurechtschnippeln“. Leider ist die Länge der Telegramme unterschiedlich (Abhängig vom Dienst), und auch das erste und letzte Zeichen (Source Adresse, CRC), der Aufbau (Im Beispiel rot) ist so:

30 50 50 14 08 61 00 08 80 15 08 00 00 B2
QQ ZZ DH DU DB DA DA DA DA DA DA DA DA CRC

QQ = Quelle
ZZ = Ziel
DH = Dienst Hauptgruppe
DU = Dienst Untergruppe
DB = Anzahl Datenbytes ->hier 8
DA = Datenbyte (Anzahl, Füllwert und Parameter abhängig vom Dienst [Siehe DH/DU])
CRC = Polynom Prüfsumme

AA ist das SYN Zeichen, wird nach meinem Verständnis vom Master als „Ready to listen“ gebroadcastet. Die sieht man dauernd auf dem Bus. Die Pakete die ich sehe sind solche, die zwischen Controller, Wandsteuerung und einigen Systemkomponenten (Identifizieren konnte ich bisher nur den Brenner) versandt werden. Der eBus sieht auch vor, dass man Anfrage Telegramme and Baugruppen senden kann, und dann von dieser Baugruppe eine spezifische Antwort erhält. Das kann ich im Moment natürlich nicht sehen, da ich keine requests sende. Ich habe bisher bei mir 6 unterschiedliche Dienste auf dem Bus gesehen, wobei nur zwei interessant sind:

  1. Brennersteuerung / Warmwassersollwert
  2. Aussentemp / Datum / Zeit

Allerdings läuft ja auch die Heizung bei mir nicht zur Zeit :slight_smile:
Darüber hinaus gibt es dann noch, abhängig vom Dienst verschiedene Datentypen, diese sind in der Grafik im Anhang beschrieben.

Da ich programmiertechnisch limitiert bin suche ich jetzt Hilfe in der Community, vieleicht hat jemand für den Programmieren keine so hohe Eintrittsbarriere wie für mich darstellt ja Interesse hier zu helfen.

Im ersten Schritt müsste man wohl mit Hilfe der RegVar und des RegVar Buffers die Telegramme erst mal zurechtschneiden, im zweiten dann Servicebasiert die Datenbytres auswerten und (einfach) in in IPS Variablen schreiben.
Schritt drei wäre dann wohl Befehle zu versenden und die Antwort auszuwerten.

Kann/Will jemand helfen?

Gruss,

wupperi

Wie hast Du denn den eBus angekoppelt? Den Pegelwandler selber gebaut?
Ich versuch das nämlich auch schon lange, aber meine Solaranlage will einfach nicht mit mir reden…

Schau mal hier
Das war, glaube ich, die Vorlage für Babba, da war aber noch ein Bug drin. Vieleicht will Babba ja den richtigen Schaltplan veröffentlichen?
Wobei ich nicht weiss, ob hiermit auch das senden von Telegrammen möglich sein kann?

Hier gehts weiter.

Leute Ihr seit Spitze !!!

Gestern wollte ich meinem Freund die eBus-Platine zum ätzen geben … aber ich warte lieber auf die funktionierende Version von babba :wink:

Grüße

Andreas

PS: Seit gestern läuft hier offiziell auch eine Heizung mit eBus … von Wolf … das das Protokoll weitgehend entschlüsselt ist - freue ich mich da drauf das in IPS einzubauen, wie ein kleines Kind :smiley:

Ja, wenn Babba die Pläne vorstellen würde, wäre das echt super! :loveips:

Ich maile ihn mal an, er musste nicht viel ändern, ggfls. reicht ja der Schaltplan mit dem Hinweise was er geändert hat.

Was man wissen muss: Bei eBus werden einige Informationen als Broadcast in regelmässigen Abständen gesendet. Diese unterteilen sich in

a) Herstellerunabhängige, gut dokumentierte, Services
b) Herstellerspezifische, nicht dokumentierte, Services

Die dokumentierten Services sind relativ leicht einzubauen, bei den undokumentierten hilft nur ein Vergleichen mit den Werten die man an der Heizung abliest und den entsprechenden Telegrammen auf dem Bus, um das langsam zu entschlüsseln.

Es gibt aber auch Telegramme, die werden nur dann versendet, nachdem ein spezielles Request Telegramm an die jeweilige Komponente versandt wurde. Dieses ist im Skript nicht vorgesehen, es fehlt auch noch die Auswertung nach einem „Füllbyte“ Seite 8, Punkt 5.1 Ich habe gestern mal mit der original Weishaupt software experimentiert. Ich konnte zwar den Wandler mit der Software (im sog. Peer to Peer Mode) verbinden, alle Telegramme auf dem Bus konnte ich mitlesen, aber das Scannen nach am Bus angeschlossenen Geräten ist fehlgeschlagen.

Das, was ich momentan aus bekannten Diensten auslesen kann sieht so aus, wie im Bild gezeigt. Allerdings ist meine Heizung im Moment auch aus. Im Wesentlichen sehe ich die Fühler Aussentemp, Brauchwasser Zieltemp, und wann meine Zirkulationspumpe an/aus geht.

Moin zusammen,

finde ich ja super, dass das mit dem eBus jetzt auch funktioniert.:):slight_smile:
Probiere auch schon seit einiger Zeit die Daten mit dem hier beschriebenen Adapter in den PC einzulesen.
Die Hardware ist vorhanden und mit dem vorgestelltem Skript bekomme ich auch die Aussentemperatur meiner Vaillant-Steuerung (VRS620) eingelesen.
Besten Dank dafür :slight_smile:

Leider reichen meine Programmierkenntnisse nicht aus um zu verstehehn wie das Skript umgestellt/erweitert werden muss um auch die von Vaillant verwendeten „SubService“ erfassen zu können.
Hier geht es mir in erster Linie um die Daten der Solaranlage, welche unter „B509“ gesendet werden.

Kann mir hier jemand bei behilflich sein?

Nun muss ich doch nochmal fragen: habt ihr am Konverter nochmal eine eigene 24V-Versorgung angeklemmt oder bezieht ihr die vom Bus?

Hallo dfhome,

ich verwenden den einfachen Konverter von der eBus Wiki Seite.
Aufgebaut auf Lochrasterplatine.
Der kann zwar „nur“ die Daten vom eBus lesen aber meine Vaillant-Steuerung ist recht gesprächig. (Nur leider verstehe ich sie noch nicht so recht:()

Spannungsversorgung wir hier über ein 78L05 direkt vom Bus abgenommen.
Wenn ich die Dokumente recht verstanden habe (Kapitel 10.6) brauchst Du bei einer eigenen Spannungsversorgung eine galvanische Trennung (über Optokoppler).

Gruß Stefan

Bei mir kommt die Spannung auch vom Bus.
Bezüglich Vaillant Befehl, der ist hier dokumentiert.

So wie das aussieht läuft der aber nicht als Broadcast, sondern die 5-6 verschiedenen Sensoren werden gezielt angefragt.
Paste doch mal die Telegramme mit den entsprechenden Anfragen vom Master und Antworten vom Slave.

Hallo wupperi,

hier ist einmal ein Mitschnitt der eingelaufenen Daten meiner Vaillant-Steuerung.
Vielleicht ist damit ja was anzufangen.
Leider verstehe ich nicht genug von php und Programmierung um das Skript um den SubService von Vaillant zu erweitern.
Interessant wären hier die Temperaturen und der Solarertrag!

Gruß Stefan

dump.rar (10.9 KB)

Hallo Leute - babba hier :cool:

ich muss eins richtig stellen: Das ganze ist nicht auf meinem Mist gewachsen - ich hatte mich lediglich als ‚Lötknecht‘ für wupperi zur Verfügung gestellt.

Die Schaltung von diesem Link ist lediglich geeignet um auf dem eBus zu lauschen, d.h. es können keine Befehle abgesetzt werden. Ja, die Schaltung gewinnt die Versorgungsspannung aus dem Bus-Signal.

Beim Debug habe ich festgestellt, dass die Schaltung einen Fehler enthält und zwar muss die gezeigte Diode von ebus+ nach R3 (2,21K) durch eine Drahtbrücke ersetzt werden. Wenn man den Pegelwandler MAX232ACPE nimmt, kommt man mit 0.1uF Kondensatoren für C1 - C4 aus, was die Sache einfacher macht.
Ich persönlich habe keinen eBus zu Hause am laufen und kann daher für weitere Fragen leider nicht sachdienlich sein.

Grüsse aus Wiesbaden
Dieter

Denke das Vaillant Telegramm kann nicht ausgewertet werdne, weil die Funktionen das so noch nicht zulassen. In Deinem Dump (und auch in der Vaiilant Doku ist der Befehl so aufgebaut:

Master Header, Number of Bytes, Payload, CRC und dann kommt direkt vom Slave: ACK, Number of Bytes, Payload, CRC, ACK. Die Funktionen können bisher nur Broadcasts des Masters auswerten, also jeweiles volle Pakete mit Source, Dest, Header usw…

Das ist Dein Telegramm: 10 26 B5 09 03 0D 7C 00 0B 00 01 00 9B 00

Ab hier Master:
0x10 = Quelle
0x26 = Ziel
0xB5 0x09 = Service
0x03 = 3 Datenbytes
0x0D = Kennzeichnung für Daten für Temp Sensoren
0x7c = Ein nicht näher beschriebener Sensor (Doku geht nur von 01-05)
0x00 = Parameter 2, nicht dokumentiert, hier null
0x0B = CRC

Dann Slave:

0x00 = ACK
0x01 = Anzahl der Datenbytes
0x00 = Datenbyte
0x9B = CRC
0x00 = ACK

Mit anderen Worten, der Sensor 0x7C Antwortet mit null. Das könnte auch irgendein Ventil oder sowas sein (0=zu, 1=auf)

hallo Wupperi,
habe mich gefreut, Infos über einen Vailland-Service zu lesen.
Seit einer Woche bin ich auch stolzer Besitzer einer Vaillant-Heizung incl Solar-Panel.
Mit vielen Infos aus dem WWW ist es mir gelungen, den E-Bus auszulesen.
Nach der Konverterschaltung habe ich einen ATMega eingesetzt um die Daten-Sätze aufzubereiten und danach ein VB-Programm, das die Datensätze analysieren und entschlüsseln soll.
Der Systemservice für Außentemperatur, Datum und Uhrzeit ist ja an einigen Stellen erläutert. Es war daher auch nicht sehr schwierig, diesen Datensatz zu finden und die Daten aufzubereiten.
Leider ist das bisher der einzige Service, den ich interpretieren kann.
Ich habe mal die eingegangen Datensätze sortiert und festgestellt, das sehr viel gleiche oder ähnliche zu finden sind (Anlage).
Das 1. Zeichen im Satz habe ich wohl fälschlicherweise davor generiert. Kann also vergessen werden.
Du hast hier ja den Datensatz eines anderen Users analysiert.
Du sprichst auch von einer Vaillant Doku.
So etwas habe ich noch nicht gefunden, kannst Du mir da weiterhelfen.
Vielen Dank schon mal,
Günter

Logdatei3.xls (19.8 KB)

Hallo Günter,

ff Services habe ich bei Dir gefunden:

B5 04, B5 05, B5 10, B5 11, B5 13, B5 16.

Bekannt sind: B5 04, B5 05, B5 10, B5 11, B5 16. Der B5 13er fehlt.

Die entschlüsselung der Services ist hier beschrieben: LINK

Hallo wupperi,
vielen Dank für die umfangreiche Info. Einige Beispiele habe ich abgeglichen, einige sind noch offen. Es sind viele Services beschrieben, die beim Abgleich mit meinen Daten kein plausibles Ergebnis liefern (z.B. Vorlauftemp 130 Grad). Beispiele zu Außentemp, Uhrzeit und Datum liefern brauchbare Ergebnisse. Ich werde in den nächsten Tagen weiter testen und mich wieder melden.
Gruß
Günter

Also in Deinem Service B5 10 komme ich auf 26 Grad Vorlauf Temp:

10 08 B5 10 09 00 00 34 FF FF FF 00 FF 00 CB 00 FF 00 B5

0x34 ist die Vorlauftemp. Datentyp ist DATA1C, also x=dec(y)/2. Somit also x=56/2 = 26 Grad.

In welchem Service schaust Du?

Hallo wupperi,
danke für die schnelle Antwort. Ja, da sind oder besser waren Daten.

Ich habe weitere Logs gezogen, die noch die alte Struktur hatten (Logdatei5), habe aber auch die Struktur der Datensätze (1. falsch generierte Stelle) überarbeitet (Logdatei7).

In diesen Logs habe ich gesucht.
Merkwürdigerweise hat der von Dir erkannte Datensatz nun eine andere Länge und das Datenfeld immer den Wert 00.
Leider habe ich aber auch nicht alle Ausprägungen der Datenfeldstrucktur, die du hier am Beispiel sehr gut beschrieben hast, erkannt.

Mach ich da vielleicht auch bei der Auswertung einen Fehler? Ich finde zwischen den Datensätzen immer eine Menge Zeichen EA FA FE, die ich erst immer und bei der neuen Auswertung nur zwischen AA und dem ersten von EA FA oder FE abweichenden Zeichen überlese.

Ich hab nochmal eine weitere alte Auswertung und eine neue als Beispiel angehängt.

Logdatei7.xls (59.5 KB)

Also ich greife das jetzt nochmal auf nachdem ich den ganzen Tag jetzt mal rumgespielt habe. Irgendwie kriege ich aber nichts sinnvolles hin.

Ich habe dein get_data Skript eingebaut und erstmal bis auf den 0700 er Service alles rausgenommen.

Nun versuche ich B509 abzufragen, konkret auf den Kollektor 1 ( 03h)


if ($telegram['DH'] == 0xB5 && $telegram['DU'] == 0x09)
{
$service = "B509";
setvalue (53705 /*[eBus\Last Read Service]*/,$service);
if (ord($telegram['DATA'][1]) == 0x03) {
IPS_LogMessage("Kol1", "Kollektor gefunden");
}
}

Das wird zwar geloggt, also scheint er was zu finden, aber wie komme ich jetzt an die Temperaturen, die befinden sich ja in dem Slave Teil…

Irgendeiner ne Idee?

Gruss,
Christian

Was sinnvolles kommt da bei mir aber nicht wirklich raus.