Modul für Buderus Wärmepumpe WPS

Begonnen von mike3436, 15 Januar 2016, 22:57:21

Vorheriges Thema - Nächstes Thema

mike3436

Hallo Sido,
Frohes Neues Jahr!

Leider kann ich aus dem Log so auch nichts genauses interpretieren.
Es sieht aber so aus, als wenn die Kommunikation nicht funktioniert.
Bei mir sieht es so aus:
2017.12.10 14:34:54 3: myKM273: KM273_InitInterface
2017.12.10 14:34:54 3: Opening myKM273 device /dev/ttyACM0
2017.12.10 14:34:54 3: Setting myKM273 serial parameters to 115200,8,N,1
2017.12.10 14:34:54 3: myKM273: CAN_DoInit
2017.12.10 14:34:54 3: myKM273 device opened
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList entry readCounter=0 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList send R01FD7FE00
2017.12.10 14:34:54 3: myKM273: CAN_Read unknown data 'V0100'
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList entry readCounter=0 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=19 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList entry readCounter=0 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=18 readIndex=0

2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList read T09FD7FE0 len=7 value=1277921000706 readCounter=76170

2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=17 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=16 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:54 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=15 readIndex=0
2017.12.10 14:34:55 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:55 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=14 readIndex=0
2017.12.10 14:34:55 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:55 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=13 readIndex=0
2017.12.10 14:34:55 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:55 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=12 readIndex=0
2017.12.10 14:34:55 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:55 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=11 readIndex=0
2017.12.10 14:34:56 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:56 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=10 readIndex=0
2017.12.10 14:34:56 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:56 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=9 readIndex=0
2017.12.10 14:34:56 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:56 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=8 readIndex=0
2017.12.10 14:34:57 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:57 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=7 readIndex=0
2017.12.10 14:34:57 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:57 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=6 readIndex=0
2017.12.10 14:34:57 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:57 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=5 readIndex=0
2017.12.10 14:34:58 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:58 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=4 readIndex=0
2017.12.10 14:34:58 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:58 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=3 readIndex=0
2017.12.10 14:34:58 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:58 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=2 readIndex=0
2017.12.10 14:34:58 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:58 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=1 readIndex=0
2017.12.10 14:34:59 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:59 3: myKM273: KM273_ReadElementList KM200active=0 KM200wait=0 readIndex=0
2017.12.10 14:34:59 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:59 3: myKM273: KM273_ReadElementList send T01FD3FE080000100000000000
2017.12.10 14:34:59 3: myKM273: KM273_ReadElementList send R01FDBFE00
2017.12.10 14:34:59 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:59 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=0
2017.12.10 14:34:59 3: myKM273: KM273_ReadElementList entry readCounter=76170 readIndex=4096

Bevor die Wartezeit abgelaufen ist, sollte die Heizung geantwortet haben.

  • Ist die rote LED am USBTin an? (Dann funktioniert schonmal die Kommunikation mit dem Modul selbst)
  • Meckert die Heizung? (Dann ist ggf. CAN-H und CAN-L vertauscht)
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

mike3436

ZitatKann ich es vielleicht noch weiter auf Low-Level testen?
Ein low level Test ist relativ einfach:
Interface /dev/ttyACM0 mit Terminal öffnen
USBTin Kommandos
S4<Enter>
O<Enter>
eingeben, und dann sollten schon sporadisch CAN-Telegramme der Heizung empfangen werden
z.B.: T0806C270101 (CANID=0806C270, Länge=1, Data=01)
Gruß Rolf
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

sido

Hallo Rolf,
danke für die schnelle Antwort!
Ich bin schon ein Stück weitergekommen, die Kommunikation scheint zu funktionieren:
Ich habe mal meinen Windows-Rechner an den USBTin angeschlossen.
Wenn ich nun den USBtinViewer von Thomas Fischls Seite starte, kommt ein wahres Feuerwerk von Nachrichten (nur ein kleiner Ausschnitt):

time [ms] bytes
Connected to USBtin (FW0107/HW0100, SN: 0923)
94 08a43808h 2 02 75
94 00a43008h 0
500 08a15808h 1 21
500 00a15008h 0
547 089a4808h 2 08 4f
547 009a4008h 0
875 08aae808h 1 33
875 00aae008h 0
1078 08ac5808h 1 2
1078 00ac5008h 0
1188 089fe808h 2 01 fd
1188 009fe008h 0
1203 089ff808h 2 01 99
1203 009ff008h 0
1219 08a00808h 2 0f 50
1219 00a00008h 0
1234 08a01808h 2 0c 4e
1234 00a01008h 0
1266 08ae4808h 2 07 06
1266 00ae4008h 0
1297 089e8008h 4 00 00 01 02


