Forum: Haus & Smart Home Buderus WP - CAN Bus Analyse


von Rolf S. (mike3436)


Lesenswert?

Hallo,
ich habe schon viele interessante Artikel hier im Forum gefunden, und 
möchte mit diesem Artikel auch mal etwas zurückgeben.

Ich habe eine Buderus Wärmepumpe WPS 8K-1 und möchte diese über meine 
Hausautomatisierung (FHEM) auslesen. Für die Buderus Heizungen gibt es 
ein Ethernet Gateway KM200 V2 welches den EMS und CAN Bus auslesen kann 
und die Informationen per Web-Kommando abrufbar zur Verfügung stellt. 
Leider ist die darüber abrufbare Information für die WP äußerst mager. 
Ich weiß nicht, ob das nur an dem FHEM Plugin liegt, weil dem die 
notwendigen Web-Links fehlen, oder ob der Hersteller die Firmware des 
KM200 bewusst noch knapp gehalten hat. Aber die von der zugehörigen 
Buderus App präsentierten Informationen sind auf ebenso magerem Niveau. 
Informationen über aktuelle Kreislauftemperaturen, Energieverbrauch, 
usw. die über das Terminal der WP abrufbar sind, werden nicht verfügbar 
gemacht.

Deshalb bin ich jetzt mal selbst tätig geworden und habe mich erst mal 
auf die Suche nach einem einfachen, an der Raspberry anschließbaren CAN 
Modul gemacht. Meine Wahl fiel auf USBtin und es war wohl nicht die 
Falsche - einen Datenverlust auch bei hoher Auslastung konnte ich nicht 
feststellen.

In der Doku des Entwicklers (Thomas Fischl) wird beschrieben wie man das 
Modul mit CAN-Stack ins Linux integriert.
Mir war das im ersten Schritt zu aufwendig, und ich habe einen anderen 
Weg ohne versucht:
Im Linux meldet sich das Modul als /dev/ttyACM0 und über das 
Terminalprogramm mincom lässt sich das Modul ansprechen:
minicom -b 115200 -o -D /dev/ttyACM0
Nach einigen Versuchen mit verschiedenen Baudraten hat sich 125kBaud als 
passend herausgestellt. Der Bus schreibt auch ohne angeschlossenes KM200 
regelmässig eine Fülle von Informationen.
Die Aufzeichnung habe ich dann mit ExtraPutty gemacht, diese Version 
kann eine Zeit ins log schreiben:
1
[20/10/15 - 22:42:33:563] T00048030 1 05  << Transmit 29Bit CanId = 0x00048030, 1 Byte Data = 0x05
2
[20/10/15 - 22:42:34:008] T00064030 2 0190
3
[20/10/15 - 22:42:34:058] T08070270 1 00
4
[20/10/15 - 22:42:34:443] T0005C030 1 00
5
[20/10/15 - 22:42:34:641] T00080060 1 00
6
[20/10/15 - 22:42:34:890] T00058030 1 00
7
[20/10/15 - 22:42:35:057] T08074270 1 01
8
[20/10/15 - 22:42:35:327] T00054030 1 00
9
[20/10/15 - 22:42:35:769] T00044030 1 10

Interessant wird es aber, wenn das KM200 angeschlossen wird. Dann wird 
nämlich eine komplette Liste der abrufbaren Details als Klartext 
gesendet:
1
R01FD7FE0 0
2
T09FD7FE0 7 0001298A06FD02
3
T01FD3FE0 8 00004E2000000000              << Anforderung vorbereiten, 20000 Bytes (0x00004E20) ab Offset 0
4
R01FDBFE0 0                               << Liste anfordern
5
T09FDBFE0 8 0000814A53C66A08
6
T09FDBFE0 8 0200000000000000
7
T09FDBFE0 8 001E414343455353 ..ACCESS
8
T09FDBFE0 8 4F524945535F434F ORIES_CO
9
T09FDBFE0 8 4E4E45435445445F NNECTED_
10
T09FDBFE0 8 4249544D41534B00 BITMASK.
11
T09FDBFE0 8 000161E1E1FC6600
12
T09FDBFE0 8 2300000005000000
13
T09FDBFE0 8 000D414343455353 ..ACCESS
14
T09FDBFE0 8 5F4C4556454C0000 _LEVEL..
15
T09FDBFE0 8 02A1137CB3EB0B26
16
T09FDBFE0 8 000000F000000001
17
...
18
T01FD3FE0 8 00004E2000004E20              << nächste Anforderung vorbereiten, 20000 Bytes ab Offset 20000 (0x00004E20)
19
R01FDBFE0 0                               << Liste anfordern
20
...
21
T01FD3FE0 8 00004E2000009C40              << nächste Anforderung vorbereiten, 20000 Bytes ab Offset 40000 (0x00009C40)
22
...
23
T01FD3FE0 8 00004E200000EA60              << nächste Anforderung vorbereiten, 20000 Bytes ab Offset 60000 (0x0000EA60)
24
...
25
T09FDFFE0 4 9434D9B6                      << Listenende

