FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: Burny4600 am 21 März 2025, 12:48:37

Titel: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 21 März 2025, 12:48:37
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.
Titel: Aw: RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 23 März 2025, 18:52:01
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.
Titel: Aw: RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 24 März 2025, 08:50:37
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
Titel: Aw: RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 24 März 2025, 11:45:19
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 ...
Titel: Aw: RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 24 März 2025, 12:19:40
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 ;)
Titel: Aw: RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 27 März 2025, 08:45:24
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.
Titel: Aw: EASTRON Zähler - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 27 März 2025, 09:02:20
Moinsen, schaue ich mir mal an.

Der BusDelay ist am IO Device. EDIT: Ah, hast du gesehen.
Titel: Aw: EASTRON Zähler - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 27 März 2025, 09:11:13
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......
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 28 März 2025, 09:34:18
... 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?
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 28 März 2025, 14:37:08
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.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 28 März 2025, 15:04:53
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.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 28 März 2025, 17:34:46
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.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 28 März 2025, 17:55:42
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$
            },
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Nobbynews am 28 März 2025, 18:07:14
Zitat von: Burny4600 am 28 März 2025, 17:34:46Ein Modul für den SDM72 muss ich ohnehin noch fertigstellen.
https://forum.fhem.de/index.php?topic=75638.msg1217182#msg1217182 (https://forum.fhem.de/index.php?topic=75638.msg1217182#msg1217182)
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 28 März 2025, 18:46:20
Mmh, gerade nochmal geschaut ... und meine Uraltdinger heißen tatsächlich SDM220modbus
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 29 März 2025, 12:38:17
Zitathttps://forum.fhem.de/index.php?topic=75638.msg1217182#msg1217182
Danke für den Hinweis, aber ich vereinheitliche meine Module für die EASTRON.

ZitatMmh, gerade nochmal geschaut ... und meine Uraltdinger heißen tatsächlich SDM220modbus
Ich habe mir die Modbusregister des SDM220 angesehen, und da gibt es doch einen großen Unterschied. Da ich den SDM220 nicht habe müsstest du mir einige Register überprüfen welchen Inhalt diese haben.

Diese Register gibt es beim SDM220 laut meiner Liste nicht.

System_Power_Demand_Import_Maximum__W
System_Power_Demand_Export__W
System_Power_Demand_Export_Maximum__W
Current_Demand__A
Current_Demand_Maximum__A
Total_Active_Energy__kWh
Total_Reactive_Energy__kVArh
Resettable_Current_Total_Active_Energy__kWh
Resettable_Current_Total_Reactive_Energy__kVArh

Demand_Time__min
Demand_Periode__min
System_Voltage__V
System_Current__A
System_Password_Lock
System_Password
System_Power__W
Relay1_Energy_Type
Relay2_Energy_Type
Serial_Number  
Meter_Code
Software_Version

Wenn bei Verwendung des SDM230 bei dir eine 0 in diesne Registern angeführt wird, gibt es diese Register nicht.
Diese kann ich dann entsprechend entfernen für ein 98_ModbusSDM220MV1.pm Modul.

Die Readings Serial_Number, Meter_Code und Software_Version werden meistens in den Registerlisten nicht angeführt, sind aber unter Umständen doch vorhanden. Bei dir wird wahrscheinlich der Meter_Code eine Nummer zur Identifikation enthalten. Diese benötige ich um sie bei allen Modulen zu ergänzen, um einen Vergleich mit dem SDM Energiezähler auszuführen ob man wirklich das richtige Modul verwendet.

Schick mir die Ergebnisse dieser Readings und ich kann das 98_ModbusSDM220MV1.pm für dich erstellen.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 29 März 2025, 13:12:13
in der 98_ModbusSDM220M.pm sind meines Wissens nach alle verfügbaren Register hinterlegt.

Ich habe eben versucht zusätzlich über

attr Xtender_AC_in obj-h64512-reading aaaSerial Number
attr Xtender_AC_in obj-h64514-reading aaaMeterCode
attr Xtender_AC_in obj-h64515-reading aaaSoftware Version

attr Xtender_AC_in dev-defLen 2
attr Xtender_AC_in dev-defShowGet 1
attr Xtender_AC_in dev-defUnpack f>
attr Xtender_AC_in dev-h-read 3
attr Xtender_AC_in dev-h-write 16

die anderen Register auch auszulesen, ohne Ergebnis. Weiss aber auch nicht, ob ich die zusätzlich zum Template so abfragen kann.

Das SDM230 template anstatt zu verwenden macht mir gerade ein wenig Angst. An den Zählern hängen recht viele Automatiken, Statistics, etc.

EDIT: Allerdings im IO Device gerade den Error "timeout waiting for reply to fc 3 to id 1, h64512, len 5" gefangen. Ob das jetzt bedeutet die Parameter sind falsch, oder das Register existiert nicht .... ?
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 29 März 2025, 13:58:07
Das du schon ein SDM220 Modul hast wusste ich nicht. Somit ist das hinfällig.

