Frage an die PERL Cracks unter Euch

Begonnen von beejayf, 26 Oktober 2020, 15:36:00

Vorheriges Thema - Nächstes Thema

beejayf

...oder auch an die, die nur einen Fatz mehr Ahnung haben als ich - und das sollten schon recht viele sein ;-)

Es geht um das Auslesen eines Registers eines Wechselrichters und die Umwandlung des Wertes in eine Variable für FHEM (ich hoffe ich beschreibe das richtig)

Die Doku der Wechselrichters/des Protokolls sagt:

Battery_1_Max_Discharge_Continues_Power
Adresse: E146 (F546),  Länge: 2, Typ: Float32

Im Modul von pejonp (https://github.com/pejonp/FHEM---SolarEdge) wird dieser Wert in den folgenden 5 Zeilen ausgelesen:

Line 573-577:
    "h57670" => {    # E146 (F546) 2R Battery 1 Max Discharge Continues Power Float32 W
        'len'     => '2',                                                           
        'reading' => 'Battery_1_Max_Discharge_Continues_Power_W',
        'unpack'  => 'L>',
    },


sollte für diesen Parameter entweder 5000 oder 7000 (Specs des Batterie) lesen - es kommen aber für

'unpack'  => 'L>': 1073759644
'unpack'  => 'f>': 2.00424861907959
ohne unpack: 16384

heraus.

Kommt jemand auf den Fehler?

Danke im Voraus!

BJ

beejayf

offenbar sollten folgende drei Operationen den Wert richtig auslesen:

unpack "f<", pack "vv", unpack "nn",

wie würde man dies im code-Beispiel oben abbilden?