Alle Informationen der Tabelle habe ich nicht interpretieren können, 
aber wohl die für mich interessantesten:
Eine konstanter Header von 21 Byte, 1Byte Textlänge gefolgt vom mit 0 
abgeschlossenen Text:
1
Index ?????????????? Grenzw?? Grenzw?? Textlänge Text
2
0000 814A53C66A 0802 00000000 00000000 1E 4143434553534F524945535F434F4E4E45435445445F4249544D41534B00                         ACCESSORIES_CONNECTED_BITMASK
3
0001 61E1E1FC66 0023 00000005 00000000 0D 4143434553535F4C4556454C00                                                           ACCESS_LEVEL
4
0002 A1137CB3EB 0B26 000000F0 00000001 20 4143434553535F4C4556454C5F54494D454F55545F44454C41595F54494D4500                     ACCESS_LEVEL_TIMEOUT_DELAY_TIME
5
0003 007B130704 0471 00000000 00000000 11 4144444954494F4E414C5F414C41524D00                                                   ADDITIONAL_ALARM
6
0004 004E252950 0481 00000000 00000000 13 4144444954494F4E414C5F414C41524D5F3200                                               ADDITIONAL_ALARM_2
7
0005 00392219C6 0482 00000000 00000000 13 4144444954494F4E414C5F414C41524D5F3300                                               ADDITIONAL_ALARM_3
8
...
9
0A28 03B11E7055 0000 00000000 00000000 28 54494D45525F434F4D50524553534F525F53544152545F44454C41595F41545F4341534341444500     TIMER_COMPRESSOR_START_DELAY_AT_CASCADE
Die Liste enthält bei mir 1789 Datenpunkte!

Über die vom KM200 danach zyklisch abgerufenen Werte bin ich auf die 
Zuordnung Index zu CAN-Adresse gekommen:
1
[20/10/15 - 22:58:42:845] R05F7BFE0 0       << Lesen von Index 7DE, PROGRAM_VERSION
2
[20/10/15 - 22:58:42:855] T0DF7BFE0 2 0001  << Antwort = 1
3
[20/10/15 - 22:58:42:949] R05F77FE0 0       << Lesen von Index 7DD, PROGRAM_REVISION
4
[20/10/15 - 22:58:42:956] T0DF77FE0 1 00    << Antwort = 0
5
[20/10/15 - 22:58:43:053] R06687FE0 0       << Lesen von Index 9A1, UI_BRAND
6
[20/10/15 - 22:58:43:058] T0E687FE0 1 04    << Antwort = 4
CAN-Adresse Read = 0x04003FE0 | (Index << 14)
CAN-Adresse Write = 0x0C003FE0 | (Index << 14)

Die zwischen den einzelnen Can-Modulen der WP laufenden zyklischen 
Informationen haben ein anderes Adressformat.
Hier besteht noch Forschungsbedarf ...

: Bearbeitet durch User
von Felix L. (lustenbe)


Lesenswert?

Hallo Rolf,

interpretiere ich richtig, dass du den ECO-CAN Bus von Buderus angezapft 
hast? Bist du sicher, dass das KM200 mit dem ECO-CAN Bus funktioniert. 
Ist das KM200 nicht für die EMS Anbindung? Vielen Dank für einige 
Hintergrundinfos. Ich würde sehr gerne eine Logamatic 4000 Steuerung 
anbinden/anzapfen, um den Zustand abzugreifen wie auch Einstellungen 
vornehmen zu können...

Gruss, Felix

von Walter R. (Gast)


Lesenswert?

mike3436 hat das Thema anscheinend erfolgreich weiter verfolgt: er hat 
ein FHEM-Modul erstellt, um eine Buderus WPS via USBtin in FHEM 
einzubinden:
https://forum.fhem.de/index.php/topic,47508.0.html

... das als Info, falls jemand wie ich bei der Suche über diesen Beitrag 
hier stolpert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.