Wenn ich nun den CAN-BUS der WP vom USBtin trenne, kommt nur die erste Zeile "Connected to...". Es sieht also so aus, als ob die Kommunikation funktioniert. Die WP läuft so auch seit einem Tag einwandfrei, d.h. ich vermute, dass sowohl CAN-L und CAN-H richtig angeschlossen sind, als auch die Terminierung korrekt ist. Über das KM200 FHEM Modul kann ich auch weiterhin einwandfrei mit der WP kommunizieren.
Was mich wundert, ist, dass keinerlei Nachrichten kommen, wenn ich HTerm unter Windows benutze. Und auf meinem Raspberry Pi 3 kommen auch keine Nachrichten, wenn ich "screen" oder "minicom" benutze und mich mit dem /dev/ttyACM0 verbinde.

Gruß,
Sido

sido

So, jetzt habe ich den USBtinViewer auch auf meinem Raspi3 installiert und es funktioniert auch! Das komische ist, dass USBtinViewer nur die Nachrichten empfängt, wenn ich die Default Baudrate von 125000 benutze und nicht wie hier vorgeschlagen 115200. Dann passiert rein gar nichts!

Gruß,
Sido

mike3436

#139
Hallo Sido,
115200 ist nur die Baudrate für die Serielle Schnittstelle ttyACM0 (=USB) - diese ist aber irrelevant für die Funktion.
125000 ist die CAN-Baudrate, und die wird über das USBTin Kommando "S4" aktiviert.

Das USBTin Device muss nicht unbedingt /dev/ttyACM0 sein - vielleicht liegt hierin das Problem?
Mal das USBTin abziehen und "ls" im Ordner "/dev" ausführen.
Hier sollte jetzt ttyACM0 nicht auftauschen.
Das gleiche nochmal mit USBTin und gucken, welches device jetzt auftaucht.

Gruß Rolf

Edit:
Ansonsten auch mal mit "verbose 4" loggen - dann werden alle empfangenen Daten geloggt
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

sido

Hallo Rolf,
ich glaube, dass Device ist schon korrekt mit /dev/ttyACM0
Der Hinweis mit verbose 4 war super. Ich habe damit mal ein Logfile generiert und angehängt. Ab Zeile 320 wird verbose auf 4 gesetzt und dann sieht man, dass auf meinem Bus sehr viel los ist!
Kannst du damit etwas anfangen?

Gruß,
Sido

mike3436

#141
Hallo Sido,
anscheinend wurde bei deiner WP das Protokol geändert.
Die Parameterliste ist ja bei jeder WP etwas anders, liess sich aber bisher beginnend mit R01FD7FE00 auslesen.
Dies macht das KM200 bei mir so beim Neustart.
Ob ich das neue Protokoll genauso interpretieren kann, weis ich nicht.
Du müßtest die Daten nach Einschalten des KM200 mal mitloggen (z.B. mit USBtinViewer - nicht mit FHEM).
Gruß Rolf

Edit:
Die  STM 120-2 hat wohl schon das KM200 oder ein äquivalentes Modul mit Netzwerkschnittstelle integriert.
Somit ist ein Abschalten des KM200 nicht möglich.
Eventuell haben es sich aber die Softwareentwickler von Bosch einfach gemacht, und die KM200 Platine mit identischer Software integriert.
Dann könntest du das System mal beim Einschalten mitloggen.
(WP über Hauptsicherung Ausschalten und nach kurzer Pause wieder Einschalten).
Ansonsten besteht wenig Hoffnung ...
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

sido

Hallo Rolf,
es stimmt, dass das KM200 Modul in die STM120-2 bereits integriert ist und es ist tatsächlich genauso unzulänglich wie bei dir! Man kann damit nur einen sehr begrenzten Satz an Informationen auslesen, die Soletemperaturen z.B. nicht.
Das integrierte KM200 Modul ist allerdings auch nicht über den CAN-Bus an der WP angeschlossen, sondern über den EMS-Bus. Naja, egal. Ich habe mal ein Logfile angehängt, welches ich mittels USBtinViewer direkt nach dem Einschalten der WP mitgeloggt habe.
Es wäre genial, wenn du das Protokoll entschlüsseln könntest, denn damit könnte man dann auf alle modernen Luft- und Sole-WPs von Junkers, Buderus und Bosch aus FHEM zugreifen. Das müssten alle Buderus mit dem neuen HMC300 Regler, statt dem älteren HMC10-1 sein, bei Junkers/Bosch ist es der neue HPC400 Regler, statt dem älteren SEC10-1 Regler.

