Nein, bekomme ich nicht. Ich takte auch im Abstand von 1s und mache dann eine Mittelwertbildung über 600s. Das passt dann relativ gut zur Solaredgeanzeige.
Falls es Dir hilft mein Script ... (habe ich so mit Blockly) umgesetzt ...
var iD, Liste1, Liste2, Liste3, Liste4, Liste5, Intervall;
iD = 600;
Liste1 = [];
Liste2 = [];
Liste3 = [];
Liste4 = [];
Liste5 = [];
Intervall = setInterval(async function () {
Liste1.push(getState("0_userdata.0.1_Netzbezug").val);
if (Liste1.length >= parseFloat(iD) + 1) {
setState("0_userdata.0.1_Netzbezug_D"/*1_Netzbezug_D*/, (parseFloat(Liste1.reduce(function(x, y) {return x + y;})) / iD), true);
Liste1 = [];
}
Liste4.push(getState("0_userdata.0.4_Energieverbrauch").val);
if (Liste4.length >= parseFloat(iD) + 1) {
setState("0_userdata.0.4_Energieverbrauch_D"/*4_Energieverbrauch_D*/, (parseFloat(Liste4.reduce(function(x, y) {return x + y;})) / iD), true);
Liste4 = [];
}
Liste2.push(getState("0_userdata.0.2_PV_Aktuell").val);
if (Liste2.length >= parseFloat(iD) + 1) {
setState("0_userdata.0.2_PV_Aktuell_D"/*2_PV_Aktuell_D*/, (parseFloat(Liste2.reduce(function(x, y) {return x + y;})) / iD), true);
await wait(500);
setState("0_userdata.0.5_PV_Frei_D"/*5_PV_Frei_D*/, (parseFloat(getState("0_userdata.0.2_PV_Aktuell_D").val) - getState("0_userdata.0.4_Energieverbrauch_D").val), true);
Liste2 = [];
}
Liste3.push(getState("0_userdata.0.3_Batterie").val);
if (Liste3.length >= parseFloat(iD) + 1) {
setState("0_userdata.0.3_Batterie_D"/*3_Batterie_D*/, (parseFloat(Liste3.reduce(function(x, y) {return x + y;})) / iD), true);
Liste3 = [];
}
Liste5.push(getState("0_userdata.0.2_PV_Aktuell").val);
if (Liste5.length >= 86401) {
setState("0_userdata.0.2_PV_Aktuell_S"/*2_PV_Aktuell_S*/, (parseFloat(Liste5.reduce(function(x, y) {return x + y;})) / 3600), true);
Liste5 = [];
}
}, 1000);