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
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/ (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!
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!