[Modbus] Wärmepumpe Therma V (HM123MR.U44) über Modbus anbinden

Begonnen von oelkanne, 27 Februar 2023, 20:13:01

Vorheriges Thema - Nächstes Thema

oelkanne

Ich versuche meine Therma V WP mit dem FHEM Modul ,,Modbusattr" abzufragen

Hardware: ESP8266 Modbus TCP-RTU Bridge wie hier: https://gitlab.com/clausmuus/lg-therma-v/-/tree/main/esp8266-modbus-tcp-rtu-bridge
Die Register der WP: register.pdf

Mein Problem: Ich verstehe die Herangehensweise als Modbusanfänger nicht so richtig.

Wenn ich das richtig verstanden habe muss ich jetzt ein Attribut definieren, um ein Register zu lesen.
Etwa so: attr WP obj-h30003-reading Wassereinlasstemperatur
Aber auch das bekomme ich in FHEM nicht hin.

Denn wie gebe obigen String ein?
Syntax ist: attr obj-[cdih][0-9]+-reading <meine Eingabe>

Ist das überhaupt der richtige Weg?
Weiß jemand rat?

Hier mal meine FHEM raw data.

defmod WP ModbusAttr 1 30 192.168.178.104:502 TCP
#   CFGFN     
#   DEF        1 30 192.168.178.104:502 TCP
#   DeviceName 192.168.178.104:502
#   EXPECT     idle
#   FD         52
#   FUUID      63fcfb96-f33f-4666-c1ef-227b26ea6f3f88e1
#   IODev      WP
#   Interval   30
#   LASTOPEN   1677523914.17956
#   MODBUSID   1
#   MODE       master
#   MODULEVERSION Modbus 4.4.13 - 4.12.2022
#   NAME       WP
#   NOTIFYDEV  global
#   NR         137296
#   NTFY_ORDER 50-WP
#   PARTIAL   
#   PROTOCOL   TCP
#   STATE      opened
#   TCPConn    1
#   TYPE       ModbusAttr
#   devioLoglevel 3
#   eventCount 95
#   nextOpenDelay 60
#   READ:
#   READINGS:
#     2023-02-27 19:51:54   state           opened
#   defptr:
#     WP         1
#
setstate WP opened
setstate WP 2023-02-27 19:51:54 state opened



Aurel_B

Halli hallo, funktioniert die Modbusverbindung grundsätzlich (scheint der Fall zu sein weil Status "opened")? Was ich sehr empfehlen kann zum Debuggen ist QModMaster https://sourceforge.net/projects/qmodmaster/, das ist super nützlich.

Modbus und FHEM kann am Anfang etwas überwältigend sein, hat man mal ein Register konfiguriert wird der Rest viieeell einfacher :-)

Es gibt einige Fallstricke. So wie es für mich aussieht, fangen bei deiner WP die Register mit 1 an. Bei Fhem allerdings starten sie bei 0. Und sie könnten in Hex sein, das geht aus deiner Doku für mich nicht ganz klar raus. FHEM will int. Daher würde ich mal bei QModMaster nachschauen (der zählt die Register auch beginnend mit 1!!) ob du dort mit "Read Holding Register (0x03)" und Register "30003" Dec eine Antwort bekommst. Wenn nicht das gleiche in Hex versuchen. Wenn das entsprechend klappt, so versuch doch mal dein Register mit

attr WP obj-h30002-reading Wassereinlasstemperatur

einzurichten. Dann noch ein

attr WP dev-h-defPoll 1

damit die Holding Register standardmässig abgefragt werden.

Jetzt sollte ein Reading Wassereinlasstemperatur mit einem entsprechenden Wert befüllt sein.  Dieser wird wohl noch nicht stimmen, du musst eventuell noch den Datentyp definieren (siehe "unpack") und sicherlich noch mit

attr WP obj-h30002-expr $val/10

den Rawvalue durch 10 dividieren (siehe deine Doku).

Probier das mal aus, bin gespannt auf deine Rückmeldung.

Ah und attr obj-[cdih][0-9]+-reading <meine Eingabe> mag auf den ersten Blick verwirren. [cdih][0-9]+ ist eine Regexp, das solltest du nicht wörtlich nehmen. Mit z.B. attr WP obj-h30002-bliblablo warst du schon auf dem richtigen Weg!

oelkanne

Hallo ansgru,

Vielen Dank für deine Ausführungen. Damit habe ich es nun hinbekommen! :-)

Auch der Tipp mit dem dem modbusprogramm QModMaster war super gut!

Damit konnte ich herausfinden, dass bei der original Registerbeschreibung der LG Wärmepumpe (pdf) die Halteregister und Eingangsregister vertauscht beschrieben sind. Volltreffer!

Schönen Sonntag!