Modul für Buderus Wärmepumpe WPS

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

Vorheriges Thema - Nächstes Thema

mike3436

#150
Hallo Sido,
ich überarbeite das Modul so, dass das Abfragen der Liste abschaltbar ist - Gedult  :)
Eine Formel zur Linearisierung der (bzw. meiner) Analogwerte in eine Temperaturwert habe ich auch schon erstellt.
Gruß Rolf

PS: Wahrscheinlich wäre aber ein EMS Interface günstiger für dich - ich gehe mal davon aus, dass hier alle Daten zwischen Regler und IO-Platinen ausgetauscht werden.
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

mike3436

Hallo Sido,
hier die neue Version 0016 des Moduls.
Neues Attribut  ListenOnly=1 setzen, dann wird der CAN-Bus nur gelesen und die CAN-Daten geloggt
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 ist ja super-genial! Vielen Dank! Ich habe das Modul gerade probiert und es funktioniert ganz prima!
Dann kann ich jetzt noch ein paar weitere Werte suchen.

Gruß,
Sido

mike3436

#153
Hallo Sido,
bist du mit deiner Analyse weitergekommen?
Sind deine Temperaturwerte auf dem Bus linearisiert, und direkt über einen Faktor (z.B. 0.1) umrechenbar?

Bei mir werden, wie schon mal geschrieben, unlinearisierte Analogwerte übertragen
Ich habe meine automatisch gesendeten CAN Werte mal mit den von mir äquivalenten gelesenen Parametern gegenübergestellt, und es ergibt sich eine identische Tabelle/Funktion für alle Temperatursensoren:

Temperatur   Widerstand   Analogwert (CAN)
-5   19770   827
0   15280   783
5   11900   734
10   9330   681
15   7370   625
20   5870   569
25   4700   512
30   3790   456
35   3070   405
40   2510   356
45   2055   313
50   1696   271
55   1405   236
60   1170   205
65   980   178
70   824   150
75   696   130

Die Widerstandswerte habe ich aus dem Installationshandbuch, aber die bilden keinen erkennbaren Zusammenhang mit den gesendeten CAN-Werten . Mit der nachfolgenden Formel lässt sich der CAN-Wert in eine Temperatur umrechnen:
f( x ) = 105.81916402086969 - 0.28577699398241035 x + 0.00035619134104995136 x^2 - 2.0925659550495e-7x^3

Vielleicht hilft dir das noch weiter, 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 den Hinweis. Ich habe auch erst nicht alle Werte gefunden, die ich gesucht habe. Ich habe dann auch nach den Widerstandwerten aus dem Installationshandbuch gesucht. Nachdem du aber das Modul modifiziert hattest, war es eigentlich ganz einfach. Alle Temperaturen die ich bisher gefunden habe sind linearisiert und müssen nur mit 0.1 multipliziert werden.

Folgende Dinge habe ich bislang gefunden:
<Verflüssigertemperatur_TC3>,088D2808
<Rücklauftemperatur>,089E8808
<Leistungsaufnahme>,089FA808
<Kompressorleistung>,08AEB808
<Aktuelle_Heizleistung>,08AE0808
<Sole-Eingangstemperatur>,088D4808
<Sole-Ausgangstemperatur>,088D0808
<Kompressortemperatur>,088D3808
<Heißgastemperatur>,088D1808
<Sole-Pumpe_Leistung>,08A15808

Gibt es eine Möglichkeit, dass ich diese Tabelle in das Modul integriere, so dass ich die Werte im Klartext in Fhem abrufen könnte?

Gruß,
Sido

mike3436

#155
Hallo Sido,

ich habe das Modul so erweitert, dass eine Tabelle bei ListenOnly automatisch geladen wird.
Die Datei "KM273ElementList.json" muss im Verzeichnis ".\log" liegen (wo auch "fhem.save" liegt).
Die Datei muss folgendes json Format haben:

