Hallo in die Runde. Ich habe einen Stromzwischenzähler mit Modbus Ausgang über ein RS485 TCP Ethernet Gateway im Netzwerk. Das Teil funktioniert an einer Siemens LOGO! 8.3 wunderbar und ich kann diverse Werte auslesen. Nun möchte ich gerne das Input-Register 343(dez) mit fhem auslesen. Dises Register enthält die gesamten verbrauchten kWh die ich in fhem auswerten möchte. Ich habe schon einige Versuche mit attr obj-i343-reading und andere Kombinationen probiert, leider bekomme ich in fhem nichts ausgelesen. Anbei die Konfiguration in der LOGO!8 und fhem.
Der Zähler ist ein B+G-Tech Eastron SDM530-Modbus.
in fhem:
Internals:
CFGFN
DEF 1 slave 192.168.2.99:502 TCP
DeviceName 192.168.2.99:502
EXPECT request
FUUID 6331e5b8-f33f-cf17-beb1-7409ebd804861cbd
IODev Data4PLC
MODBUSID 1
MODE slave
MODULEVERSION Modbus 4.4.04 - 17.7.2021
NAME Data4PLC
NOTIFYDEV global
NR 28986
NTFY_ORDER 50-Data4PLC
PROTOCOL TCP
SERVERSOCKET
STATE Initialized
TCPConn 1
TCPServer 1
TYPE ModbusAttr
eventCount 3
READ:
READINGS:
2022-09-26 20:24:20 state Initialized
defptr:
Data4PLC 5
Attributes:
obj-i343-reading kWh
room Modbus
Kann mir da jemand weiterhelfen,
Vielen Dank
Keiner einen Tipp wie ich es definieren muss?
Hier die Register:
Ich habe das device nocheinmal neu definiert:
Internals:
CFGFN
DEF 1 5 192.168.2.99:502 TCP
DeviceName 192.168.2.99:502
EXPECT idle
FD 31
FUUID 63356265-f33f-cf17-9537-0d3e121cea216660
IODev ModA
Interval 5
LASTOPEN 1664477260.52438
MODBUSID 1
MODE master
MODULEVERSION Modbus 4.4.04 - 17.7.2021
NAME ModA
NOTIFYDEV global
NR 4099
NTFY_ORDER 50-ModA
PARTIAL
PROTOCOL TCP
STATE opened
TCPConn 1
TYPE ModbusAttr
devioLoglevel 3
eventCount 154
nextOpenDelay 60
OLDREADINGS:
QUEUE:
READ:
BUFFER
READINGS:
2022-09-29 21:26:56 kWh 0
2022-09-29 20:47:40 state opened
REMEMBER:
lid 1
lname ModA
lrecv 1664479661.82885
lsend 1664479661.77432
defptr:
ModA 1
gotReadings:
kWh 0
lastRead:
h15 1664461211.61639
h19 1664461215.62353
h21 1664461217.62895
h30340 1664459300.51603
h30342 1664459052.85919
h30343 1664461129.62301
h6 1664461202.59914
h8 1664461204.60314
i30000 1664478901.25426
i30001 1664479431.7001
i30049 1664479486.88027
i30343 1664479616.80206
Attributes:
obj-i30343-len 2
obj-i30343-poll 1
obj-i30343-reading kWh
obj-i30343-unpack n
room Modbus
Bekomme nun ein Reading kWh aber das ist immer 0, habe schon sämtliche Kombinationen von "unpack" und "len" durchprobiert. Habe auch die Adressen 30344 und 30342 probiert, also immer eine Adresse vorher und eine Adresse nachcher.
Wenn ich mein LOGO!8 Programm sehe, dann ist der Input ein 2 Word fload und das auszulesende Register ist das Input Register 30343. Mit diesem Attribut bekomme ich aber leider nur 0 als Wert.
Hallo,
Du solltest von der Protokoll-Adresse ausgehen. In der Tabelle ist die als 158 hex also 344 dezimal angegeben.
Also obj-i344-...
Zudem brauchst Du einen passenden unpack-code. Bei Länge 2 vermute ich dass das ein Float ist. also würde ich f> oder f< probieren.
Gruss
Stefan
Hallo es ist die dezimale Startadresse 342 und diese verwirrende Angabe in der Registertabelle war es auch, warum es ewig nicht funktioniert hat!
Hier, die jetzt funktionierende Config:
Internals:
DEF 1 15 192.168.2.99:502 TCP
DeviceName 192.168.2.99:502
EXPECT idle
FD 31
FUUID 63356265-f33f-cf17-9537-0d3e121cea216660
IODev ModA
Interval 15
LASTOPEN 1664571674.21405
MODBUSID 1
MODE master
MODULEVERSION Modbus 4.4.04 - 17.7.2021
NAME ModA
NOTIFYDEV global
NR 221
NTFY_ORDER 50-ModA
PARTIAL
PROTOCOL TCP
STATE 13408.49 kWh
TCPConn 1
TYPE ModbusAttr
devioLoglevel 3
eventCount 26978
nextOpenDelay 60
OLDREADINGS:
QUEUE:
READ:
BUFFER
READINGS:
2022-10-01 09:56:04 Ages 1.85
2022-10-01 09:56:04 Pges 324.42
2022-10-01 09:56:04 kWh 13408.49
2022-09-30 23:01:14 state opened
REMEMBER:
lid 1
lname ModA
lrecv 1664610964.50995
lsend 1664610964.46926
defptr:
ModA 1
gotReadings:
kWh 13408.49
lastRead:
h30335 1664526042.17107
h30336 1664526043.09246
h30337 1664526044.11685
h30338 1664526045.11935
h30339 1664526046.44629
h30340 1664526047.1216
h30341 1664526048.12395
h30342 1664526049.12718
h30343 1664529563.48897
h30344 1664526051.44923
h30345 1664526052.13279
i0156 1664535281.7009
i156 1664541780.10177
i30342 1664528292.80387
i30343 1664535431.76827
i342 1664610964.51388
i343 1664543170.92316
i344 1664543180.93729
i345 1664543096.21691
i346 1664542531.0602
i4 1664543155.59238
i48 1664610964.15117
i52 1664610964.36731
Attributes:
dev-i-defFormat %.2f
dev-i-defLen 2
dev-i-defUnpack f>
obj-i342-poll 1
obj-i342-reading kWh
obj-i48-poll 1
obj-i48-reading Ages
obj-i52-poll 1
obj-i52-reading Pges
room Modbus
stateFormat {sprintf("%.2f kWh", ReadingsVal("ModA","kWh",0))}
Habe händisch, gestern, die Register durchprobiert bis ich einen Treffer hatte, dann die benötigten Register definiert (jeweils eine Adresse weniger als in der Tabelle angegeben)
P.S. in der LOGO ist die dez. 343 wie im Manual angegeben die 343, da stimmen die Adressen, kann das sein das im Modbus Modul die Adressen bei 0 anfangen?
VG
Frank