Gruß,
Sido

mike3436

Hallo Sido,
in dem Log nach Start ist nur der gewöhnliche Datenaustausch erkennbar.
Ich habe mir mal die Installationsanleitung der STM120 angesehen und wie du schon beschrieben hast, ist das IP-Modul am EMS-Bus angeschlossen.
Nur Installationsmodul und IO-Modul sind mit CAN-Bus verbunden.
Ich gehe mal davon aus, dass nur die am IO-Modul angeschlossenen Sensoren über den CAN-Bus vom Installationsmodul abgefragt und über den EMS-Bus zum Bedienfeld/Regler gesendet werden.
Wahrscheinlich sieht man auch den Datenaustausch zwischen Installationsmodul und Regler nicht auf dem CAN-Bus - warum auch.

Man kann jetzt hingehen und die CAN-Daten in FHEM aufzeichnen und dann irgendwann später mal auswerten und zuordnen.
Das mach das KM273 Modul jetzt schon, man müsste aber den Abruf der Datentabelle sperren - der funktioniert ja nicht und füllt nur das FHEM-Log
Mehr ist wohl nicht drin!
(Eventuell hilft ein anders Modul weiter, das auf den EMS Bus aufsetzt.)

Gruß, Rolf
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

sido

Hallo Rolf,
das hört sich ja erstmal nicht so gut an... Kannst du mal ein Log von dir zur Verfügung stellen, wo der Datenverkehr nach dem Start des KM200 bzw. nach dem Abruf der Tabelle enthalten ist?
Ich habe schon den Eindruck, dass auch in meinem CAN-Verkehr nützliche Infos auszulesen sein müssten. Beispielsweise sind ja die Temp-Sensoren für die Sole nur am IO-Modul angeschlossen. IO-Modul und Installationsmodul wiederum kommunizieren nur über CAN. Da müsste ich also doch auch die Soletemps irgendwo in den CAN Protokollen finden, oder? Gerade diese Temps würden mich im Moment interessieren.

Gruß,
Sido

mike3436

Hallo Sido,
die Parametertabelle der Reglereinheit ist definitiv nicht dabei - das sind ca. 10000 Telegramme mit je 8 Byte Daten.
Und die wird auch nur vom KM200 abgerufen, bzw. von meinem Modul.

Aber es sind nätürlich alle an dem IO-Modul angeschlossenen Ein- und Ausgänge dabei.
Deren Zuordnung ist mühselig aber möglich.

Die kommen bei mir auch, haben aber andere CAN-Id's als bei dir.
Die Bedeutung must du selbst rausfinden, und es kann sein, dass die Temperaturwerte NTC Werte sind, die noch linearisiert werden müssen.
So ist das jedenfalls bei mir.
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

buster

Hallo Rolf ,

Erst mal ein gutes Neues !!!! Da es mir nach über einem Jahr problemlosen Betriebs (nach einem Stromausfall) mein Filesystem zerschossen hat. Musste ich ich nun alles neu aufsetzen. Funktioniert nun soweit wieder alles.
Nur ...Ich hatte im noch im Hinterkopf du hattest ein Attribut für den 2. Heizkreis in Planung. Ich finde dieses leider nicht in der aktuellen Version (13) die mit fhem ausgeliefert wird.
Gibt es da schon was oder ist dies einfach noch nicht umgesetzt ?

Gruß

Oli

mike3436

#147
Hallo Oli,

ab der Version 14 ist der 2. Heizkreis integriert (Attribut HeatCircuit2Active=1)
Über Update wird die aktuelle Version 15 geladen!
(Hab die Version 15 noch im ersten Beitrag angehängt)

Gruß Rolf
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

buster

Hallo Rolf,

hatte das Update vergessen ;-). Alles wieder Top !!

Danke und Gruß

Oli

sido

Hallo Rolf,
ich habe nun ein paar Nachrichten dekodieren können. Aber wie schaffe ich es nun diese als Readings in FHEM zu bekommen?
Z.B. die Rücklauftemperatur ist T089E8808h. Wie bringe ich es dem 26_KM273.pm Modul nun bei, die Liste nicht aus der WP auszulesen, sondern meine eigene Liste zusammenzustellen?

Gruß,
Sido