{
"088D2808":{"format":"tem","text":"Verfluessigertemperatur_TC3"},
"089E8808":{"format":"tem","text":"Ruecklauftemperatur"},
"08AEB808":{"format":"pw3","text":"Kompressorleistung"},
"08A15808":{"format":"int","text":"Sole-Pumpe_Leistung"}
}

Die Tabelle entspricht der schon aktuell im Modul enthaltenen Struktur - deswegen die für dich vielleicht merkwürdig erscheinenden Bezeichner.
Der neue Reading-Name z.B HW_GT7 muss der FHEM Reading Nomenklatur für Variablennamen entsprechen (keine Leerzeichen/Sonderzeichen/Umlaute)
Die von mir aktuell definierten Formate:

    'int' => { factor => 1      , unit => ''    },
    't15' => { factor => 1      , unit => ''    },
    'hm1' => { factor => 1      , unit => 's'   },
    'hm2' => { factor => 10     , unit => 's'   },
    'tem' => { factor => 0.1    , unit => '°C'  },
    'pw2' => { factor => 0.01   , unit => 'kW'  },
    'pw3' => { factor => 0.001  , unit => 'kW'  },
    'sw1' => { factor => 1      , unit => ''    },
    'sw2' => { factor => 1      , unit => ''    },
    'rp1' => { factor => 1      , unit => ''    , 'select' => [ '0:HP_Optimized', '1:Program_1', '2:Program_2', '3:Family', '4:Morning', '5:Evening', '6:Seniors' ] },
    'rp2' => { factor => 1      , unit => ''    , 'select' => [ '0:Automatic', '1:Normal', '2:Exception', '3:HeatingOff' ] },
    'dp1' => { factor => 1      , unit => ''    , 'select' => [ '0:Always_On', '1:Program_1', '2:Program_2' ] },
    'dp2' => { factor => 1      , unit => ''    , 'select' => [ '0:Automatic', '1:Always_On', '2:Always_Off' ] },


Ich hoffe du kommst damit zurecht (Datei mit deinen CAN-Id's jetzt auch im Anhang).

Auch für alle anderen:
Mit dem neuen Befehl StoreElementList wird die aktuell geladene Tabelle exportiert.
set myKM273 StoreElementList
Mit dem neuen Attribut LoadElementList wird die Tabelle beim Modulstart geladen - das Laden aus der WP erfolgt dann nicht mehr.
attr myKM273 LoadElementList 1

Bei "ListenOnly=1" wird die ElementList auch geladen, aber keine Tabelle mit get/set aufgebaut.
Bei "LoadElementList=1" wird die ElementList auch geladen, und die get/set Kommandoliste sowie die Pollingliste aufgebaut.
Die Pollingliste wird über das in der externen ElementList gesetze Flag "read":1 aufgebaut.

Wichtig: für das aktuelle Modul ist JSON notwendig
sudo apt-get install libjson-perl

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,
vielen Dank für die erneute Anpassung des Moduls!
Ich hatte mir erst einmal mit UserReadings geholfen, werde aber mal das neue Modul probieren.

Gruß,
Sido

GeminiServer

#157
Hallo zusammen,

zunächst mal: Klasse Job mike3436. Bin nun die ganzen Beiträge durchgegangen (eher überflogen) und habe versucht für mich die Informationen zusammenzutragen.

Meine WP: Logatherm WPS 10K-1  (2011 installiert)
Also: Mein Installateur bzw. Buderus sagte damals ebenfalls KM200 ist mit meiner WP nicht kompatibel. Danach hab ich die ganze Recherche sein gelassen.
Ausstattung: Habe nur die Pumpe und außen Temperaturfühler. Sonst nichts. 

Heute bin ich per Zufall auf diesen Beitrag gestoßen und bin nun heiß drauf. Aktuell habe ich zu 100% Hausautomatisierung mit KNX realisiert. Dazu gehört auch die Heizungssteuerung (Heizungsaktoren mit Integrierter Regelung). Egal.

Meine Zusammenfassung, was ich benötige:
1. Sicherstellen dass die WP einen CAN anschluss hat!
2. USBtin EB USB-CAN Adapter besorgen (z.B.: Amazon)
3. Installieren! Muss ich was beachten oder einfach USBtin an den CAN bus der WP klemmen und gut ist?
    Terminierung -  USBtin wird das einzige sein, was da dran hängt. Muss der Terminiert werden? Was ist da zu tun?
4. Zunächst einmal testen ob alles klappt? USBtin tool verwenden?
5. Fhem Modul für WP daten auslesen und verwerten?

Alles so richtig oder gibt es da noch was zu beachten?

Danke & Gruß,
GeminiServer

P.s.: Mit fhem und Modulen habe ich bisher nichts gemacht, eher mit Selfbus, openhab, knxd unterwegs. Der Rest ist Fleißrbeit.. Eventuell gibts ja eine standalone variante um die daten der WP auszuwerten bzw. einzustellen. Cool wäre es, wenn ich per KNX auf die Daten zugreifen könnte. Muss aber erstmal verstehen wie das hier alles funktioniert ;)


