[GELÖSTE] SDM230M Modul Anpassung

Begonnen von Burny4600, 14 Januar 2025, 18:49:41

Vorheriges Thema - Nächstes Thema

Burny4600

Ich bin gerade dabei ein bestehendes Modul (98_ModbusSDM630M.pm) für einen SDM230M umzuarbeiten (98_ModbusSDM230MV2.pm)
Grundsätzlich habe ich den Großteil schon fertig für einen SDM230M.

Nun stehe ich mit meinen bescheidenen Kenntnissen leider an, das ich die Register für das Datenformat unsigned int32 (Länge: 4 byte), das Register für das Datenformat Hex (Länge:2 byte und für das Register für das Datenformat BCD(Länge:4 byte im neuem Modul korrekt zu definieren.

Die Register für das Datenformat:float(Länge:4 byte) ist aus dem Modul 98_ModbusSDM630M.pm bekannt.

Kann mir dabei jemand ein wenig behilflich sein?
Wenn ich das geschafft habe, würde ich das für die Energiezähler SDM120M und SDM72DM auch gleich als separates Modul vorbereiten.
Mfg Chris

Raspberry Pi 2-5, Betriebssystem: Bullseye Lite, Bookworm Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: FS20, IT, Homematic, MQTT, TEK603, WMR200, YouLess, S.USV, APC-USV, PV-Deye, PV-Fronius, Resol VBUS & DL2

Nobbynews

#1
Zitat von: Burny4600 am 14 Januar 2025, 18:49:41Wenn ich das geschafft habe, würde ich das für die Energiezähler SDM120M und SDM72DM auch gleich als separates Modul vorbereiten.
Da gibt es schon Module:
https://forum.fhem.de/index.php?topic=75638.msg1217182#msg1217182

Burny4600

Danke für den Hinweis.
Das werde ich mir gleich ansehen.
Mfg Chris

Raspberry Pi 2-5, Betriebssystem: Bullseye Lite, Bookworm Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: FS20, IT, Homematic, MQTT, TEK603, WMR200, YouLess, S.USV, APC-USV, PV-Deye, PV-Fronius, Resol VBUS & DL2

Burny4600

#3
Das Problem mit dem Datenformat Hex (Länge:2 byte) habe ich aber dennoch noch nicht lösen können.

Die Grundkonfiguration laut Registerauszug stimmt grundsätzlich.
    "h63776" =>    {    # holding register 0xF920
                    # Measurement Mode Meter.
                    name        => "Measurement Mode",        # internal name of this register in the hardware doc
                    reading        => "Measurement_Mode",        # name of the reading for this value
                    map            => "0001:Total_Import, 0002:Total_Import_plus_Export, 0003:Total_Import_minus_Export",  # map to convert visible values to internal numbers (for reading and writing)
                    hint        => "0001,0002,0003",        # string for fhemweb to create a selection or slider
                    unpack        => "H*",                    # hex pack / unpack code to convert raw values
                    format        => '%s',                    # format string for sprintf
                    poll        => "once",                    # only poll once after define (or after a set)
#                    set            => 1,                        # this value can be set
                },

Mir fehlt bei den zwei Readings noch die Lösung wie ich die letzten 4 Nullen entfernen.

Stellen nach dem Komma kürzen mit %.4f ist keine Thema. Auch die Nullen vor der Zahl ist kein Problem.
Mfg Chris

Raspberry Pi 2-5, Betriebssystem: Bullseye Lite, Bookworm Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: FS20, IT, Homematic, MQTT, TEK603, WMR200, YouLess, S.USV, APC-USV, PV-Deye, PV-Fronius, Resol VBUS & DL2

Burny4600

Ich habe eine Lösung gefunden.

"h63760" => { # holding register 0xF910
# Relay 1 Pulse Constant:
# 00000000=0.001_kWh_or_kVArh/Imp, 00010000=0.01_kWh_or_kVArh/Imp, 00020000=0.1_kWh_or_kVArh/Imp, 00030000=1_kWh_or_kVArh/Imp
name => "Relay1_Pulse Constant", # internal name of this register in the hardware doc
reading => "Relay1_Pulse_Constant_Imp", # name of the reading for this value
map => "00000000:0.001, 00010000:0.01, 00020000:0.1, 00030000:1",  # map to convert visible values to internal numbers (for reading and writing)
hint => "0.001,0.01,0.1,1",  # string for fhemweb to create a selection or slider
unpack => "H*", # hex pack / unpack code to convert raw values
format => '%s', # format string for sprintf
poll => "once", # only poll once after define (or after a set)
# set => 1, # this value can be set
},

"h63776" => { # holding register 0xF920
# Measurement Mode Meter.
name => "Measurement Mode", # internal name of this register in the hardware doc
reading => "Measurement_Mode", # name of the reading for this value
map => "00010000:Total_Import, 00020000:Total_Import_plus_Export, 00030000:Total_Import_minus_Export",  # map to convert visible values to internal numbers (for reading and writing)
hint => "Total_Import,Total_Import_plus_Export,Total_Import_minus_Export",  # string for fhemweb to create a selection or slider
unpack => "H*", # hex pack / unpack code to convert raw values
format => '%s', # format string for sprintf
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},
Mfg Chris

Raspberry Pi 2-5, Betriebssystem: Bullseye Lite, Bookworm Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: FS20, IT, Homematic, MQTT, TEK603, WMR200, YouLess, S.USV, APC-USV, PV-Deye, PV-Fronius, Resol VBUS & DL2