@sveni_lee sagte in [gelöst]js-skript zeitspanne Objekt-State "true" erfassen:
okay… das starten des Intervals funktioniert:
on({id: 'hm-rpc.0.OEQ0207710.5.STATE', change: "ne"}, function (obj) {
if (obj.state.val) { //wenn Gerät EIN
setState("javascript.0.Bewässerung.Ventil1.Timestamp_ON"/*Timestamp_ON*/, formatDate(new Date(), "TT.MM.JJJJ SS:mm"), true);
setInterval(function(){
setState("javascript.0.Bewässerung.Ventil1.Laufzeit_last_ON"/*Laufzeit_last_ON*/, Math.round((Date.now() - obj.state.lc)/60000) + " Minuten", true);
}, 10000);
}
else if (!obj.state.val) { // wenn Gerät AUS
clearInterval(timer);
setState("javascript.0.Bewässerung.Ventil1.Laufzeit_last_ON"/*Laufzeit_last_ON*/, Math.round((obj.state.lc - obj.oldState.lc)/60000) + " Minuten", true);
setState("javascript.0.Bewässerung.Ventil1.Menge_last_ON"/*Laufzeit_last_ON*/, Math.round((obj.state.lc - obj.oldState.lc)/60000/60*4000) + " Liter", true);
}
});
aber das mit cearInterval(timer) habe ich noch nicht ganz verstanden
EDIT:
ich denke ich habs herausgefunden:
var intervalId = null;
on({id: 'hm-rpc.0.OEQ0207710.5.STATE', change: "ne"}, function (obj) {
if (obj.state.val) { //wenn Gerät EIN
setState("javascript.0.Bewässerung.Ventil1.Timestamp_ON"/*Timestamp_ON*/, formatDate(new Date(), "TT.MM.JJJJ SS:mm"), true);
intervalId = setInterval(function(){
setState("javascript.0.Bewässerung.Ventil1.Laufzeit_last_ON"/*Laufzeit_last_ON*/, Math.round((Date.now() - obj.state.lc)/60000) + " Minuten", true);
}, 10000);
}
else if (!obj.state.val) { // wenn Gerät AUS
clearInterval(intervalId);
setState("javascript.0.Bewässerung.Ventil1.Laufzeit_last_ON"/*Laufzeit_last_ON*/, Math.round((obj.state.lc - obj.oldState.lc)/60000) + " Minuten", true);
setState("javascript.0.Bewässerung.Ventil1.Menge_last_ON"/*Laufzeit_last_ON*/, Math.round((obj.state.lc - obj.oldState.lc)/60000/60*4000) + " Liter", true);
}
});
Hallo sveni_lee
ich habe das Script zufällig gefunden und mal nachgebaut, es funktioniert auch, aber nach einiger Zeit ändert sich ohne zutun der Timestamp_ON ??? dann fängt der Timer auch wieder neu an zu zählen.
Kannst du da ev. helfen?
Jukabroker