Nachtrag 15.04.2018: Habe nun (fast) alles verstanden ;).
CANbus am WPS 10K-1 ist vorhanden. Kabel ist gezogen. Raspberry PI CANbus Adapter kommt die Tage. Info hier. USBTin verwendet die gleichen Bauteile. Kommt bei mir direkt auf die Hutschiene im Zählerschrank. Der Rest wird wohl Fleißarbeit werden. 

mike3436

#158
Hallo GeminiServer,

ich gehe davon aus, daß das Modul mit deiner WPS 10k-1 zusammenarbeitet - der_da hei eine WP von 2008 und die geht auch - nur ganz neue WP's mit integriertem KM200 laufen nicht mit dem Modul.
Ich weis nicht, was du als FHEM-Server verwenden willst - mit dem Raspi + USBTin und kurzem CAN-Kabel (bis 1m) sollte es keine Probleme geben.
Ich habe ca. 6m dazwischen und habe die Terminierung deshalb in der WP deaktiviert und am USBTin aktiviert (Lötbrücke bzw. selbst eingelöteter Jumperanschluss).
Wenn das FHEM Modul KM273 anläuft und der USBTin korrekt angesprochen wird, leuchtet die LED und der Rest sollte dann bei korrekt verbundenem Kabel automatisch gehen.
Du kannst auch vorher das USBtin über Raspi/Laptop per Telnet oder USBTin-Tool testen, aber das wäre für mich erst der Schritt, wenn es nicht funktioniert.
Auch FHEM auf einem Windows Laptop kannst du zum Testen verwenden - Parametrierung hier "define myKM273 KM273 COMx@115200".

Habe deinen Nachtrag gerade erst gelesen!
Ich würde den USBtin verwenden - ich benutze kein SocketCAN sondern rede direkt über die serielle ASCII Schnittstelle mit dem USBtin.
Wenn dein Modul nicht als serielles Device eingebunden wird, und dann über die gleichen ASCII Befehle verfügt, dann funktioniert erst mal nichts!

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

mike3436

Hallo zusammen,

ich habe die letzten Änderungen am Modul released und wird somit über 'update' aktualisiert.

Das Modul wurde kompatibel gehalten, und sollte auch ohne installietes JSON weiterhin laufen.
Wer JSON installiert hat kann die Datei ElementList.json speichern und beim Start laden.

Mit dem Befehl StoreElementList wird die aktuell geladene Tabelle exportiert.
set myKM273 StoreElementList
Mit dem Attribut LoadElementList wird die Tabelle dann beim Modulstart geladen - das Laden aus der WP erfolgt dann nicht mehr.
attr myKM273 LoadElementList 1

Kollisionen auf dem CAN-Bus und Probleme beim Laden der Liste sollten damit jetzt vermieden werden.
Für interessierte steht somit die komplette Liste der Parameter und Stati zur verfügung
Wer möchte, kann dann über die Liste Readings hinzuzufügen oder löschen, indem das read-Flag auf 1 oder 0 gesetzt wird (2 für optionalen 2. Heizkreis).
Theoretisch können jetzt auch die Bezeichner der Readings angepasst werden.

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

