Modul für Buderus Wärmepumpe WPS

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

Vorheriges Thema - Nächstes Thema

mike3436

Zitatbis zum hi kommt er noch, nach eingabe "< open can0 >" kommt nur noch (also kein ok danach)
< hi >< open can0 >
< error could not open bus >
In /etc/socketcand.conf muss can0 als interface eingetragen/hinzugefügt werden, da steht per default nur das virtuelle can interface vcan0 drin.
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

hbrockmann

sudo ip link set can0 type can bitrate 125000 restart-ms 100
sudo ip link set up can0
sudo socketcand -v -i can0

ich gehe davon aus, das du diese drei zeilen von seite 13 meinst?
die habe ich definitv drin und danach auch den socketcand restartet

mike3436

#197
Zitatich gehe davon aus, das du diese drei zeilen von seite 13 meinst?
die habe ich definitv drin und danach auch den socketcand restartet
Nein, für socketcand gibt es eine zusätzliche Konfigurationsdatei, in der alle verfügbaren Interfaces und auch ggf. eine Änderung der Portnummer eingetragen werden können.
Die meisten optionen sind mit '#' auskommentiert, aber unter 'busses' müssen alle über den Dienst zugreifbaren CAN-Interfaces eingetragen werden.
sudo nano /etc/socketcand.conf

# The network interface the socketcand will bind to
# listen = "eth0";

# The port the socketcand is listening on
# port = 29536;

# List of busses the daemon shall provide access to
# Multiple busses must be separated with ',' and whitespace
# is not allowed. eg "vcan0,vcan1"
busses = "can0,vcan0";

# Description of the service. This will show up in the discovery beacon
# description = "socketcand";

# AF_UNIX name. As alternative to bind to a TCP/IP socket the socketcand can
# listen on an AF_UNIX socket.
# When afuxname starts with a '/' a path for the AF_UNIX socket is created.
# Alternatively an abstact AF_UNIX namespace is allocated with afuxname
# afuxname = "socketcand";
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

hbrockmann

ich gebs nach diversen stunden erstmal wieder auf..

unter fhem bekomme ich den can-hat nicht wirklich zum laufen.. (unter iobroker problemlos)
evtl. versucht es ja noch mal jemand anderes mit dem can-hat oder ich habe irgendwann noch mal mehr geduld.


was mir jetzt in einem candump noch aufgefallen ist bei einem "kaltstart" der wp, es kommen sehr viele register mit einem "remote request":


00058200   [1]  remote request
00058201   [1]  remote request
00058210   [1]  remote request
00058211   [1]  remote request
00058260   [1]  remote request
00058261   [1]  remote request
0005C200   [1]  remote request
0005C201   [1]  remote request
0005C210   [1]  remote request
0005C211   [1]  remote request
0005C260   [1]  remote request
0005C261   [1]  remote request
00060200   [1]  remote request
00060201   [1]  remote request
00060210   [1]  remote request
00060211   [1]  remote request
00060260   [1]  remote request
00060261   [1]  remote request
00064200   [1]  remote request
00064220   [1]  remote request
00064260   [1]  remote request
01FFC030   [2]  remote request
01FFC040   [2]  remote request
01FFC050   [2]  remote request
01FFC060   [2]  remote request
01FFC180   [2]  remote request
01FFC181   [2]  remote request
01FFC182   [2]  remote request
01FFC183   [2]  remote request

das ist nur ein kleiner teil, sind >100..  die waren im normalen betrieb bisher nicht sichtbar.

mike3436

nur wenn der Test mit dem socketcand funktioniert und wie candump die empfangenen Daten liefert, dann kann das FHEM modul auch funktionieren.
Nach Ergänzung des can0 im /etc/sockcand.conf sollte die Kommunikation funktionieren, wenn wieder alles neu gestartet wird.
Die Parametrierung und start des socketcand muss jedesmal erfolgen:
sudo ip link set can0 type can bitrate 125000 restart-ms 100
sudo ip link set up can0
sudo socketcand -v -i can0

Der Test muss dann funktionieren:
nc 192.168.0.101 29536
< hi >< open can0 >
< ok >< rawmode >
< ok >< frame id time data >< frame id time data >...

läuft FHEM schon vorher auf dem Rechner los, und bekommt keine Verbindung, dann kann FHEM über die Web-Oberfläche mit Befehl 'shutdown restart' geresetet werden.
Das scheint noch ein Bug zu sein, über den ich gerade gestossen bin, und den ich noch ausräumen muss.
Nach dem FHEM Neustart wird bei mir aber direkt mit der WP kommuniziert und die Parameter ausgelesen.

Nur wenn es Probleme mit dem Leses der Parametertabelle gibt: Mein alter TestPi 1B schaft es nicht, die Parameterliste in Teilen mit der im Modul gesetzen Grösse von 4096 Bytes zu laden - hier kommen dann einfach zu viele CAN-Telegramme die im Socketcand Dienst gespeichert werden müssen, bevor sie von FHEm gelesen werden. Dies kann aber ggf. ein generelles Problem sein.
Eine Verringerung der Pakete auf 2048 Bytes in Zeile 2079/2080 hat hier aber geholfen:
    my $sendTel = sprintf("T01FD3FE08%08x%08x",2048,$KM273_ReadElementListStatus{writeIndex});
    $KM273_ReadElementListStatus{writeIndex} += 2048;
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

