EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen

Begonnen von Burny4600, 21 März 2025, 12:48:37

Vorheriges Thema - Nächstes Thema

Burny4600

Ich habe einige RS485 Verbindungen mit unterschiedlichen Geräten im Einsatz.
Aber egal ob ich das RS485 Pi-Shield, WaveShare oder andere RS485 Schnittstellen im Einsatz habe, werden immer wieder Fehlermeldungen generiert.
Endgeräte sind EP-EVER PV-Komponeten, Deye PV-Komponenten und Eastron Energiezähler.
Bei den kurzen RS485 Verbindungen, maximale Länge 1,5m, ist nur ein 120E Widerstand am Endgerät angeschlossen. An den FHEM Schnittstellen ist kein Widerstand auf A+ und B- angeschlossen.
Bei den längeren RS485 Verbindungen ist sowohl an der Geräteseite als auch bei der FHEM Schnittstelle ein 120E Widerstand zwischen A+ und B- angeschlossen.
Ebenfalls ist der GND an der Geräteseite und an der FHEM Schnittstelle angeschlossen.
Einge Schnittstellen sind zudem über ser2net verlinkt, was aber die gleichen Fehlermeldungen bringen als eine direkte Verbindung.
Grundsätzlich kommen die Daten unter FHEM auch an, dennoch möchte ich diese Fehlermeldungen verhindern.

AUSZUG der LAST_ERROR Readings
EASTRON WaveShare M1    timeout waiting for reply to fc 4 to id 1, i200, len 26
EASTRON WaveShare M1    timeout waiting for reply to fc 4 to id 1, i200, len 26

EASTRON WaveShare M2    timeout waiting for reply to fc 4 to id 4, i0, len 18
EASTRON WaveShare M2    timeout waiting for reply to fc 4 to id 4, i200, len 26

EASTRON WaveShare M3    timeout waiting for reply to fc 4 to id 5, i342, len 32
EASTRON WaveShare M3    timeout waiting for reply to fc 4 to id 5, i104, len 2

EASTRON WaveShare M4     timeout waiting for reply to fc 4 to id 1, i104, len 2

EASTRON WaveShare M5    timeout waiting for reply to fc 4 to id 1, i374, len 8
EASTRON WaveShare M5    timeout waiting for reply to fc 4 to id 1, i0, len 18

EASTRON WaveShare M6    timeout waiting for reply to fc 4 to id 2, i0, len 32
EASTRON WaveShare M6    timeout waiting for reply to fc 4 to id 1, i0, len 14

EASTRON WaveShare M7    timeout waiting for reply to fc 4 to id 1, i0, len 32
EASTRON WaveShare M7    timeout waiting for reply to fc 4 to id 2, i0, len 14

M8    Reserve

Deye PV1 WaveShare    timeout waiting for reply to fc 3 to id 12, h500, len 1
Deye PV1 WaveShare    timeout waiting for reply to fc 3 to id 12, h666, len 2

Deye PV2 WaveShare    timeout waiting for reply to fc 3 to id 15, h514, len 5
Deye PV2 WaveShare    timeout waiting for reply to fc 3 to id 15, h591, len 5

EP-EVER Pi-Shild PV3    slave replied with error code 83 / 02, illegal data address

EP-EVER NoNameRS485 PV4    slave replied with error code 83 / 02, illegal data address


