Panasonic Wärmepumpe WH-MDC05F3E5 Geisha Parameter auslesen

Begonnen von raspi, 11 Dezember 2017, 17:38:45

Vorheriges Thema - Nächstes Thema

raspi

Hallo,
seit September 2017 läuft bei mir eine WH-MDC05F3E5. FHEM auf einem Raspberry habe ich seit ca. 2 Jahren zu meiner vollsten Zufriedenheit im Einsatz,
da lag der Gedanke nahe die Parameter der Wärmepumpe in FHEM zu visualisieren.
Also ran an den Datenbus

######################################################################################
#Das nachbauen und in Betrieb nehmen der Schaltung nach dieser Anleitung erfolgt auf eigene Gefahr.                                                  #
#Das anzapfen der Leitung zwischen Wärmepumpe und der Originalfernbedienung führt selbstverständlich zu einem Garantieverlust.  #
#Bei Kurzschluß oder Überspannung auf den Leitungen kann natürlich die Fernbedienung und/oder die Wärmepumpe kaputt gehen.    #
#Bevor man irgendetwas tut, die Wärmepumpe immer stromlos machen und noch etwas warten bis sich die Elko's entladen haben.     #
######################################################################################

zwischen Fernbedienung und WP (SmartScope ist super für so etwas), die Datenübertragung ist RS232, allerdings mit einer
Baudrate von 960 Baud,8,E,1 . So eine Baudrate konnte ich bei mir nirgends einstellen, also einen Pic16F1939 geschnappt und ihn werkeln lassen,
960 Baud rein, 19200 Baud raus, das hat erst mal funktioniert ich wollte allerdings eine "normale" Schaltung ohne große Extra's.
Zum Abgriff des Datenbusses mit galvanischer Trennung habe ich eine kleine Schaltung entworfen (siehe Anhang).
Bei mir geht vom Ausgang dieser Schaltung ein Telefonkabel 4x0,6 mm² ca. 10m lang zu einem ELV RS232-USB Wandler UM2102, der hängt am Raspberry.
Ohne Trick lassen sich bei diesem Modul zwar auch nur 600 oder 1200 Baud einstellen, aber mit etwas Programmierung sind es genau 960 Baud.
Baudrate eines ELV RS232-USB Wandlers UM2102 ändern um den Datenbus einer
Panasonic Wärmepumpe WH-MDC05F3E5 (Geisha) zu belauschen und in FHEM
zu integrieren. FHEM läuft auf einem Raspberry Pi3.

Baudrate des Moduls ändern:

pyusb installieren:

$ sudo apt-get update
$ sudo apt-get install python-pip  #if you don't have pip installed already
$ sudo pip install pyusb

cp210x-program (1.0) installieren und in Betrieb nehmen
tar -xvzf /cp210x-program-1.0.tar.gz

mit der nachfolgenden Zeile wird die Baudrate bei 1200 auf 960 Baud verändert.
/cp210x-program-1.0/cp210x-program -p -F eeprom.hex -w --set-baudrate 1200:9E58,FE0C,1

mit der nachfolgenden Zeile wird der Produktstring geändert, wer das möchte
/cp210x-program-1.0/cp210x-program -w --set-product-string='1200=960 for raspi'

Abfrage des EEPROM Inhaltes:
/cp210x-program-1.0/cp210x-program
[usb device]
product_string = 1200=960 for raspi
serial_number = WKACOVRBMAYQARHQ
vendor_id = 10C4
product_id = EA60
version = 1.00
bus_powered = no
max_power = 500
locked = no
part_number = 2
vendor_string = Silicon Labs

