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

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.
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

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 .... ?

Burny4600

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.
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

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.

holle75

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

Burny4600

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.
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

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.

holle75

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.

Burny4600

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.*,.*
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

sorry, meinte Watt brauche ich recht zügig.

h86 angepasst.

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

probiere jetzt nochmal die Register einzeln

holle75

jetzt mal nur "h64515" drinnengelassen. kein Reading, Error "timeout waiting for reply to fc 3 to id 1, h64515, len 2"

Burny4600

event-on-change-reading solltest du schon lassen, nur am Ende der Zeile eine Änderung mit ,.* ergänzen, damit andere Readings ersichtlich werden.

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

event-on.... nur für den Test rausgenommen. Packst du deine fertigen Templates ins contrib? und hier deutlicher Hinweis?

Burny4600

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.
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

auch das Register "h64514" wirft nur den Error. Kein Reading.
Ich schau heute Abend mit deiner .pm was geht