list ModbusRS485_2WS_OG2_HZR
Internals:
   CFGFN      /media/hdd/fhem/mycfg/schnittstellen_rasp02.cfg
   DEF        /dev/ttyACM1@9600
   DeviceName /dev/ttyACM1@9600
   EXPECT     idle
   FD         52
   FUUID      66881de9-f33f-f4d2-da3e-4cedc2ffd91c9e75
   LASTOPEN   1742211635.67558
   MODE       master
   NAME       ModbusRS485_2WS_OG2_HZR
   NOTIFYDEV  global
   NR         493
   NTFY_ORDER 50-ModbusRS485_2WS_OG2_HZR
   PARTIAL   
   PROTOCOL   RTU
   STATE      opened
   SerialConn 1
   TYPE       Modbus
   devioLoglevel 3
   devioNoSTATE 1
   eventCount 9
   nextOpenDelay 60
   nextQueueRun 1742557062.73234
   QUEUE:
     HASH(0x5571ffca68)
     HASH(0x5571e891d8)
     HASH(0x5571ed46e8)
     HASH(0x5571cfcbc0)
     HASH(0x5571e20008)
     HASH(0x5571e82fe0)
     HASH(0x5571bb40a0)
     HASH(0x5571bf0218)
     HASH(0x5571e24a40)
     HASH(0x5571f123b8)
     HASH(0x5571634b88)
     HASH(0x55717c76f0)
     HASH(0x5571d830d0)
     HASH(0x55719527b0)
     HASH(0x5571bcbf80)
     HASH(0x5572197088)
     HASH(0x5571dd2648)
     HASH(0x5571c7a6e0)
     HASH(0x5571c93d70)
     HASH(0x557133df98)
     HASH(0x5571d5a640)
     HASH(0x5570a190e8)
     HASH(0x5571bc4f00)
   READ:
     BUFFER    
   READINGS:
     2025-03-21 10:05:22   LAST_ERROR      timeout waiting for reply to fc 3 to id 15, h591, len 5
     2025-03-17 12:40:35   state           opened
   REMEMBER:
     lid        15
     lname      Deye_15k
     lrecv      1742557062.63206
     lsend      1742557062.60082
   defptr:
     Deye_15k   15
Attributes:
   alias      ModBus RS485 2 | WaveShare USB - OG2 Heizraum
   devStateIcon opened:lan_rs485@0CFB0C Open:lan_rs485@red disconnected:lan_rs485@red disabled:lan_rs485@orange
   devStateStyle style="text-align:left;font-weight:bold;"
   disable    0
   dropQueueDoubles 1
   group      Schnittstellen Modbus
   icon       lan_rs485
   queueDelay 1
   queueMax   200
   queueTimeout 20
   room       _RxTx
   showError  1
   sortby     01.02

list ModbusRS485_1WS_EG_VR
Internals:
   CFGFN      /media/hdd/fhem/mycfg/schnittstellen_rasp02.cfg
   DEF        192.168.17.185:44851
   DeviceName 192.168.17.185:44851
   EXPECT     idle
   FD         10
   FUUID      67b5c89b-f33f-f4d2-7223-f064a5307ca304fc
   IODev      ModbusRS485_1WS_EG_VR
   LASTOPEN   1742495828.10091
   MODE       master
   NAME       ModbusRS485_1WS_EG_VR
   NOTIFYDEV  global
   NR         501
   NTFY_ORDER 50-ModbusRS485_1WS_EG_VR
   PARTIAL   
   PROTOCOL   RTU
   STATE      opened
   TCPConn    1
   TYPE       Modbus
   devioLoglevel 3
   devioNoSTATE 1
   eventCount 3
   nextOpenDelay 60
   QUEUE:
   READ:
     BUFFER    
   READINGS:
     2025-03-18 13:38:37   LAST_ERROR      timeout waiting for reply to fc 4 to id 1, i200, len 26
     2025-03-20 19:37:08   state           opened
   REMEMBER:
     lid        1
     lname      HTZ_SDM630M_01
     lrecv      1742557124.31934
     lsend      1742557124.29492
   defptr:
     HTZ_SDM630M_01 1
Attributes:
   alias      ModBus RS485 1 | WaveShare USB - EG Vorraum HV
   devStateIcon opened:lan_rs485@0CFB0C Open:lan_rs485@red disconnected:lan_rs485@red disabled:lan_rs485@orange
   devStateStyle style="text-align:left;font-weight:bold;"
   disable    0
   dropQueueDoubles 1
   group      Schnittstellen Modbus
   icon       lan_rs485
   queueDelay 1
   queueMax   200
   queueTimeout 20
   room       _RxTx
   showError  1
   sortby     02.01