[baudrate table]
1500000 = FFF0, FFFA, 1 # 1500000 Baud, 12 us
1500000 = FFF0, FFFA, 1 # 1500000 Baud, 12 us
1200000 = FFEC, FFF8, 1 # 1200000 Baud, 16 us
921600 = FFE6, FFF6, 1 #  923077 Baud, 20 us
576000 = FFD6, FFF0, 1 #  571429 Baud, 32 us
500000 = FFD0, FFEE, 1 #  500000 Baud, 36 us
460800 = FFCC, FFEC, 1 #  461538 Baud, 40 us
256000 = FFA2, FFDC, 1 #  255319 Baud, 72 us
250000 = FFA0, FFDC, 1 #  250000 Baud, 72 us
230400 = FF98, FFD9, 1 #  230769 Baud, 78 us
153600 = FF64, FFC5, 1 #  153846 Baud, 118 us
128000 = FF44, FFB9, 1 #  127660 Baud, 142 us
115200 = FF30, FFB2, 1 #  115385 Baud, 156 us
  76800 = FEC8, FF8B, 1 #   76923 Baud, 234 us
  64000 = FE89, FF73, 1 #   64000 Baud, 282 us
  57600 = FE5F, FF63, 1 #   57554 Baud, 314 us
  56000 = FE53, FF5F, 1 #   55944 Baud, 322 us
  51200 = FE2B, FF50, 1 #   51173 Baud, 352 us
  38400 = FD8F, FF15, 1 #   38400 Baud, 470 us
  28800 = FCBF, FEC7, 1 #   28812 Baud, 626 us
  19200 = FB1E, FE2B, 1 #   19200 Baud, 938 us
  16000 = FA24, FE0C, 1 #   16000 Baud, 1.000 ms
  14400 = F97D, FE0C, 1 #   14397 Baud, 1.000 ms
   9600 = F63C, FE0C, 1 #    9600 Baud, 1.000 ms
   7200 = F2FB, FE0C, 1 #    7201 Baud, 1.000 ms
   4800 = EC78, FE0C, 1 #    4800 Baud, 1.000 ms
   4000 = E890, FE0C, 1 #    4000 Baud, 1.000 ms
   2400 = D8F0, FE0C, 1 #    2400 Baud, 1.000 ms
   1800 = CBEB, FE0C, 1 #    1800 Baud, 1.000 ms
   1200 = 9E58, FE0C, 1 #     960 Baud, 1.000 ms
    600 = 63C0, FE0C, 1 #     600 Baud, 1.000 ms
    300 = B1E0, FE0C, 4 #     300 Baud, 1.000 ms


wird der Anschluß mit diesen Parametern geöffnet kommen die Datenpakete der Geisha im raspberry an
/dev/ttyUSBx@1200,8,E,1

1200 Baud muß man trotzdem einstellen, das Modul liest aber mit 960 Baud ein.

das soll es für heute erst mal gewesen sein, in kürze folgt Teil 2, das Protokoll soweit ich es entschlüsseln konnte.
Viel Spaß beim nachbauen.




der-Lolo


raspi

Hallo,
es ist schon eine Weile her.
Hier kommen die Register, die ich bis jetzt entschlüsseln konnte.

Datenpaket von Fernbedienung zu Wärmepumpe besteht aus 4 Byte
Byte 1=dez 170  = Startbyte immer gleich
Byte 2=Datensatznummer
Byte 3=0  =0 bei Abfrage   =x bei Speicherung eines neuen Wertes
Byte 4=CRC  die 8Bit Summe aus den Bytes 1 bis 3

Datenpaket von Wärmepumpe zur Fernbedienung besteht aus 4 Byte und ist die Antwort auf das Paket der Fernbedienung
Byte 1=dez 85  = Startbyte immer gleich
Byte 2=Datensatznummer
Byte 3=Inhalt des Datensatzes
Byte 4=CRC  die 8Bit Summe aus den Bytes 1 bis 3

Datensatznummer
16=0         ???
17=0         =64 beim abtauen
18=8         Außentemperatur=8 Grad
19=37         Vorlauftemperatur
20=0         aktueller Fehler, geht wieder auf 0 wenn fehler behoben dez 38=Fehler H72(Speichertemperaturfühler)
                                156=Fehler H76(Kommunikationsfehler der Fernbedienung)
21=33         Rücklauftemperatur
22=39         Speicher(Puffer)temperatur
23=35                 Kompressorfrequenz
24=0         last Error
25=0         ???
26=1         ???
27=3         Bit 0     gesetzt=ein
         Bit 1   gesetzt=heizen
         Bit 2     gesetzt=kühlen
         Bit 3     
         Bit 4   gesetzt=Speicher(Puffer)
         Bit 5
         Bit 6   gesetzt=Quiet
         Bit 7