DO7RH

#160
Hallo zusammen,

ich habe bei mir eine Buderus WPS 10K1 verwende nur den USBtin am CAN Bus.
auch bei mir kommt die Meldung "Anschluss an I/O Karte AHB kontrollieren" ober aber das die Verbindung zum Raumfühler E11.TT nicht passt. Im Menu ist dieser dann auch immer aktiviert. Wenn ich den Raumfühler von Hand auf "Nein" setzte, ist auch erst einmal alles gut.
Ich habe schon beide schwarzen Klemmblöcke in der WPS ausprobiert, was aber keinen Unterschied macht.
Auch habe ich das CAN Bus Kabel auf 20 cm verkürzt, mit der Terminierung hin und her probiert etc.
Bei einem Neustart vom Raspi setzt sich die WPS gelegentlich den Raumfühler, was dann zu einem Alarm führt.

Habt ihr schon eine Idee, wie man die Fehlermeldung verhindert?

mike3436

Hallo,
bisher gab es wohl keine befriedigenden Erkenntnisse zu dem Thema.
Hardwareprobleme in der Verkabelung des CAN-Busses sind zwar nicht auszuschliessen, aber eher unwahrscheinlich, wenn das KM273 ansonsten immer zuverlässig Daten liefert.
Richtig herausgefunden haben wir auch nicht, ob das USBtin Modul, das Raspi-Image, FHEM, oder das KM273-Modul ursächlich für die CAN-Bus-Strörung ist.
Das "define initialUsbCheck" sollte nicht aktiv sein - hierbei hatte ich meine grössten Bedenken, das dabei ungewollte Befehle auf den CAN-Bus gesendet werden.
Bei mir tritt das Problem (leider) nicht auf - ich benutze hier noch einen Raspi2 und ein altes Wheezy Image, das nur über update/upgrade aktualisiert wurde.
In der FHEM.cgf ist nur das KM273 eingetragen und eine FHEM2FHEM Bridge

Mit der letzten Erweiterung, dem Speichern und Laden der Elementliste wird der Datenverkehr beim Start des Moduls erheblich verkleinert.
Hast du das aktiv bzw. schon mal ausprobiert?
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

DO7RH

Hallo Rolf,

attr initialUsbCheck disable 1.
Ist also Deaktiviert und somit kann ich dieses ausschließen.
Ich nutze einen RasPi 3 mit Raspbian GNU/Linux 9 (stretch) und einer aktuellen FHEM Version.
Um den Fehler weiter ein zu grenzen, werde ich mal ein frisches Raspian installieren und nur den USBTin dran hängen. Kann aber ein paar Tage dauern.
Meine Vermutung ist, da sich die Fehlermeldung leicht verändert wenn ich das bis jetzt richtig beobachtet habe, dass die Steuerung der WPS merkt, dass am CAN Bus ein Teilnehmer hängt und erwartet dann, dass es sich um einen Raumfühler bzw. die I/O Platine handelt. Auch hier werde ich noch mal genauer drauf achten. Ich meine die I/O Platine wird nur bei einem der beiden CAN Bus Klemmen als Fehler gemeldet.
Ich bin mir noch nicht sicher, aber die Steuerung geht nur auf Alarm, wenn ich etwas am FHEM schraube. Wenn nur die Logfiles gefüttert werden und ich nicht aktiv etwas an der Konfig ändere o.ä. kommt auch kein Alarm auf der WPS.

Gruß
DO7RH

privat58