list ModbusRS485_AB_WS
Internals:
   CFGFN      /media/hdd/fhem/mycfg/schnittstellen_rasp02.cfg
   DEF        192.168.17.184:40401
   DeviceName 192.168.17.184:40401
   EXPECT     idle
   FD         58
   FUUID      6245d473-f33f-f4d2-401a-8391e63bf0d11667
   IODev      ModbusRS485_AB_WS
   LASTOPEN   1742211635.70036
   MODE       master
   NAME       ModbusRS485_AB_WS
   NOTIFYDEV  global
   NR         520
   NTFY_ORDER 50-ModbusRS485_AB_WS
   PARTIAL   
   PROTOCOL   RTU
   STATE      opened
   TCPConn    1
   TYPE       Modbus
   devioLoglevel 3
   devioNoSTATE 1
   eventCount 11902
   nextOpenDelay 60
   QUEUE:
   READ:
     BUFFER    
   READINGS:
     2025-03-21 12:39:30   LAST_ERROR      slave replied with error code 83 / 02, illegal data address
     2025-03-17 12:40:37   state           opened
   REMEMBER:
     lid        1
     lname      EPEVER_T3210AN_PV3
     lrecv      1742557171.13546
     lsend      1742557171.108
   defptr:
     EPEVER_T3210AN_PV3 1
Attributes:
   alias      ModBus RS485 | Pi Shield - AB Wetterstation
   devStateIcon opened:lan_rs485@0CFB0C Open:lan_rs485@red disconnected:lan_rs485@red
   devStateStyle style="text-align:left;;font-weight:bold;;"
   disable    0
   dropQueueDoubles 1
   group      Schnittstellen Modbus
   icon       lan_rs485
   queueDelay 1
   queueMax   200
   queueTimeout 20
   room       _RxTx
   showError  1

Ich vermute ich habe bei den Schnittstellen etwas vergessen. Hardware mäßig passt jedenfalls alles.
Mfg Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

holle75

#1
Ich klinke mich hier mal ein. Selbes Problem, viel an verschiedenen Einstellungen von modbus Devices rumgespielt, keine Verbesserung.
Ich bekomme die Fehler nur so halbstündlich.

Verstehe die Fehlermeldung auch nicht im Detail, also welches Device zB

timeout waiting for reply to fc 4 to id 2, i0, len 38
genau ist. Ich habe kein Device mit der ID 2.

EDIT: Ich referenziere den Thread mal im großen "modbus thread". Vielleicht findet Stefan die Zeit auch hier mal vorbeizuschauen.

holle75

#2
Ha, hoppala, ich habe sehr wohl eine ID 1 und ID 2. Komplett die Eaton Stromzähler die mit am Modbus hängen vergessen.
Von denen kommen wohl die Fehler.

Die sind über Rogers Template eingebunden. Längere Beobachtung bzgl Fehler dieser zwei:

Mo - 24.03.2025 - 08:41:51  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 43, i98, len 2
Mo - 24.03.2025 - 08:04:25  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14
Mo - 24.03.2025 - 07:59:16  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 14
Mo - 24.03.2025 - 07:56:41  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 26
Mo - 24.03.2025 - 07:23:56  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 14
Mo - 24.03.2025 - 06:47:24  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14
Mo - 24.03.2025 - 06:24:41  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14
Mo - 24.03.2025 - 06:16:41  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 32
Mo - 24.03.2025 - 05:42:04  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 38
Mo - 24.03.2025 - 05:24:55  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 14
Mo - 24.03.2025 - 05:18:31  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 26
Mo - 24.03.2025 - 04:53:41  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 26
Mo - 24.03.2025 - 04:50:09  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14
Mo - 24.03.2025 - 04:49:51  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 14
Mo - 24.03.2025 - 04:27:16  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14
Mo - 24.03.2025 - 04:24:37  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 14
Mo - 24.03.2025 - 03:36:57  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14
Mo - 24.03.2025 - 03:29:56  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 14
Mo - 24.03.2025 - 03:23:01  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14
Mo - 24.03.2025 - 02:43:50  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 14
Mo - 24.03.2025 - 02:21:52  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i72, len 4
Mo - 24.03.2025 - 02:21:31  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 26
Mo - 24.03.2025 - 02:21:01  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14
Mo - 24.03.2025 - 02:09:56  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 1, i0, len 32
Mo - 24.03.2025 - 01:59:35  Eastron LAST_ERROR: timeout waiting for reply to fc 4 to id 2, i0, len 14

Da ich dazu keine attr gesetzt habe, gerade keine Idee, wo man da ansetzen muss.