28=0         ???
29=246         Lowbyte heizen 3*256+246=1014 W aktueller Stromverbrauch
30=3           Highbyte heizen 3*256+246=1014 W
31=0         Lowbyte kühlen
32=0         Highbyte kühlen
33=0         Lowbyte bei Speicherbetrieb
34=0         Highbyte bei Speicherbetrieb
35=64         Pumpe Geschwindigkeitsstufe dez 16=Stufe 1,
         32=Stufe 2
         48=Stufe 3
         64=Stufe 4
36=0         ???

--------------------------------------------------------------------------------------------------------------------------

Register 129 bis ... werden nur übertragen, wenn etwas geändert wird oder beim starten ( Strom zuschalten )
129 = Reset Error(Taste an der FB)
130      Einstellen der niedrigen Außentemperatur 
131      Einstellen der hohen Außentemperatur 
132      Einstellen der Wasseraustrittstemperatur bei niedriger Außentemperatur   
133      Einstellen der Wasseraustrittstemperatur bei hoher   
134      Einstellen der Außentemperatur, bei der der Heizbetrieb in der Heizbetriebsart    abgeschaltet wird  170 134 25 73   85 134 25 244   25=25 Grad
135      Einsteller der Außentemperatur, bei der die Elektrozusatzheizung eingeschaltet wird
136   Cool Set
137      Heißwasserspeichertemperatur  170 137 50 101   85 137 50 16 
   Heißwasser(Tanktemperatur) auf 50 eingestellt
138   =1/2/3/4/5/0  Datensatz 170 138 2 54   85 138 2 225    das ist die    Parallelverschiebung der Heizkurve ,in dem Fall 2
141   ???
142   ???
143   ???
144   ???
145   ???
146   ???
147   ???
177   Cool enable
192   Bit 0=0 ext_Raumthermostat nein    =1 ext_Raumthermostat ja
   Bit 1=0 Tank_vorhanden nein      =1 Tank_vorhanden ja
   Bit 2=0 Solar_Vorrang nein      =1 Solar_Vorrang ja
   Bit 3 ???
   Bit 4 = Entkeimung nein         =1 Entkeimung ja
   Bit 5 = Zusatzheizung B         =1 Zusatzheizung A
   Bit 6 = Quiet ???
   Bit 7 = Wasserschutzfunktion nein   =1 Wasserschutzfunktion ja
193   Aufheizdauer Cool/Heat ist die Zeit in 30 min Schritten  2=60min, 1=30 min, 20=10h
194   Aufheizdauer_WW_Tank_int 5=5min, 30=30min, 95=95min
195   ???
196   Entkeimungstemperatur
197   Entkeimungsdauer
198   Bit 2 = Booster_Fun  nein      =1 Booster_Fun ja
   Bit 3 = Zusatzgehaeseheizung nein   =1 Zusatzgehaeseheizung ja
199   ???
200   ???
            





raspi

Ich habe in den letzten Tagen etwas weiter geforscht und konnte jetzt auch schreibend auf die Geisha zugreifen.
Der Ansatz ist folgender:
Meine Schaltung unterbricht die Datenleitung von der KFB zur WP (orange) in dem Moment, in dem Register 18 abgefragt wird.
An die Stelle des Datenpaketes der KFB kommt mein Datenpaket, die WP quittiert das ganze und dannach läuft die Kommunikation zwischen
KFB und WP ganz normal weiter.
Wenn der Modus umgeschaltet wird erscheint das auch in der KFB.
Auch ein löschen eines Fehlers funktioniert.
Bei Änderung der Sollwertverschiebung arbeitet die WP zwar mit dem neuen Wert, in der KFB steht aber nach wie vor der alte Wert.
Die Schaltung habe ich erfolgreich im Einsatz mit dem modifizierten UM2102 ELV-Modul.
Die Moduldatei im Anhang ( Perl-Experten werden die Haare zu Berge stehen ) habe ich so recht und schlecht zusammengezimmert,
aber sie funktioniert !!.
Bis Perl ind Ich Freunde geworden sind wird wohl noch einige Zeit ins Land gehen.
Das war's für heute erst mal, viel Spaß beim nachbauen. Auf eigene Gefahr natürlich ;)