hbrockmann

auch der 4. komplett neue versuch führt zu keiner bei mir funktionierenden socketcand version..

könntest du bitte noch mal genau schreiben welche daten du an welches register sendest um z.b. die "readall" liste auszulesen damit ich es mal auf der funktionierenden umgebung mit den can-utils testen kann?
habe versucht es aus dem quellcode des fhem moduls raus zu lesen, aber da reichen meine coding kenntnisse nicht..

mike3436

Über die CAN-Kommunikation zum Auslesen der Parametertabelle hatte ich einen Artikel geschrieben
https://www.mikrocontroller.net/topic/380549
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

hbrockmann

#202
mike3436 hat für den durchbruch gesorgt..!
ein fettes dickes danke an ihn..!

nach dem der socketcand bei mir ums verrecken nicht laufen wollte,
hat er angeboten mal mit mir da drauf zu schauen und siehe da,
das problem war ein fehlerhaft als service gestarteter socketcand.

warum der nicht als service lief bleibt erstmal dahingestellt, fakt ist,
das er bei "normalem" start dann auch funktioniert hat und aus meiner
junkers ste60 problemlos eine liste der register ausgelesen hat.


viele einträge vorher...
"0DB87FE0":{"rtr":"05B87FE0","format":"int","max":16777216,"read":1,"min":0,"text":"E81_T81_CONNECTED","extid":"84245ee1cb0a70","idx":1761},
"0DB8BFE0":{"min":200,"max":800,"read":1,"rtr":"05B8BFE0","format":"tem","idx":1762,"extid":"ee79d5d3c40a73","text":"DHW_GT9_STOP_TEMP_2"},
"0DB93FE0":{"text":"DHW_GT9_STOP_TEMP","idx":1764,"extid":"eeb8cf723c0a74","max":800,"read":1,"rtr":"05B93FE0","format":"tem","min":200},
"0DB9BFE0":{"idx":1766,"extid":"c1bcc2391e0a77","text":"COMPRESSOR_SIZE","min":7,"max":13,"read":0,"rtr":"05B9BFE0","format":"int"},
"0DB9FFE0":{"format":"int","rtr":"05B9FFE0","read":1,"max":13,"min":7,"text":"COMPRESSOR_SIZE_2","extid":"c13f6909f10a78","idx":1767},
"0DBA3FE0":{"min":0,"format":"int","rtr":"05BA3FE0","read":0,"max":0,"extid":"033dc6687e0a7b","idx":1768,"text":"TEMP"},
"0DBB3FE0":{"read":1,"max":0,"format":"pw2","rtr":"05BB3FE0","min":0,"text":"STATS_ENERGY_OUTPUT_HEATING","idx":1772,"extid":"93bf5b63600a7d"},
"0DBC3FE0":{"text":"STATS_ENERGY_OUTPUT","extid":"935b8c70a60a7e","idx":1776,"format":"pw2","rtr":"05BC3FE0","read":1,"max":0,"min":0},
"0DBD3FE0":{"min":0,"max":0,"read":1,"rtr":"05BD3FE0","format":"pw2","idx":1780,"extid":"935f68951c0a7f","text":"STATS_ENERGY_OUTPUT_DHW"},
"0DBE3FE0":{"idx":1784,"extid":"93e11998f80a83","text":"STATS_ENERGY_OUTPUT_POOL","min":0,"read":0,"max":0,"format":"pw2","rtr":"05BE3FE0"},
"0DBF3FE0":{"text":"COMPRESSOR_SIZE_LW","extid":"e95c34d4210a89","idx":1788,"format":"int","rtr":"05BF3FE0","read":0,"max":170,"min":60},
"0DBF7FE0":{"extid":"e9b90c5dfe0a8a","idx":1789,"text":"COMPRESSOR_SIZE_LW_2","min":60,"rtr":"05BF7FE0","format":"int","max":170,"read":1},
"0DBFBFE0":{"rtr":"05BFBFE0","format":"int","max":0,"read":0,"min":0,"text":"COMPRESSOR_SIZE_INDEX","extid":"8178f2d1c80a8c","idx":1790},
"0DBFFFE0":{"max":0,"read":1,"rtr":"05BFFFE0","format":"int","min":0,"text":"COMPRESSOR_SIZE_INDEX_2","idx":1791,"extid":"8146dac5120a8d"},
viele einträge nachher...


nach weiteren erläuterungen durch ihn wurde dann auch klar wie man einzelne register abfragen kann.
ein test für "STATS_ENERGY_OUTPUT" über "cansend can0 05BC3FE0#R0" und gleichzeitigen "candump can0" in einer anderen session
gab eine antwort des abgefragten registers. 👍
can0 05BB3FE0 0 remote request
can0 0DBB3FE0 4 00 6B 52 F3
abgefragt wird also immer das "rtr" register, die antwort über das register mit dem arrayheader, in diesem fall 0DBC3FE0.

wie gesagt, ein dickes danke an ihn.. 🙇