Ich bin jetzt leider komplett verwirrt.
Ich habe auf 2 Systemen einen iobroker laufen, einer liest die "13021_Batterie_Power_" aus wie bisher, in der anderen Instanz habe ich die "Type" des Registers auf "Signed 16bit (Big Endian)" umgestellt.
In beiden Instanzen logge ich mit dem exakt gleichen Script (max Load Power für die Batterie ist auf 4000W eingestellt):
on({ id: "modbus.0.inputRegisters.5016_Total_DC_Power", change: 'ne'}, function(obj) {
var $load = getState("modbus.0.inputRegisters.13007_Load_power_").val, // Hausverbrauch
$grid = getState("modbus.0.inputRegisters.13009_Export_power").val, // Netzbezug/-einspeisung
$pv = getState("modbus.0.inputRegisters.5016_Total_DC_Power").val, // Stromproduktion vom Dach
$battery = getState("modbus.0.inputRegisters.13021_Battery_power_").val; // Batterieladung
console.log('Testwerte: vom Dach = '+$pv+', ins Haus: '+$load+', in Batterie: '+$battery+', ins Netz: '+$grid)
});
Dass der Wert für "$battery" unterschiedlich ist, ergibt sich aus dem Datentyp, aber warum die Werte $load+$grid+$battery in Summe NICHT $pv ergeben, kann ich mir nicht erklären.
Log mit Type "unsigned 16bit" (13021 ist eine positive, viel zu große Zahl)
2025-03-02 09:38:08.529 info script.js.log_Werte: Testwerte: vom Dach = 4714, ins Haus: 2070, in Batterie: 63015, ins Netz: -80
2025-03-02 09:37:46.474 info script.js.log_Werte: Testwerte: vom Dach = 4795, ins Haus: 218, in Batterie: 61538, ins Netz: 281
2025-03-02 09:37:24.444 info script.js.log_Werte: Testwerte: vom Dach = 4822, ins Haus: 211, in Batterie: 61538, ins Netz: 305
2025-03-02 09:37:02.337 info script.js.log_Werte: Testwerte: vom Dach = 4830, ins Haus: 218, in Batterie: 61537, ins Netz: 288
2025-03-02 09:36:40.291 info script.js.log_Werte: Testwerte: vom Dach = 4839, ins Haus: 213, in Batterie: 61538, ins Netz: 305
Log mit Type "signed 16bit" (13021 ist eine Zahl, positiv oder negativ)
2025-03-02 09:38:41.605 info script.js.Log_Werte: Testwerte: vom Dach = 4480, ins Haus: 214, in Batterie: -3998, ins Netz: 99
2025-03-02 09:38:19.554 info script.js.Log_Werte: Testwerte: vom Dach = 4640, ins Haus: 214, in Batterie: -3999, ins Netz: 225
2025-03-02 09:37:57.488 info script.js.Log_Werte: Testwerte: vom Dach = 4770, ins Haus: 216, in Batterie: -3998, ins Netz: 270
2025-03-02 09:37:35.405 info script.js.Log_Werte: Testwerte: vom Dach = 4808, ins Haus: 217, in Batterie: -3998, ins Netz: 297
2025-03-02 09:37:13.347 info script.js.Log_Werte: Testwerte: vom Dach = 4844, ins Haus: 216, in Batterie: -3999, ins Netz: 293
2025-03-02 09:36:51.301 info script.js.Log_Werte: Testwerte: vom Dach = 4849, ins Haus: 2089, in Batterie: -2491, ins Netz: -24
2025-03-02 09:36:29.240 info script.js.Log_Werte: Testwerte: vom Dach = 4853, ins Haus: 200, in Batterie: -3999, ins Netz: 309
Ich hab das Gefühl, ich komm hier zu keiner Lösung
- aber vielleicht hat jemand ein funktionierendes Script zur Hand, dass mir die Werte für:
- PV in die Batterie
- PV ins Haus
- PV ins Netz
- Batterie ins Haus
- Netz ins Haus
korrekt ausrechnet
@wolfi913 : das Script steckt im Blockly drin, dass auf der Seite beschrieben ist. Damit wird auf die Änderung des Running State (13000) reagiert.