der-Lolo

Vielen Dank raspi,
schön das nun auch schreibend was gemacht werden kann, über das Perl gefrickel lassen wir bei gelgenheit mal jemanden "rüberschauen" - ich kann das leider auch nicht... aber das wird schon.
Wichtig ist erstmal das funkrtionsprinzip, die Intensis lösung macht es glaube ich zumindest auch nicht anders - die mit Intensis manipulierten werte werden nicht in der KFB angezeigt. Aber das schrieb ich ja schon im HTD.
Ich setz jetzt mal meinen Neffen an die Hardware und schaue das ich auf euren stand komme.

Tausend Dank für Deine arbeit..!

vscope

raspi du bist ein genie! danke! :)
Habe bei mir nun hoffentlich den Fehler gefunden warum das ganze per esp8266 nicht funktioniert hat.
Gab noch mit der Softwareserial Bibliothek Probleme. Werde berichten bis weiter vorran geht.

der-Lolo


der-Lolo

Wie hat sich die Geschichte hier entwickelt? Gibts Neuigkeiten - ist das ganze zuverlässig..?
Gerade in der Übergangsphase habe ich oft schwierigkeiten ein ausgewogenes Raumklima mit der Geisha herzustellen, ihre WerksHysteres ist einfach zu groß...

raspi

seit Dezember 18 läuft die Schaltung bei mir ohne Probleme, einstellen kann man über FHEM alle Parameter die man auch über die KFB einstellen kann.
Pumpengeschwindigkeitsstufe,Heat_On_H20_Lo,Heat_On_H20_Hi,Sollwertverschiebung usw.

der-Lolo

#10
Danke raspi, dann wird es höchste Zeit für mich das ganze nachzubauen...


Ups - der Chip für den UM2102 hat sich scheinbar geändert...
Kannst Du abschätzen ob der hier funktioniert?

https://de.elv.com/elv-usb-modul-um2102n-komplettbausatz-150952?fs=2698089351

raspi

keine Ahnung, kommt auf einen Versuch an, von den neuen UM2102N besitze ich noch keines


peterAT

#13
Hallo raspi,
ich bin von den Vorteilen der WH-MDC05F3E5 als Heizung überzeugt. Noch  viel mehr von deinem Reverse Engineering des Panasonic Protokolls auf der RS232 Verbindung.
Wie deine Entwicklung zur beschriebenen Hardware und Software zeigt, gibt es scheinbar leider keine echte konventionelle Schnittstelle zur Steuerung der Geisha von extern. Daher bleibt aus meiner Sicht alleine deine Lösung übrig, wenn man mit dem Raspi die Steuerung übernehmen will.

Meine Motivation deine Schaltung nachzubauen und das Perl Skript für meine Zwecke zu adaptieren ist groß. Jedoch ist es mir ein persönliches Anliegen, die Schaltung zu verstehen, bevor ich diese Nachbaue.
Ich wäre dir sehr dankbar, wenn du die Zeit aufbringen könntest, für deine Lösung eine Dokumentation für nicht Elektrotechniker zu erstellen. Also warum die gewählten Bauteile in der beschriebenen Art verbaut wurden.

Idealerweise würde ich von dir einen fertigen Bauteil kaufen wollen, falls du dir das vorstellen könntest.  :)


Genau in solchen Momenten wie jetzt vermisse ich eine fundierte Elektrotechnik-Ausbildung   :-\

Grüße


EDIT:
Ich habe doch eine fertige Lösung vom Hersteller gefunden, welche auf die Aquarea WP einsetzbar ist: PAW-AW-KNX-1i
Was ich bis jetzt aus der Anleitung gelesen habe, kann man alle Parameter auslesen UND stellen, und arbeitet mit der FB zusammen.
Kosten ca .200€

Danke

der-Lolo

Ja, es gibt die KNX lösung - es gibt auch eine Modbus Lösung...
Bei KNX schreckt mich ab das ich sonst keine KNX Infrastruktur habe,
bei der Modbus Lösung ist es der stolze Preis von 400€.