FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: lufi am 18 September 2022, 15:03:56

Titel: Modbus HIGH-Byte LOW-Byte
Beitrag von: lufi am 18 September 2022, 15:03:56
Hallo,

ich möchte für meinen Growatt SPH Wechselrichter ein Modbus Modul erstellen.
Dabei frage ich mich, wie ich innerhalb des Moduls die High-Byte, Low-Byte Werte berechnen kann.

Ein Beispiel, im Register 1 steht Input Power (Low-Byte) und in Register 2 Input Power (High Byte).
Zusammen also beispielsweise "00000190".

Wie kann ich jetzt innerhalb des parsers diese Werte korrekt berechnen ?
In python habe ich die register einzeln verwendet und summiert.

float((register[1] << 16) + register[2])

Kann mir hier jemand helfen ?

Danke und Gruß

LuFi


Titel: Antw:Modbus HIGH-Byte LOW-Byte
Beitrag von: Otto123 am 19 September 2022, 09:09:11
Hi,

ich berechne in einem userReading die Datenmenge der Fritzbox die auch in High und Low Byte geliefert wird.
ReadingsVal($name,".box_TodayBytesSentLow",0) + ReadingsVal($name,".box_TodayBytesSentHigh",0) * 2**32

Meintest Du so etwas?

Gruß Otto
Titel: Antw:Modbus HIGH-Byte LOW-Byte
Beitrag von: lufi am 19 September 2022, 18:16:06
Danke dir,

ich habe es im Modbus jetzt wie folgt gelöst:


'i1046' => { reading => 'EnergyToUserTotal',
name => 'Etouser_total',
                 unpack => 's>',
                 expr => '$val / 10',
                 format => '%.1f',
                 len => 2,
                 revRegs => 1,
                 poll => 1,           
},


unpack als 16 bit "s>" und in umgekehrter Reihenfolge "revRegs"

Gruß

LuFi