Was mir in deinem Modul aufgefallen ist, ist ein Register den es laut Liste nicht geben sollte.
"h86" => { # holding register 0x0056
reading => "Relay1_Energy_Type", # name of the reading for this value

Alle anderen Register sind in deinem Modul vorhanden.

Was gibt der Regsiter Relay1_Energy_Type aus? Wenn es diesen nicht gibt müsste eine 0 im Reading stehen. Ansonsten am Energiezähler umstellen und vergleichen ob sich das Reading geändert hat. Wenn dieser Parameter am Energiezähler nicht vorhanden ist, dann gibts auch kein Reading dazu.
Du kannst dann diesen Parameter in deinem Modul deaktivieren oder entfernen.

Was ich feststellen musste, sind leider nicht immer die Registerlisten vollständig.

Wenn du möchtest kannst du testweise diese Readings in deinem Modul hinzufügen um zu sehen was die Ausgabe ist.
"h64512" => { # holding register 0xFC00
# Serial Number Meter.
name => "Serial Number", # internal name of this register in the hardware doc
reading => "Serial_Number",     # name of the reading for this value
unpack => "I*",         # unsigned int32 pack / unpack code to convert raw values
format => '%u',         # format string for sprintf
poll => "once",         # only poll once after define (or after a set)
},

"h64514" => { # holding register 0xFC02
# SDM630M-V2 = 00 70, SDM630M-CT = 00 79, SDM72D-M-2 = 00 89
                    name        => "Meter Code",            # internal name of this $
                    reading     => "Meter_Code",      # name of the reading for this v$
map => "00700000:SDM630M-V2, 00790000:SDM630M-CT, 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$
},

"h64515" => { # holding register 0xFC03
# Software Version
                    name        => "Software Version",      # internal name of this $
                    reading     => "Software_Version",      # name of the reading for this v$
unpack => "H*", # hex pack / unpack code to convert raw values
format      => '%s',                    # format string $
                    poll        => "once",                  # only poll once$
},

Bei diesen Änderungen in deinem Modul verlierst du deine Statistikwerte nicht.
Du musst nur FHEM neustarten damit diese Readingänderung im Modul übernommen werden.

Wenn bei dir dann ein Wert für den Meter_Code ausgegben wird, würde ich diesen mit der genauen Bezeichnung deines Energiezählers gerne in meinen Modulen ergänzen.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 29 März 2025, 14:18:31
Das ist das Modul/template was Roger vor hundert Jahren gebaut hatte. Ich hatte es nur mal mit Stefans Hilfe angepasst als es Fehler gab.

2025-03-25 12:43:40 Relay1_Energy_Type export.active.energy
ist das Reading für "h86 => Relay1_Energy_Type". Was einem "export.active.energy" sagen soll ....?

Ich baue deine genannten Readings mal ins template ein. Wobei ich nicht weiss, ob das zu meinem obigen Weg einen Unterschied machen wird.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 29 März 2025, 14:31:37
keine Readings für die neuen Register. Schade.

Was mich wundert, der Error "timeout waiting for reply to fc 3 to id 2, h64512, len 5" kommt trotz "poll once" regelmäßig in jedem cycle. Zu "h64514" und "h64515" weder Readings noch Errors.

Sicher, dass die Parameter stimmen?

mal ein List nach den implementierten Änderungen
Internals:
   DEF        1 6
   FUUID      5c86875c-f33f-6bb4-b2c8-727efd671087a220
   IODev      Eastron
   Interval   6
   MODBUSID   1
   MODE       master
   MODULEVERSION Modbus 4.5.6 - 7.11.2023
   NAME       Xtender_AC_in
   NOTIFYDEV  global
   NR         670
   NTFY_ORDER 50-Xtender_AC_in
   PROTOCOL   RTU
   STATE      opened
   TYPE       ModbusSDM220M
   devioNoSTATE 1
   eventCount 12
   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
     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:32   CosPhi          -35.6 %
     2025-03-29 14:29:47   CosPhi__grd     -43.8
     2025-03-29 14:30:05   Current__A      0.35
     2025-03-29 14:30:21   Energy_export__kVArh 6186.158
     2025-03-29 14:30:21   Energy_export__kWh 1.068
     2025-03-29 14:30:21   Energy_import__kVArh 211.125
     2025-03-29 14:30:21   Energy_import__kWh 12638.029
     2025-03-29 14:30:15   Energy_total__kVArh 6397.283
     2025-03-29 14:29:56   Energy_total__kWh 12639.097
     2025-03-29 14:29:55   Frequency__Hz   50.0
     2025-03-29 14:24:42   Modbus_Node_adr 1
     2025-03-29 14:24:42   Modbus_Parity_Stop 1stop.bit_even.parity
     2025-03-29 14:24:43   Modbus_Speed__baud 9600
     2025-03-29 14:29:47   PowerFactor     0.7
     2025-03-29 14:29:47   Power__VA       74.2
     2025-03-29 14:29:47   Power__VAr      -51.4
     2025-03-29 14:30:05   Power__W        55
     2025-03-25 12:43:40   Relay1_Energy_Type export.active.energy
     2025-03-29 14:24:45   System_Measurement_mode import+export
     2025-03-29 14:24:42   System_Pulse_Width__ms 100
     2025-03-29 14:24:44   System_Pulse_constant 0.001/imp
     2025-03-29 14:30:05   Voltage__V      217.9
     2025-03-29 14:29:47   statEnergy_total__kWh Hour: 0.025 Day: 2.467 Month: 101.747 Year: 498.202
     2025-03-29 14:29:47   statEnergy_total__kWhDay 2.467
     2025-03-28 23:59:55   statEnergy_total__kWhDayLast 8.636
     2025-03-29 14:29:47   statEnergy_total__kWhHour 0.025
     2025-03-29 13:59:55   statEnergy_total__kWhHourLast 0.037
     2025-03-29 13:59:55   statEnergy_total__kWhLast Hour: 0.037 Day: 8.636 Month: 173.054 Year: 1890.035
     2025-03-29 14:29:47   statEnergy_total__kWhMonth 101.747
     2025-02-28 23:59:55   statEnergy_total__kWhMonthLast 173.054
     2025-03-29 14:29:47   statEnergy_total__kWhYear 498.202
     2024-12-31 23:59:55   statEnergy_total__kWhYearLast 1890.035
     2025-03-29 14:24:24   state           opened
     2025-03-29 14:24:44   system_demand_interval 352387168
   REMEMBER:
     lrecv      1743255021.40429
     lsend      1743255021.33074
   UPDATECACHE:
     h64512:
       adr        64512
       combine    h64512 len 2 Serial_Number with h64514 len 2 Meter_Code and h64515 len 2 Software_Version
       len        2
       objCombi   h64512
       reading    Serial_Number
       span       5
       type       h
     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
     i72:
       adr        72
       combine    i72 len 2 Energy_import__kWh with i74 len 2 Energy_export__kWh
       len        2
       objCombi   i72
       reading    Energy_import__kWh
       span       4
       type       i
   gotReadings:
     Energy_export__kVArh 6186.158
     Energy_export__kWh 1.068
     Energy_import__kVArh 211.125
     Energy_import__kWh 12638.029
   helper:
     _98_statistics Xtender_AC_in_statistic
   lastRead:
     h12        1743254682.61217
     h18        1743254682.61365
     h20        1743254682.61484
     h28        1743254683.36159
     h62720     1743254684.12509
     h63760     1743254684.8857
     h63776     1743254685.6298
     i0         1743255005.39782
     i12        1743255005.4036
     i18        1743254987.01807
     i24        1743254987.02068
     i30        1743254987.02333
     i342       1743254996.66584
     i344       1743255015.54323
     i36        1743254987.02631
     i6         1743255005.40054
     i70        1743254995.80467
     i72        1743255021.4112
     i74        1743255021.4137
     i76        1743255021.41604
     i78        1743255021.41838
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
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 29 März 2025, 14:50:34
Die Parameter stimmen. Es kann nur sein, dass dein SDM220 diese doch nicht implementiert hat.

Beim h86 ist mir ein Fehler in deinem Modul aufgefallen.
# 0001: Import active energy
# 0002: Import + export active energy
# 0004: Export active energy, (default)
# 0005: Import reactive energy
# 0006: Import + export reactive energy
# 0008: Export reactive energy

map => "1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 5:import.reactive.energy, 6:import+export.reactive.energy, 8:export.reactive.energy",    # map to convert visible values to internal numbers (for reading and writing)

hint => "1,2,4,5,6,8",            # string for fhemweb to create a selection or slider

Noch besser wäre es das hint so abzuändern.
map => "1:import.active.energy, 2:import.export.active.energy, 4:export.active.energy, 5:import.reactive.energy, 6:import.export.reactive.energy, 8:export.reactive.energy",    # map to convert visible values to internal numbers (for reading and writing)

hint => "import.active.energy,import.export.active.energy,export.active.energy,import.reactive.energy,import.export.reactive.energy,export.reactive.energy",            # string for fhemweb to create a selection or slider

Damit weist du unter FHEM gleich welchen Parameter du auswählst.

Vergleiche dies mit deinem Modul. Du müstest diese Parameter mit deinem Zähler noch abgleichen ob es zusammenpasst. Grundsätzlich tritt kein Fehler auf, es kommt nur unter Umständen zu einer falschen Anzeige unter FHEM, oder es wird der falsche Parameter unter FHEM am Energiezähler gesetzt.

Mit
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.*grenzt du die neuen Readings aus.

Du müsstest dies in dieser Form definieren.
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.*,.*
Dein Interval mit 6 ist schon heftig.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 29 März 2025, 15:17:26
Ah, komplett event-on....  übersehen. Ich probier gleich nochmal. Danke

Zitat von: Burny4600 am 29 März 2025, 14:50:34Dein Interval mit 6 ist schon heftig.
Ja, könnte man mal überdenken, aber ich brauche die Spannungen recht zügig.

Ich bastel und bin gleich zurück.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 29 März 2025, 15:32:41
h86 gefixt. Danke dafür

Aber auch mit allen Event Blockings raus und Neustart keine Readings für die drei. Der Error bleibt auch gleich. Denke, das/die Register gibts tatsächlich nicht.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 29 März 2025, 15:33:14
Ich bin mir nicht sicher wie schnell dein Energiezähler die Spannungsänderung erfasst, aber du wertest die Spannung ohnehin erst aus, wenn diese eine Änderung von 4V hat, und das ist eine sehr hohe Spannungsänderung die es eigentlich so im EVU-Netz nicht gibt, ausser es ist etwas faul.
Zudem hast du ein Mininterval von 900 für die Spannung definiert. Somit wird die Spannung ohnehin erst mach 900 Sekunden ausgewertet.


Nimm jeweils nur einen der drei Register raus, und starte FHEM neu. Den Register mit dem Fehler als erstes.

Check nochmals den h86. Ich habe noch etwas geändert und einen kleinen Fehler behoben.
map => "1:import.active.energy, 2:import.export.active.energy, 4:export.active.energy, 5:import.reactive.energy, 6:import.export.reactive.energy, 8:export.reactive.energy",    # map to convert visible values to internal numbers (for reading and writing)

hint => "import.active.energy,import.export.active.energy,export.active.energy,import.reactive.energy,import.export.reactive.energy,export.reactive.energy",            # string for fhemweb to create a selection or slider

Ich denke da hat sich unser Schreiben überschnitten.

Hast du auch das event-on-change-reading geändert?
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.*,.*
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 29 März 2025, 15:44:54
sorry, meinte Watt brauche ich recht zügig.

h86 angepasst.

Alle event-on ... rausgenommen. komplett offen.

probiere jetzt nochmal die Register einzeln
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 29 März 2025, 15:48:01
jetzt mal nur "h64515" drinnengelassen. kein Reading, Error "timeout waiting for reply to fc 3 to id 1, h64515, len 2"
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 29 März 2025, 16:35:08
event-on-change-reading solltest du schon lassen, nur am Ende der Zeile eine Änderung mit ,.* ergänzen, damit andere Readings ersichtlich werden.

Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 29 März 2025, 17:43:51
event-on.... nur für den Test rausgenommen. Packst du deine fertigen Templates ins contrib? und hier deutlicher Hinweis?
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 30 März 2025, 09:50:55
Das mit contrib muss ich mir erst einmal genauer ansehen, und werde ich nachdem ich diese Module fertig getestet habe unter contrib veröffentlichen, sofern es nicht zu doppelten Einträgen mit EASTRON Energiezähler kommt. Unter FHEM-Wiki werde ich Fotos der EASTRON Energiezähler mit den passenden Modulen ergänzen. Wie gesagt, wenn ich mir soweit sicher bin nichts vergessen zu haben.

Hast du bestreffend Meter_Code noch etwas bei dir herausgefunden?

Könntest du mein SDM220 Modul bei dir testen? Du müsstest nur einen weiteren Energiezähler mit meinem Modul anlegen der auf deinen Energiezähler Zugriff hat.
Das wären die Konfigurationen die du in dein fhem.cfg kopieren müsstest.
define SDM220M ModbusSDM220MV1 1 10
attr SDM220M IODev ModbusRS485_SDM220M
attr SDM220M userattr IODev alias devStateStyle event-min-interval event-on-change-reading group icon room sortby stateFormat userReadings
attr SDM220M alias Energieverbrauch
attr SDM220M devStateStyle style="text-align:left;;;;font-weight:bold;;;;"
attr SDM220M event-min-interval .*:60
attr SDM220M event-on-change-reading .*
attr SDM220M icon measure_power
attr SDM220M group SDM220Test
attr SDM220M stateFormat {\
my $vln=ReadingsNum($name,'Line_to_Neutral__V',0);;\
\
my $il=ReadingsNum($name,'Current__A',0);;\
\
my $pl=ReadingsNum($name,'Active_Power__W',0);;\
\
"\
<b>\
<br>\
    <span style='color:#FFDD00'>Spannung L1<span style='color:transparent'>....<span style='color:#FFDD00'>$vln V\
        <span style='color:transparent'>.............\
    <span style='color:#AAFF00'>Strom L1<span style='color:transparent'>....<span style='color:#AAFF00'>$il A\
        <span style='color:transparent'>.............\
    <span style='color:#00FFFF'>Leistung L1<span style='color:transparent'>....<span style='color:#00FFFF'>$pl W\
<br>\
<br>\
</b></span>\
"\
}


Für das ModbusRS485_SDM220M ist deine Schnittstelle einzutragen.
define ModbusRS485_SDM220M Modbus /dev/serial/by-id/.....................@9600,8,N,1
attr ModbusRS485_SDM220M alias ModBus RS485 SDM220
attr ModbusRS485_SDM220M busDelay 0.5
attr ModbusRS485_SDM220M devStateIcon opened:lan_rs485@0CFB0C Open:lan_rs485@red disconnected:lan_rs485@red disabled:lan_rs485@orange
attr ModbusRS485_SDM220M devStateStyle style="text-align:left;;font-weight:bold;;"
attr ModbusRS485_SDM220M dropQueueDoubles 1
attr ModbusRS485_SDM220M enableQueueLengthReading 1
attr ModbusRS485_SDM220M frameGap 1.5
attr ModbusRS485_SDM220M group SDM220Test
attr ModbusRS485_SDM220M icon lan_rs485
attr ModbusRS485_SDM220M profileInterval 30
attr ModbusRS485_SDM220M queueDelay 1
attr ModbusRS485_SDM220M queueMax 100
attr ModbusRS485_SDM220M queueTimeout 5
attr ModbusRS485_SDM220M showError 1
attr ModbusRS485_SDM220M skipGarbage 1

Damit bleibt dann deine Energiezählerkonfiguration unangetastet.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 30 März 2025, 10:58:49
auch das Register "h64514" wirft nur den Error. Kein Reading.
Ich schau heute Abend mit deiner .pm was geht
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 30 März 2025, 11:13:29
wollte es schnell aktivieren, bekomme ein

ModbusRS485_SDM220M can not be used as IODev, see log for details
im log

2025.03.30 11:10:57 3: SDM220M: SetIODev from SDM220M to ModbusRS485_SDM220M but ModbusRS485_SDM220M does not exist (yet?)
2025.03.30 11:10:57 3: SDM220M: SetIODev found no usable physical modbus device

ich nehme an, da mein anderes IO Device dort sitzt, mag fhem das Device nicht anlegen.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 30 März 2025, 11:19:30
.... dafür hat er das neue SDM220V1 Device automatisch auf das bestehende IO-Device gelegt, merke ich gerade. Auch interessant.
Läuft jetzt erstmal mit
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 30 März 2025, 11:24:52
da du noch die 3 Readings drinnen hast, kommt wieder im IO Device als Error

timeout waiting for reply to fc 3 to id 1, h64512, len 5
der Rest was lesen angeht scheint zu funktionieren. Schalten werde ich nicht ausprobieren können.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Nobbynews am 30 März 2025, 11:45:27
Zitat von: Burny4600 am 27 März 2025, 08:45:24EDIT 27-03-2025:[/b] Das Modul 98_ModbusSDM72DMV2.pm ist noch nicht ganz fertiggestellt.
Das bisherige Modul 98_ModbusSDM72DMV2.pm habe ich 2022 erstellt.
Grundlage waren die zu diesem Zeitpunkt dokumentierten Register.
Daher würde mich jetzt mal interessieren, was daran noch nicht ganz fertiggestellt sein soll.
Ansonsten wäre es zur Abgrenzug aus meiner Sicht wünschenswert, hier für Deine Entwicklung einen anderen Namen zu wählen.

Norbert
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 30 März 2025, 13:36:24
Zitatwollte es schnell aktivieren, bekomme ein
ModbusRS485_SDM220M can not be used as IODev, see log for details

Du hast das IO ModbusRS485_SDM220M anscheind nicht angelegt?
define ModbusRS485_SDM220M Modbus /dev/serial/by-id/.....................@9600,8,N,1Das musst du für deine Schnittstelle noch anpassen!

Grundsätzlich kannst du auch dein IODev zum testen verwenden.


Zitatda du noch die 3 Readings drinnen hast, kommt wieder im IO Device als Error
Deaktiviere einfach in meinem Modul die drei Readings zB.
#    "h64512" =>    {    # holding register 0xFC00
#                    # Serial Number Meter.
#                    name        => "Serial Number",            # internal name of this register in the hardware doc
#                    reading        => "Serial_Number",            # name of the reading for this value
#                    unpack        => "I*",                    # unsigned int32 pack / unpack code to convert raw values
#                    format        => '%u',                    # format string for sprintf
#                    poll        => "once",                    # only poll once after define (or after a set)
#                },

Verwende immer nur eines der drei Readings und gib mir Bescheid ob diese Reeadings dann auftauchen. Wenn sie nicht auftauchen entferne ich diese aus dem Modul.

@Nobbynews
ZitatDas bisherige Modul 98_ModbusSDM72DMV2.pm habe ich 2022 erstellt.
Hast du das für FHEM bereitgestellt! Ich denke nicht, sonst wäre das bei den FHEM-Updates bei allen aufgetaucht.
ZitatAnsonsten wäre es zur Abgrenzug aus meiner Sicht wünschenswert, hier für Deine Entwicklung einen anderen Namen zu wählen

Sorry, aber so wird das nichts. Wenn du es nur für dich verwendest, kann kein Entwickler darauf Rücksicht nehmen.

ZitatDaher würde mich jetzt mal interessieren, was daran noch nicht ganz fertiggestellt sein soll.
Ich habe angefangen alle EASTRON-Energiezähler zu vereinheitlichen, und den Meter_Code Register mit definiert, damit auch wirklich unter FHEM ersichtlich ist, ob der richtige Energiezähler ausgewählt wurde. Den Meter_Code Register gibt es nicht bei allen EASTRON-Energiezähler, speziell bei den Älteren nicht.

Bisher gab es nur das 98_ModbusSDM630M.pm Modul unter FHEM für alle EASTRON-Energiezähler. Hier fehlen viele Register und zudem ist es notwendig die Module abzugrenzen weil es ansonsten zu Fehlern am EASTRON-Energiezähler kommen kann, wenn das falsche Modul mit nicht vorhanden Registern ausgewählt wurde.
Sieh dir den Inhalt der einzelnen Module an, die ich in diesem Thread vorab bereit gestellt habe. Du kannst aber gerne dein Modul für alle Online bringen.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Nobbynews am 30 März 2025, 14:08:39
Zitat von: Burny4600 am 30 März 2025, 13:36:24@Nobbynews
ZitatDas bisherige Modul 98_ModbusSDM72DMV2.pm habe ich 2022 erstellt.
Hast du das für FHEM bereitgestellt! Ich denke nicht, sonst wäre das bei den FHEM-Updates bei allen aufgetaucht.
ZitatAnsonsten wäre es zur Abgrenzug aus meiner Sicht wünschenswert, hier für Deine Entwicklung einen anderen Namen zu wählen

Sorry, aber so wird das nichts. Wenn du es nur für dich verwendest, kann kein Entwickler darauf Rücksicht nehmen.

ZitatDaher würde mich jetzt mal interessieren, was daran noch nicht ganz fertiggestellt sein soll.
Ich habe angefangen alle EASTRON-Energiezähler zu vereinheitlichen, und den Meter_Code Register mit definiert, damit auch wirklich unter FHEM ersichtlich ist, ob der richtige Energiezähler ausgewählt wurde. Den Meter_Code Register gibt es nicht bei allen EASTRON-Energiezähler, speziell bei den Älteren nicht.

Na ja, im Forum habe ich es zur Verfügung gestellt. Link auf Beitrag habe ich geschickt. Im SVN nicht.
Lt. Statistik scheint das ja funktioniert zu haben.
Das Modul liest das Register jedenfalls als Reading "System_Meter_Code" aus.
Meine Frage zu "nicht ganz fertiggestellt" bleibt aber unbeantwortet.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 30 März 2025, 17:57:29
ZitatMeine Frage zu "nicht ganz fertiggestellt" bleibt aber unbeantwortet.
Den SDM230M und SDM72M muss ich noch verkabeln um diese Module im Betrieb zu testen.
Zudem möchte ich die Module betreffend der Readings wegen den Timeings noch optimieren, weil es manchmal zu Lesefehlern kommt, wie du sicher in diesem Thread lesen konntest.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Nobbynews am 30 März 2025, 19:26:05
Zitat von: Burny4600 am 30 März 2025, 17:57:29weil es manchmal zu Lesefehlern kommt, wie du sicher in diesem Thread lesen konntest.
Das habe ich gelesen, natürlich.
Allerdings kann ich diese mit dem SDM72 und einem SDM120 am Bus nicht bestätigen.
Beide Zähler laufen mit den jeweiligen Modulen sehr gut.
Geschwindigkeit habe ich auf 9600Bd eingestellt. Der SDM120 kann nicht schneller.
Bei einem User gab es mal erhebliche Probleme mit dem SDM120 alle Register auszulesen. Das war aber nach einem Wechsel von 1200Bd (oder 2400Bd ?) auf 9600Bd. behoben.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: holle75 am 01 April 2025, 10:56:57
Zitat von: Burny4600 am 30 März 2025, 13:36:24Du hast das IO ModbusRS485_SDM220M anscheind nicht angelegt?

hatte ich, da das angelegte  IO Device mit der Hardware aber belegt ist, hat fhem es scheinbar ignoriert.

Zitat von: Burny4600 am 30 März 2025, 13:36:24Deaktiviere einfach in meinem Modul die drei Readings zB.

war zu deiner Info

Zitat von: Burny4600 am 30 März 2025, 13:36:24Verwende immer nur eines der drei Readings und gib mir Bescheid ob diese Reeadings dann auftauchen. Wenn sie nicht auftauchen entferne ich diese aus dem Modul.

hatte ich. Alle drei Register, jeweils separat angelegt, werfen den Error -> ich vermute, die Register gibts im SDM220m nicht.


Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Nobbynews am 03 April 2025, 16:15:03
Zitat von: Burny4600 am 30 März 2025, 17:57:29Readings wegen den Timeings noch optimieren, weil es manchmal zu Lesefehlern kommt
Seit Wechsel auf einen Pi 4 habe ich jetzt erstmalig wieder einen Timeout gehabt.
Dürfte aber an den vorherigen Meldungen von FreezeMon liegen.
2025.04.03 14:35:24 1: [Freezemon] myFreezeMon: possible freeze starting at 14:35:23, delay is 1.864 possibly caused by: tmr-CODE(0x55d86c1820)(ProcessRequestQueue) tmr-Shelly_status(Shelly11) tmr-CUL_MAX_SQH(cm)
2025.04.03 14:37:25 1: [Freezemon] myFreezeMon: possible freeze starting at 14:37:23, delay is 2.859 possibly caused by: tmr-CODE(0x55d86c1820)(ProcessRequestQueue) tmr-Shelly_status(Shelly11) tmr-Shelly_status(Shelly7)
2025.04.03 14:37:25 3: ModBusLine: Timeout waiting for a modbus response, read buffer empty,
request: id 1, read fc 4 i6, len 24, master device SDM72, reading Current_L1__A (getUpdate for combined i6 len 2 Current_L1__A with i8 len 2 Current_L2__A and i10 len 2 Current_L3__A and i12 len 2 Power_L1__W and i14 len 2 Power_L2__W and i16 len 2 Power_L3__W and i18 len 2 Power_L1__VA and i20 len 2 Power_L2__VA and i22 len 2 Power_L3__VA and i24 len 2 Power_L1__VAr and i26 len 2 Power_L2__VAr and i28 len 2 Power_L3__VAr), queued 4.22 secs ago, sent 3.36 secs ago
2025.04.03 14:37:26 3: ModBusLine: readfn got data while EXPECT was set to idle: 010430000000003c911b3c3cb08eb00000000040181f5f4020250d0000000040181f5f408996ba0000000000000000405fc7090de9
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 06 April 2025, 08:36:20
ZitatSeit Wechsel auf einen Pi 4 habe ich jetzt erstmalig wieder einen Timeout gehabt.
Hast du erst jetzt auf den Pi4 gewechselt?
Welche Pi OS verwendest du?
Wieviele RS485 Schnittstellen hast du im Einsatz?

Ich verwende eine Pi4 mit Bullseye Lite 32Bit und werde jetzt auf Bookworm Lite 32Bit wechseln um weiter den Ausfall der RS485 zu testen.
Ich vermute das Problem lieg bei mir an der Kombination der eingesetzten Komponenten.
Die vierfach WaveShare RS485/USB hängt an einem Pi3+. Darauf ist ser2net im Einsatz mit der Version 4.3.11.
ser2net.yaml

%YAML 1.1
---
# This is a ser2net configuration file, tailored to be rather
# simple.
#
# Find detailed documentation in ser2net.yaml(5)
# A fully featured configuration file is in
# /usr/share/doc/ser2net/examples/ser2net.yaml.gz
#
# If you find your configuration more useful than this very simple
# one, please submit it as a bugreport

define: &banner \r\nser2net port \p device \d [\B] (Debian GNU/Linux)\r\n\r\n

### Set all baud rates to 115200n81 by default.
# default:
#       name: speed
#       value: 9600n81
#       class: serialdev

### RS485 Port1
connection: &con4851
    accepter: tcp,44851
    enable: on
    options:
            max-connections: 1
            kickolduser: true
            telnet-brk-on-sync: true
    connector: serialdev,
               /dev/serial/by-id/usb-WCH.CN_USB_Quad_Serial_BCD697ABCD-if00,
               38400n81,local

### RS485 Port2
connection: &con4852
    accepter: tcp,44852
    enable: on
    options:
            max-connections: 1
            kickolduser: true
            telnet-brk-on-sync: true
    connector: serialdev,
               /dev/serial/by-id/usb-WCH.CN_USB_Quad_Serial_BCD697ABCD-if02,
               38400n81,local

### RS485 Port3
connection: &con4853
    accepter: tcp,44853
    enable: on
    options:
            max-connections: 1
            kickolduser: true
            telnet-brk-on-sync: true
    connector: serialdev,
               /dev/serial/by-id/usb-WCH.CN_USB_Quad_Serial_BCD697ABCD-if04,
               38400n81,local

### RS485 Port4
connection: &con4854
    accepter: tcp,44854
    enable: on
    options:
            max-connections: 1
            kickolduser: true
            telnet-brk-on-sync: true
    connector: serialdev,
               /dev/serial/by-id/usb-WCH.CN_USB_Quad_Serial_BCD697ABCD-if06,
               38400n81,local

Der Pi4 greift auf die ser2net Schnittstellte.
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         51
   FUUID      67b5c89b-f33f-f4d2-7223-f064a5307ca304fc
   IODev      ModbusRS485_1WS_EG_VR
   LASTOPEN   1743870609.31686
   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 103277
   nextOpenDelay 60
   QUEUE:
   READ:
     BUFFER     
   READINGS:
     2025-04-05 15:43:43   LAST_ERROR      timeout waiting for reply to fc 4 to id 1, i374, len 8
     2025-04-06 08:13:39   Profiler_Delay_sum 7.268
     2025-04-06 08:13:39   Profiler_Fhem_sum 0.389
     2025-04-06 08:13:39   Profiler_Idle_sum 21.992
     2025-04-06 08:13:39   Profiler_Read_sum 0.017
     2025-04-06 08:13:39   Profiler_Send_sum 0.026
     2025-04-06 08:13:39   Profiler_Wait_sum 0.308
     2025-04-06 08:13:42   QueueLength     0
     2025-04-06 08:13:39   Statistics_Requests 17
     2025-04-06 08:13:39   Statistics_Timeouts 0
     2025-04-05 18:30:12   state           opened
   REMEMBER:
     lid        1
     lname      HTZ_SDM630M_01
     lrecv      1743920022.50826
     lsend      1743920022.49221
   defptr:
     HTZ_SDM630M_01 1
   profiler:
     lastKey    Idle
     lastPeriod 58130667
     start:
       Delay      1743920022.0121
       Fhem       1743920022.50918
       Idle       1743920022.52256
       Read       1743920022.50828
       Send       1743920022.49074
       Wait       1743920022.49223
     sums:
       Delay      2.93966031074524
       Fhem       0.166212320327759
       Idle       9.29115962982178
       Read       0.00713086128234863
       Send       0.0110230445861816
       Wait       0.107370853424072
   statistics:
     lastPeriod 58130667
     sums:
       Requests   7
       Timeouts   0
Attributes:
   alias      ModBus RS485 1 | 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
   group      Schnittstellen Modbus
   icon       lan_rs485
   profileInterval 30
   queueDelay 1
   queueMax   100
   queueTimeout 5
   room       _RxTx
   showError  1
   skipGarbage 1
   sortby     02.01

FHEM hat jedenfalls ein Problem mit der Schnittstellenbezeichnung usb-WCH.CN_USB_Quad_Serial_BCD697ABCD-if00. Unter FHEM funktioniert als Ersatz nur /dev/ttyACM0, was aber ein Nachteil ist. Vertauscht man das USB-Gerät, passen mit /dev/ttyACM0 unter Umständen die Schnittstellen nicht mehr.

Was bei mir auffällig ist, dass alle vier Verbindungen sich abmelden und nur mehr ein timeout waiting for reply to.... über alle Register produzieren. Setzte ich unter FHEM am Pi4 die 4 Schnittstelle auf disable 1 und anschließend wieder auf disable 0 ist die Schnittstelle wieder OK. Irritierend ist, dass FHEM am Pi4 die RS485/IP Verbindung trotz Fehler immer mit STATE opened definert. An diesen 4 RS485 Schnittstellen sind drei unterschiedliche SDM630-Modbus Energiezähler angeschlossen, wobei der alte SDM630 B&G mit dem FHEM bereitgestellten Modul die meisten Timeouts liefert. Ich habe für diesen das Modul geändert. Es gibt zwar weniger Timeouts damit, dennoch sind die Timeouts zu viel. Auf diesem System tauchen bei mir keine Freezemon Einträge im LOG auf, sondern nur die Timeouts auf.
2025.04.05 18:56:07.372 3: ModbusRS485_2WS_EG_VR: Timeout waiting for a modbus response, read buffer empty,
request: id 4, read fc 4 i10, len 8, master device PVA1_SDM630M_04, reading Current_L3__A (getUpdate for combined i10 len 2 Current_L3__A with i12 len 2 Active_Power_L1__W and i14 len 2 Active_Power_L2__W and i16 len 2 Active_Power_L3__W), queued 2.26 secs ago, sent 0.65 secs ago
2025.04.05 18:56:07.478 3: ModbusRS485_2WS_EG_VR: readfn got data while EXPECT was set to idle: 0404103fd14556c3c8e600c3a5b400c3a9600007bf
2025.04.05 21:05:43.853 3: ModbusRS485_2WS_EG_VR: Timeout waiting for a modbus response, read buffer empty,
request: id 4, read fc 4 i10, len 8, master device PVA1_SDM630M_04, reading Current_L3__A (getUpdate for combined i10 len 2 Current_L3__A with i12 len 2 Active_Power_L1__W and i14 len 2 Active_Power_L2__W and i16 len 2 Active_Power_L3__W), queued 1.12 secs ago, sent 0.50 secs ago
2025.04.06 00:23:40.131 3: ModbusRS485_2WS_EG_VR: Timeout waiting for a modbus response, read buffer empty,
request: id 4, read fc 4 i104, len 2, master device PVA1_SDM630M_04, reading Current_N_Demand__A (getUpdate for Current_N_Demand__A len 2), queued 2.75 secs ago, sent 0.50 secs ago
2025.04.06 02:50:07.876 3: ModbusRS485_2WS_EG_VR: Timeout waiting for a modbus response, read buffer empty,
request: id 4, read fc 4 i342, len 2, master device PVA1_SDM630M_04, reading Active_Energy_Total__kWh (getUpdate for Active_Energy_Total__kWh len 2), queued 4.09 secs ago, sent 0.50 secs ago
2025.04.06 05:48:50.364 3: ModbusRS485_2WS_EG_VR: Timeout waiting for a modbus response, read buffer empty,
request: id 4, read fc 4 i200, len 8, master device PVA1_SDM630M_04, reading Voltage_L1_L2__V (getUpdate for combined i200 len 2 Voltage_L1_L2__V with i202 len 2 Voltage_L2_L3__V and i204 len 2 Voltage_L3_L1__V and i206 len 2 Voltage_L_L_Avr__V), queued 4.01 secs ago, sent 0.50 secs ago
2025.04.06 05:48:50.364 3: ModbusRS485_2WS_EG_VR: Timeout waiting for a modbus response, read buffer empty,
request: id 4, read fc 4 i200, len 8, master device PVA1_SDM630M_04, reading Voltage_L1_L2__V (getUpdate for combined i200 len 2 Voltage_L1_L2__V with i202 len 2 Voltage_L2_L3__V and i204 len 2 Voltage_L3_L1__V and i206 len 2 Voltage_L_L_Avr__V), queued 4.01 secs ago, sent 0.50 secs ago
2025.04.06 07:39:31.421 3: ModbusRS485_2WS_EG_VR: Timeout waiting for a modbus response, read buffer empty,
request: id 4, read fc 4 i200, len 6, master device PVA1_SDM630M_04, reading Voltage_L1_L2__V (getUpdate for combined i200 len 2 Voltage_L1_L2__V with i202 len 2 Voltage_L2_L3__V and i204 len 2 Voltage_L3_L1__V), queued 3.82 secs ago, sent 0.50 secs ago

Diese LOG Einträge sehe ich mir nach der Neuinstallation des Pi4 mit Bookworm noch genauer an.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Nobbynews am 06 April 2025, 08:55:49
Zitat von: Burny4600 am 06 April 2025, 08:36:20
ZitatSeit Wechsel auf einen Pi 4 habe ich jetzt erstmalig wieder einen Timeout gehabt.
Hast du erst jetzt auf den Pi4 gewechselt?
Welche Pi OS verwendest du?
Wieviele RS485 Schnittstellen hast du im Einsatz?
Das ist ein Pi4 mit 8GB Ram. Umzug erfolgte  Anfang Oktober 2024.
OS ist 64bit Bookworm-Lite.
System komplett auf SSD mit aktivem USB-SATA-Adapter installiert
Schnittstelle ist ein einfacher USB-Adapter:
https://www.makershop.de/module/kommunikation-module/rs485-adapter/ (https://www.makershop.de/module/kommunikation-module/rs485-adapter/)
Weiterhin sind am USB, teilweise über aktiven USB-Hub, angeschlossen:
- CUL für MAX!
- EnOcean USB 300
- ZMEEUZB1 für Z-Wave
Alle USB-Geräte sind über /serial/by-id in FHEM eingebunden.

Ich habe das die letzten Tage mal genauer beobachtet und dabei festgestellt, dass doch immer mal wieder (1x pro Tag) timeouts auftreten. Hatte ich vorher wg. nicht aktiviertem attr ShowError gar nicht mitbekommen.
Allerdings gab es diese Meldung im Log immer nur im Zusammenhang mit Einträgen von FreezeMon.
Habe FreezeMon jetzt mal testweise wieder gelöscht um zu sehen, ob dann immer noch Log-Einträge kommen. (Naive Vorstellung von mir??)

Edit:
Aus irgendeinem Grund/Quelle habe ich noch gesetzt:
attr ModBusLine clientSwitchDelay 0.4
Hintergrund dazu ist mir entfallen.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Nobbynews am 07 April 2025, 12:36:29
Zitat von: Burny4600 am 06 April 2025, 08:36:20Ich verwende eine Pi4 mit Bullseye Lite 32Bit und werde jetzt auf Bookworm Lite 32Bit wechseln um weiter den Ausfall der
Ich habe noch einen Pi unter Bullseye am Start, mit dem ich über ser2net einen CUL zur Verfügung stelle.
Die Version 4.3.3 ist lt. Paketverwaltung die aktuelle Version für Bullseye.
Den habe ich allerdings nur zum LAufen bekommen, in dem ich in der device-config ein NOBREAK angefügt habe.
connector: serialdev,/dev/serial/by-id/usb-busware.de_CUL868-if00,9600n81,local,NOBREAKFrag'  mich jetzt aber bitte nicht, wo ich das gefunden habe.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Burny4600 am 07 April 2025, 14:19:00
ZitatDen habe ich allerdings nur zum LAufen bekommen, in dem ich in der device-config ein NOBREAK angefügt habe...........
Hast du daran einen EASTRON-Energiezähler angeschlossen?

Grundsätzlich spielt die ser2net Version nicht die große Rolle. Die RS485 läuft genauso mit der ser2net V4.3.3.

Unter Bookworm wird die ser2net Version 4.3.11 installiert. Es läuft unter Bookworm auch die aktuelle ser2net Version V4.6.4.
Ich habe alle drei ser2net Versionen mit allen EASTRON-Energiezähler getestet. An den ser2net Versionen liegt es nicht warum es zu den Timeout-Fehler kommt.

Hast du deine RS485 Schnittstelle mit dem EASTRON-Energiezähler einmal mit dem Attribut showError über einen längeren Zeitraum getestet?


Ich habe die EASTRON-Module nochmals überarbeitet was das interne Modul-Timing betrifft. Die Anleitung habe ich zusätzlich auch ins deutsche übersetzt und angepasst.

Im original SDM630M-Modul waren die Attribute
timeout      =>    2
commDelay    =>    0.7
sendDelay    =>    0.7
verbaut die ich in den Modulen belassen habe. Diese Attribute können auch ausserhalb des Moduls abgeändert werden.

Aktuell habe ich einen Test am laufen und mit den Attribut-Einstellungen
dev-timing-timeout 0.5
dev-timing-commDelay 0.2
dev-timing-sendDelay 0.2
bisher gute Erfahrungen bei mir gemacht.

Zusätzlich habe ich in der RS485-Schnittstelle das Attribut
clientSwitchDelay 0.1aktiviert.

list ModbusRS485_7WS_EG_VR
Internals:
   CFGFN      /media/hdd/fhem/mycfg/schnittstellen_rasp02.cfg
   DEF        192.168.17.185:44857
   DeviceName 192.168.17.185:44857
   EXPECT     idle
   FD         59
   FUUID      67b89efd-f33f-f4d2-7f9c-01b443882202b3f3
   IODev      ModbusRS485_7WS_EG_VR
   LASTOPEN   1744024765.38338
   MODE       master
   NAME       ModbusRS485_7WS_EG_VR
   NOTIFYDEV  global
   NR         514
   NTFY_ORDER 50-ModbusRS485_7WS_EG_VR
   PARTIAL   
   PROTOCOL   RTU
   STATE      opened
   TCPConn    1
   TYPE       Modbus
   devioLoglevel 3
   devioNoSTATE 1
   eventCount 2867
   nextOpenDelay 60
   QUEUE:
   READ:
     BUFFER    
   READINGS:
     2025-04-03 18:23:05   LAST_ERROR      timeout waiting for reply to fc 4 to id 2, i12, len 2
     2025-04-07 14:36:00   Profiler_Delay_sum 0.677
     2025-04-07 14:36:00   Profiler_Fhem_sum 0.059
     2025-04-07 14:36:00   Profiler_Idle_sum 29.017
     2025-04-07 14:36:00   Profiler_Read_sum 0.004
     2025-04-07 14:36:00   Profiler_Send_sum 0.006
     2025-04-07 14:36:00   Profiler_Wait_sum 0.237
     2025-04-07 14:36:28   QueueLength     0
     2025-04-07 14:36:00   Statistics_Requests 4
     2025-04-07 14:36:00   Statistics_Timeouts 0
     2025-04-07 13:19:28   state           opened
   REMEMBER:
     lid        1
     lname      OG1_SDM120M_02
     lrecv      1744029388.84825
     lsend      1744029388.81772
   defptr:
     OG1_SDM120M_02 1
     OG1_SDM120M_03 2
   profiler:
     lastKey    Idle
     lastPeriod 58134312
     start:
       Delay      1744029388.60861
       Fhem       1744029388.84958
       Idle       1744029388.86232
       Read       1744029388.84829
       Send       1744029388.81606
       Wait       1744029388.81776
     sums:
       Delay      0.901864290237427
       Fhem       0.113309860229492
       Idle       27.7010283470154
       Read       0.00590896606445312
       Send       0.0092008113861084
       Wait       0.131011724472046
   statistics:
     lastPeriod 58134312
     sums:
       Requests   6
       Timeouts   0
Attributes:
   alias      ModBus RS485 7 | WaveShare USB - EG Vorraum HV
   clientSwitchDelay 0.1
   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
   group      Schnittstellen Modbus
   icon       lan_rs485
   profileInterval 30
   room       _RxTx
   showError  1
   skipGarbage 1
   sortby     02.07

Es kommen zwar beim alten Energiezähler B&G - EASTRON 630 Modbus immer noch vereinzelt Timeout-Fehler, aber diese stören nicht mehr. Die Eastron-Energiezähler jüngerer Baureihe laufen jetzt ohne Timeout-Fehler.

Das sind die aktuellen EASTRON-Energiezähler-Module.
Wenn jemanden ein Fehler auffällt, bitte Rückmelden.
Titel: Aw: EASTRON Zähler | Deye Hybrid-Inverter - RS485 Schnittstellen häufige Error Meldungen
Beitrag von: Nobbynews am 11 April 2025, 07:38:08
Zitat von: Burny4600 am 07 April 2025, 14:19:00
ZitatDen habe ich allerdings nur zum LAufen bekommen, in dem ich in der device-config ein NOBREAK angefügt habe...........
Hast du daran einen EASTRON-Energiezähler angeschlossen?
Nein, da hängt ein SignalDuino dran.