Da bei Burny4600 das IO Device auch Eastron (das kommt noch von der damaligen Implementation Rogers Beschreibung folgend) heißt, tippe ich mal auf das selbe Problem.

List von einem der Zwei:
Internals:
   DEF        2 5
   FUUID      5c86875c-f33f-6bb4-786b-47c84d97f6c46b6d
   IODev      Eastron
   Interval   5
   MODBUSID   2
   MODE       master
   MODULEVERSION Modbus 4.5.6 - 7.11.2023
   NAME       Xtender_AC_out
   NOTIFYDEV  global
   NR         675
   NTFY_ORDER 50-Xtender_AC_out
   PROTOCOL   RTU
   STATE      opened
   TYPE       ModbusSDM220M
   devioNoSTATE 1
   eventCount 1808
   DICACHE:
     3:
       UNPACK     
       EXPRS:
       EXTRAS:
       FNAMES:
     4:
       UNPACK     
       EXPRS:
       EXTRAS:
       FNAMES:
   FRAME:
   PICACHE:
     h12:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     h18:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %s
       ignoreExpr
       map        0:1stop.bit_no.parity, 1:1stop.bit_even.parity, 2:1stop.bit_odd.parity, 3:2stop.bits_no.parity
       mapDefault
       revRegs   
       rmapDefault
     h20:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %u
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     h28:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %s
       ignoreExpr
       map        0:2400, 1:4800, 2:9600, 5:1200
       mapDefault
       revRegs   
       rmapDefault
     h62720:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %s
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     h63760:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %s
       ignoreExpr
       map        0:0.001/imp, 1:0.01/imp, 2:0.1/imp, 3:1/imp
       mapDefault
       revRegs   
       rmapDefault
     h63776:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %s
       ignoreExpr
       map        1:import, 2:import+export, 3:import-export
       mapDefault
       revRegs   
       rmapDefault
     h86:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %s
       ignoreExpr
       map        1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 6:import+export.reactive.energy, 8:export.reactive.energy
       mapDefault
       revRegs   
       rmapDefault
     i0:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.1f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i12:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i18:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.1f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i24:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.1f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i30:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.1f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i342:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.3f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i344:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.3f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i36:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.1f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i6:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.2f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i70:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.1f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i72:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.3f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i74:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.3f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i76:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.3f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
     i78:
       bswapRegs 
       decode     
       encode     
       expr       
       format     %.3f
       ignoreExpr
       map       
       mapDefault
       revRegs   
       rmapDefault
   READ:
   READINGS:
     2017-05-02 02:59:20   CosPhi          -21.0 %
     2025-03-24 08:54:35   CosPhi__grd     -10.4
     2025-03-24 08:55:35   Current__A      2.41
     2025-03-24 08:55:36   Energy_export__kVArh 6759.252
     2025-03-24 08:55:16   Energy_export__kWh 0.000
     2025-03-24 08:55:36   Energy_import__kVArh 829.841
     2025-03-24 08:55:16   Energy_import__kWh 26687.801
     2025-03-24 08:55:00   Energy_total__kVArh 7589.092
     2025-03-24 08:55:10   Energy_total__kWh 26687.801
     2025-03-24 08:54:36   Frequency__Hz   50.0
     2025-03-22 18:02:11   Modbus_Node_adr 2
     2025-03-22 18:02:11   Modbus_Parity_Stop 1stop.bit_even.parity
     2025-03-22 18:02:19   Modbus_Speed__baud 9600
     2025-03-24 08:54:35   PowerFactor     1.0
     2025-03-24 08:55:35   Power__VA       530.9
     2025-03-24 08:55:35   Power__VAr      -103.1
     2025-03-24 08:55:35   Power__W        521
     2025-03-22 18:02:19   Relay1_Energy_Type import+export.active.energy
     2025-03-22 18:02:21   System_Measurement_mode import+export
     2025-03-22 18:02:11   System_Pulse_Width__ms 100
     2025-03-22 18:02:20   System_Pulse_constant 0.001/imp
     2025-03-24 08:55:35   Voltage__V      220.1
     2025-03-24 08:54:10   statEnergy_total__kWh Hour: 0.535 Day: 2.443 Month: 207.107 Year: 771.086
     2025-03-24 08:54:10   statEnergy_total__kWhDay 2.443
     2025-03-23 23:59:55   statEnergy_total__kWhDayLast 8.901
     2025-03-24 08:54:10   statEnergy_total__kWhHour 0.535
     2025-03-24 07:59:55   statEnergy_total__kWhHourLast 0.240
     2025-03-24 07:59:55   statEnergy_total__kWhLast Hour: 0.240 Day: 8.901 Month: 263.010 Year: 3980.814
     2025-03-24 08:54:10   statEnergy_total__kWhMonth 207.107
     2025-02-28 23:59:55   statEnergy_total__kWhMonthLast 263.010
     2025-03-24 08:54:10   statEnergy_total__kWhYear 771.086
     2024-12-31 23:59:55   statEnergy_total__kWhYearLast 3980.814
     2025-03-22 18:01:45   state           opened
     2025-03-22 18:02:11   system_demand_interval 352387168
   REMEMBER:
     lrecv      1742802936.33466
     lsend      1742802936.2913
   UPDATECACHE:
     i0:
       adr        0
       combine    i0 len 2 Voltage__V with i12 len 2 Power__W
       len        2
       objCombi   i0
       reading    Voltage__V
       span       14
       type       i
     i342:
       adr        342
       combine    i342 len 2 Energy_total__kWh with i344 len 2 Energy_total__kVArh
       len        2
       objCombi   i342
       reading    Energy_total__kWh
       span       4
       type       i
   gotReadings:
     Energy_export__kVArh 6759.252
     Energy_import__kVArh 829.841
   helper:
     _98_statistics Xtender_AC_in_statistic
     bm:
       CODE(0x38138f8):
         cnt        15
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        23.03. 18:41:25
         max        0.00027918815612793
         tot        0.00210332870483398
         mAr:
           HASH(0x388a7e8)
           HASH(0xcae7e8)
       CODE(0x3892488):
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.03. 08:55:04
         max        5.19752502441406e-05
         tot        9.98973846435547e-05
         mAr:
           HASH(0x388a7e8)
           Xtender_AC_out
           ?
       CODE(0x3894910):
         cnt        430
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        23.03. 20:04:18
         max        0.000394105911254883
         tot        0.0636627674102783
         mAr:
           HASH(0x388a7e8)
           Xtender_AC_out
           ?
   lastRead:
     h12        1742662931.03238
     h18        1742662931.03509
     h20        1742662931.03752
     h28        1742662939.19501
     h62720     1742662931.77808
     h63760     1742662940.69999
     h63776     1742662941.44721
     h86        1742662939.94919
     i0         1742802935.58866
     i12        1742802935.59173
     i18        1742802935.59304
     i24        1742802935.59432
     i30        1742802875.52344
     i342       1742802910.96322
     i344       1742802900.98834
     i36        1742802875.52612
     i6         1742802935.59027
     i70        1742802876.24851
     i72        1742802916.01277
     i74        1742802916.01538
     i76        1742802936.34115
     i78        1742802936.34391