Hallo, ich habe jetzt eine gebrauchte IVT Air90 eingebaut. Diese stammt auch von Bosch Thermotechnik.
Das Modul bringt mir ein Haufen Readings und ich weiß auch zum Teil, was diese bedeuten.
Internals:
   CFGFN     
   DEF        /dev/ttyACM1@115200
   DeviceName /dev/ttyACM1@115200
   FD         41
   NAME       Waermepumpe
   NOTIFYDEV  global
   NR         170095
   NTFY_ORDER 50-Waermepumpe
   PARTIAL   
   STATE      opened
   TYPE       KM273
   VERSION    0017
   VERSION_USBTinHW 1.0
   VERSION_USBTinSW 1.8
   pollingIndex 0
   readAllIndex 0
   .attraggr:
   .attrminint:
   READINGS:
     2018-10-23 12:23:22   00000010        310
     2018-10-23 12:23:22   00004010        698
     2018-10-23 12:23:22   00008010        179
     2018-10-23 12:23:23   0000C010        1023
     2018-10-23 12:23:22   00014010        1023
     2018-10-23 18:43:20   01FD7FE0        2162688920
     2018-10-23 18:45:19   01FDBFE0        0
     2018-10-23 18:43:20   01FDFFE0        1991976508
     2018-10-24 17:04:44   08018001        1
     2018-10-24 17:04:33   08018010        0
     2018-10-24 17:04:44   0801C001        1
     2018-10-24 17:04:33   0801C010        0
     2018-10-24 17:04:44   08020001        1
     2018-10-24 17:04:33   08020010        0
     2018-10-24 17:04:44   08024001        1
     2018-10-24 17:01:49   08024010        0
     2018-10-24 17:04:22   08028001        1
     2018-10-24 17:01:38   08028010        1
     2018-10-24 17:04:02   0802C001        0
     2018-10-24 17:01:39   0802C010        1
     2018-10-24 17:04:04   08030001        0
     2018-10-24 17:01:39   08030010        0
     2018-10-24 17:06:05   08034001        0
     2018-10-24 17:01:39   08034010        0
     2018-10-24 17:04:02   08038001        0
     2018-10-24 17:08:42   09FFC001        1
     2018-10-24 17:08:42   09FFC010        1
     2018-10-24 17:02:08   09FFC020        1
     2018-10-24 17:02:08   09FFC030        1
     2018-10-24 17:02:08   09FFC060        1
     2018-10-24 17:09:18   10000001        249
     2018-10-24 17:07:09   10000010        269
     2018-10-24 17:09:02   10004001        194
     2018-10-24 17:04:17   10004010        698
     2018-10-24 17:09:01   10008001        288
     2018-10-24 17:04:17   10008010        179
     2018-10-24 17:08:41   1000C001        255
     2018-10-24 17:04:17   1000C010        1023
     2018-10-24 17:08:38   10010001        739
     2018-10-24 17:04:17   10010010        1023
     2018-10-24 17:09:08   10014001        743
     2018-10-24 17:04:20   10014010        1023
     2018-10-24 17:02:09   19FFC240        1
     2018-10-24 14:25:34   T1-Puffertemp   Error evaluating Waermepumpe userReading T1-Puffertemp: syntax error at (eval 1451281) line 1, near ") ("

     2018-10-24 07:20:24   state           opened
Attributes:
   AddToReadings T1-Puffertemp
   ListenOnly 1
   LoadElementList 1
   room       Heizung

Ich habe das selbe Problem mit den Temperaturen, wie im Januar schon einmal beschrieben. Leider habe ich Probleme über diese Formel
f( x ) = 105.81916402086969 - 0.28577699398241035 x + 0.00035619134104995136 x^2 - 2.0925659550495e-7x^3
ein userreading zu erstellen. Hat das schon einmal jemand so umgesetzt?
Dank erst einmal Steffen

mike3436

Hallo Steffen,
ich habe mal ein userReading erstellt und es funktioniert ganz gut, ist aber für viele Umrechnungen unübersichtlich lang, da alle im gleichen Attribut hintereinander liegen müssen.
Das Reading 08008270 spiegelt den Analogwert der Temperatur GT3 wieder
attr myKM273 userReadings GT3_TEMP1:08008270.* { my $v=ReadingsVal("myKM273","08008270",0);; $v=((-2.09256E-7*$v+3.56191E-4)*$v-0.285777)*$v+105.82;; }
Im Anhang der Vergleich der GT3 Temperaturen, 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