(selber gelöst) Energiemessgerät SDM530-Modbus auslesen

Begonnen von franky08, 26 September 2022, 20:40:05

Vorheriges Thema - Nächstes Thema

franky08

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

Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

#1
Keiner einen Tipp wie ich es definieren muss?

Hier die Register:
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

#2
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.
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

#3
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.
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

StefanStrobel

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

franky08

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)
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

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
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...