Attributes:
   event-min-interval Power__W:900,Voltage__V:900,statEnergy_total__kWhDay:900
   event-on-change-reading Power__W:20,Voltage__V:4,Energy_total__kWh:0.1,statEnergy_total__kWhDay:0.1,statEnergy_total__kWhMonth:0.1,.*Last.*
   event-on-update-reading Power__W,Voltage__V,statEnergy_total__kWhDay
   group      Xtender
   polldelay-Voltage__V 1

holle75

Ok, man muss direkt in 98_ModbusSDM220M.pm schauen


Auszug bzgl i0 (Spannung)
my %SDM220MparseInfo = (
# Spannung, nur bei jedem 11. Zyklus: 10s --> 1min 50s
"i0" => { # input register 0x0000
name => "Line to neutral volts", # internal name of this register in the hardware doc
reading => "Voltage__V", # name of the reading for this value
# format => '%.1f V', # format string for sprintf
format => '%.1f', # format string for sprintf
polldelay => "x11", # only poll this Value if last read is older than 11*Iteration, otherwiese getUpdate will skip it
},

# Strom, nur bei jedem 3. Zyklus: 10s --> 30s
"i6" => { # input register 0x0006
name => "current", # internal name of this register in the hardware doc
reading => "Current__A", # name of the reading for this value
# format => '%.2f A', # format string for sprintf
format => '%.2f', # format string for sprintf
polldelay => "x3", # only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
},

# Leistung, bei jedem Zyklus: 10s
"i12" => { # input register 0x000C, Phase 1: Leistung
name => "Active power", # internal name of this register in the hardware doc
reading => "Power__W", # name of the reading for this value
# format => '%.f W', # format string for sprintf
format => '%.f', # format string for sprintf
},

was daran jetzt falsch ist, keine Ahnung ...

holle75

mal als halbe Zwischenlösung/verbesserung: Ein

attr Eastron busDelay 0.5
am IO Device hat die Error-Häufigkeit auf 1/10 reduziert. Ich nehme an, die Stromzähler antworten ab und zu nicht schnell genug.
In 98_ModbusSDM220M.pm

gibt es ein

combine      =>   40,

vielleicht ist das ein wenig üppig? Falls mal jemand eine Testreihe fahren möchte mit reduziertem Wert ;)

