NEWS
SetState wird überschrieben (?)
-
Ich habe das Script von hier: https://forum.iobroker.net/topic/17309/gelöst-kwh-berechnen-und-fortlaufend-speichern/4.
const idPowerHausverbrauch = 'modbus.0.holdingRegisters.40072_Hausverbrauch_Leistung'; // cur_power const idEnergyHausverbrauch = '0_userdata.0.Solar.Hausverbraucht_heute'; // kWh // Energie-Datenpunkt erzeugen createState(idEnergyHausverbrauch, 0, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen ! var energyHausverbrauch = 1000 * getState(idEnergyHausverbrauch).val; // Wh, erzeugt beim ersten Skripstart Fehler on({id: idPowerHausverbrauch}, function(dp) { energyHausverbrauch = energyHausverbrauch + dp.state.val * (dp.state.ts - dp.oldState.ts) / 3600000; // Wh setState(idEnergyHausverbrauch, Math.round(energyHausverbrauch) / 1000, true); // kWh mit 3 Nachkommastellen }); schedule("0 0 * * *", function () { setState(idEnergyHausverbrauch, 0); });
Danke @paul53 das funktioniert super. Nun möchte ich, dass die Werte um 0:00 Uhr auf 0 zurück gesetzt werden. Das habe ich mit:
schedule("0 0 * * *", function () {
setState(idEnergyHausverbrauch, 0);
});
am Ende des Skriptes gelöst. Nun kann ich um 0 Uhr beobachten wie der Wert des Datenpunktes auf 0 gesetzt wird und einen Augenblick später steht wieder der vorherige Wert drin.
Derzeit muss ich das Skript stoppen, den Wert manuell auf 0 setzen und das Skript wieder starten. Dann geht's. -
@streit187 sagte in SetState wird überschrieben (?):
energyHausverbrauch
Die Variable hat noch den alten Wert:
schedule("0 0 * * *", function () { setState(idEnergyHausverbrauch, 0); energyHausverbrauch=0; });
-
@mcu Das hat perfekt funktioniert. Vielen Dank