Burny4600

#5
Ich habe für die Eastron Zähler einige Anpassungen durchführen müssen, weil einiges nicht vollständig war, oder am Zähler selbst Fehler verursacht wurden.
Wenn ein Register nicht passte, verursachte dieser bei manchen Zähler einen ständigen Neustart. Ich hatte von Eastron die Registerlisten angefordert um die Modusmodule zu ergänzen, und zusätzlich ist in den Modulen nun ersichtlich um welchen Zähler es sich handelt der per Modul verbunden ist, sollte man irtümlich den falschen Zähler ausgewählt zu haben.

    "h64514" => {    # holding register 0xFC02
                    # SDM120M-V2 = 00 04 01 05, SDM630M-V2 = 00 70 00 00, SDM630M-CT-V1 = 00 79 00 00, SDM72D-M-2 = 00 89 00 00
                    name        => "Meter Code",            # internal name of this $
                    reading     => "Meter_Code",             # name of the reading for this v$
                    map            => "00040105:SDM120M-V2, 00700000:SDM630M-V2, 00790000:SDM630M-CT-V1, 00890000:SDM72D-M-2",    # map to convert visible values to internal numbers (for reading and writing)
                    unpack        => "H*",                    # hex pack / unpack code to convert raw values
                    format      => '%s',                    # format string $
                    poll        => "once",                  # only poll once$
            },

Das
combine      =>   40, probiere ich gleich mal bei dem älteren Eastron Zähler der die meisten Fehlermeldungen verursacht.

Bei den anderen Zähler teste ich
attr Eastron busDelay 0.5.

Einige Änderungen der Modbus-Schnittstelle habe ich schon durchgeführt und Verbesserungen erreicht. Nun das
busDelay 0.5ergänzt.

list ModbusRS485_2WS_EG_VR
Internals:
   CFGFN      /media/hdd/fhem/mycfg/schnittstellen_rasp02.cfg
   DEF        192.168.17.185:44852
   DeviceName 192.168.17.185:44852
   EXPECT     idle
   FD         53
   FUUID      67b5c89b-f33f-f4d2-6e0b-86099244c659eb22
   IODev      ModbusRS485_2WS_EG_VR
   LASTOPEN   1743062364.37974
   MODE       master
   NAME       ModbusRS485_2WS_EG_VR
   NOTIFYDEV  global
   NR         503
   NTFY_ORDER 50-ModbusRS485_2WS_EG_VR
   PARTIAL   
   PROTOCOL   RTU
   STATE      opened
   TCPConn    1
   TYPE       Modbus
   devioLoglevel 3
   devioNoSTATE 1
   eventCount 105
   nextOpenDelay 60
   nextQueueRun 1743062427.5914
   QUEUE:
     HASH(0x559a8dce60)
     HASH(0x559a525560)
     HASH(0x559b243988)
   READ:
     BUFFER    
   READINGS:
     2025-03-27 07:33:34   LAST_ERROR      timeout waiting for reply to fc 4 to id 4, i104, len 4
     2025-03-27 09:00:11   Profiler_Delay_sum 9.409
     2025-03-27 09:00:11   Profiler_Fhem_sum 0.249
     2025-03-27 09:00:11   Profiler_Idle_sum 18.762
     2025-03-27 09:00:11   Profiler_Read_sum 0.027
     2025-03-27 09:00:11   Profiler_Send_sum 0.031
     2025-03-27 09:00:11   Profiler_Wait_sum 1.521
     2025-03-27 09:00:26   QueueLength     3
     2025-03-27 09:00:11   Statistics_Requests 16
     2025-03-27 09:00:11   Statistics_Timeouts 0
     2025-03-27 08:59:27   state           opened
   REMEMBER:
     lid        4
     lname      PVA1_SDM630M_04
     lrecv      1743062426.89085
     lsend      1743062426.79539
   defptr:
     PVA1_SDM630M_04 4
   profiler:
     lastKey    Delay
     lastPeriod 58102080
     start:
       Delay      1743062426.93012
       Fhem       1743062426.89186
       Idle       1743062426.90664
       Read       1743062426.89087
       Send       1743062426.79391
       Wait       1743062426.79541
     sums:
       Delay      2.07396411895752
       Fhem       0.120440006256104
       Idle       24.1214258670807
       Read       0.0044252872467041
       Send       0.00740170478820801
       Wait       0.602463960647583
   statistics:
     lastPeriod 58102080
     sums:
       Requests   5
       Timeouts   0
Attributes:
   alias      ModBus RS485 2 | WaveShare USB - EG Vorraum HV
   busDelay   0.5
   devStateIcon opened:lan_rs485@0CFB0C Open:lan_rs485@red disconnected:lan_rs485@red disabled:lan_rs485@orange
   devStateStyle style="text-align:left;font-weight:bold;"
   disable    0
   dropQueueDoubles 1
   enableQueueLengthReading 1
   frameGap   1.0
   group      Schnittstellen Modbus
   icon       lan_rs485
   profileInterval 30
   queueDelay 5
   queueMax   100
   queueTimeout 5
   retriesAfterTimeout 0
   room       _RxTx
   showError  1
   skipGarbage 1
   sortby     02.02

EDIT 27-03-2025: Das Modul 98_ModbusSDM72DMV2.pm ist noch nicht ganz fertiggestellt.
Mfg Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

holle75

Moinsen, schaue ich mir mal an.

Der BusDelay ist am IO Device. EDIT: Ah, hast du gesehen.

Burny4600

#7
Für die EP-EVER PV-Komponeten habe ich keine vorgesetzte Modbus-Schnittstelle, sondern die DEF 1 60 192.168.17.184:40401 RTU verwendet. Somit sind für die EP-EVER Solarregler die Fehlermeldungen entfernt.

Bei den Deye Hybrid-Invertern teste ich das BusDelay.

Bei dem älteren Eastron Energiezähler (98_ModbusSDM630M_BG.pm) habe ich sowohl das Attribut busDelay 0.5 als auch im Modul das combine      =>  30, definiert. Dennoch kommt immer wieder ein timeout waiting for reply to......
Mfg Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

holle75

... hast du mal auf ganz blöd das Bus-Kabel kontrolliert und neu festgezogen? Hatte ich letzthin auf HM-wired Probleme nach 10 Jahren. Ich weiß, unwahrscheinlich aber ....

Wechsel mal die ID´s der Stromzähler oder die Anschlüsse um einen Defekt des einen Zählers auzuschließen?

Burny4600

Die IDs der Energiezähler brauche ich nicht wechseln.
Alle SDM630 Energiezähler besitzen einen eigenen RS485 Anschluss am WaveShare-Gerät.
Die Leitungen sind zudem sehr kurz. Die Anschlüsse sind geprüft, weil ich einen kompletten Umbau im Hauptverteiler wegen der Solaranlagen erst vor kurzem vorgenommen habe.
Der ältere Eastron-BG SDM630 Energiezähler ist der einzige der keinen GND Anschluss hat. Das ist eigentlich der einzige Unterschied zu den anderen Eastron Energiezähler.
Mit den vorgenommen Änderungen sind die Fehlerhäufigkeiten zumindest stark zurückgegangen, und kommen zwischen 5 und 10 Mal am Tag vor.
Die Fehlerhäfigkeit stört zumindest die Haustechnik nicht mehr. Vorher kam es sogar vor, dass sich die RS485-Schnittstelle unter FHEM sogar aufgehängt hatte und manuell wieder gestartet werden musste. Das ist zumindest jetzt bisher nicht mehr vorgekommen.

Ein Wechsel der WaveShare Schnittstelle des betroffenen Zählers hat nichts gebracht. Es ist  wieder der gleiche Eastron-BG Energiezähler ohne GND-Anschluss der die timeout waiting for reply to fc.... Fehler verursacht.
Ich denke das dieser Energiezähler immer schon diese Timeout-Fehler verursacht hatte, nur jetzt aktivierte ich das Attribut showError wegen des Aufhängens der Schnittstelle.
Auch bei anderen RS485-Geräten gabe es Timeout Fehlermeldungen, die aber jetzt mit den Anpassungen an den Schnittstellen fast alle verschwunden sind.
Ich werde noch einige Anpassungen testen um die restlichen Timeouts zu verhindern.
Mfg Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

holle75

Ja, das Busdelay hat auch bei mir deutlich geholfen. Lass wissen, wenn du noch mehr rausfindest.

Ohne das Busdelay und den dann sehr häufigen Fehlern hatte ich freezes in fhem die dann ZB den HMLAN-Funk rausgehauen haben. Um drei Ecken dann erst bei der Fehlersuche bei Modbus gelandet.

Stefan sagt, sein Modbus Modul sollte prinzipiell (ohne dedizierte Get Set Befehle) nicht blockierend wirken können. Ich bin auch zu wenig in der Materie drinnen um die Beobachtungen sinnvoll zu interpretieren. Auf die fhem performance wirken sich (zu viele) Fehler auf dem Bus aber definitiv aus. Bei dir und bei mir.

Burny4600

Ich bleibe jedenfalls dran noch Verbesserungen herauszufinden.
Ich denke ich werde in meinen Eastron-Modulen noch einige Änderungen für Tests vornehmen um die Performance zu verbesseren. Ein Modul für den SDM72 muss ich ohnehin noch fertigstellen.
Ich werde dann die Eastron-Module hier nochmals bereitstellen. Vielleicht sind dann meine Module soweit fertig um diese für FHEM nutzbar zu machen.
Die Vorabversionen sind ja schon in diesme Thread vorhanden. Wenn Fehler gefunden werden, bin ich natürlich dankbar auf jeden Hinweis.
Mfg Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

holle75

kannst du bei deinen Modulen gleich den SDM230M-V2 (meiner ist so alt, das wird wohl V1 sein. Obs da Unterschiede im Protokoll hat?) mit einbauen? im mapping ... https://www.eastroneurope.com/products/view/sdm230modbus

Zitat von: Burny4600 am 27 März 2025, 08:45:24Ich habe für die Eastron Zähler einige Anpassungen durchführen müssen, weil einiges nicht vollständig war, oder am Zähler selbst Fehler verursacht wurden.
Wenn ein Register nicht passte, verursachte dieser bei manchen Zähler einen ständigen Neustart. Ich hatte von Eastron die Registerlisten angefordert um die Modusmodule zu ergänzen, und zusätzlich ist in den Modulen nun ersichtlich um welchen Zähler es sich handelt der per Modul verbunden ist, sollte man irtümlich den falschen Zähler ausgewählt zu haben.

    "h64514" => {    # holding register 0xFC02
                    # SDM120M-V2 = 00 04 01 05, SDM630M-V2 = 00 70 00 00, SDM630M-CT-V1 = 00 79 00 00, SDM72D-M-2 = 00 89 00 00
                    name        => "Meter Code",            # internal name of this $
                    reading     => "Meter_Code",             # name of the reading for this v$
                    map            => "00040105:SDM120M-V2, 00700000:SDM630M-V2, 00790000:SDM630M-CT-V1, 00890000:SDM72D-M-2",    # map to convert visible values to internal numbers (for reading and writing)
                    unpack        => "H*",                    # hex pack / unpack code to convert raw values
                    format      => '%s',                    # format string $
                    poll        => "once",                  # only poll once$
            },


holle75

Mmh, gerade nochmal geschaut ... und meine Uraltdinger heißen tatsächlich SDM220modbus