Hallo, ich hatte gedacht ich schreibe eine ganz einfaches Javascript Programm. Ziel war es das ich eine Nachricht bekomme wenn die Waschmaschine gestartet wird und eine weitere Nachricht wenn die Waschmaschine beendet ist.
Das wollte ich so lösen das wenn die Leitsung größer als 60 ist wird die Funktion FUWMistan ausgeführt.
Wenn die Leistung kleiner als 45 ist wird ein Timer gestartet von 300000 msec = 5 Minuten
Wenn der Timer abgelaufen ist soll dann die Funktion FUWMistaus ausgeführt werden.
Da die Waschmaschine immer wieder Phasen hat in dem sie wenig Strom verbraucht dann aber wieder viel Strom verbraucht, möchte ich den Timer wieder löschen wenn die Leistung größer 45 Watt ist.
Aber es funktiniert nicht zuverlässig, obwohl der Timer eigentlich wieder gelöscht sein sollte bekomme ich trotzdem die Meldung das die Funktion FUWMistaus ausgeführt wurde. Was mache ich hier falsch?
Für Hilfe wäre ich dankbar.
Gruß Ralf
var TimeWMan, WMistan;
on({ id: [].concat(['shelly.1.SHPLG2-1#083A8DF43AE5#1.Relay0.Power']), change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
WMistan = getState('0_userdata.0.Zustand.Waschmaschine_ist_an').val
if (value > 60 && WMistan == false ) {
FUWMistan();
}
if (value >= 45) {
if (TimeWMan) {
clearTimeout(TimeWMan);
TimeWMan = null;
};
};
if (value < 45) {
TimeWMan = setTimeout(async () => { //Verzögerungszeit von 5 Minute
TimeWMan = null;
FUWMistaus();
},300000);
}
});
function FUWMistan(){
setState('0_userdata.0.Zustand.Waschmaschine_ist_an', true);
console.log('WM### FUWMistan Waschmaschine ist gestartet');
}
function FUWMistaus(){
setState('0_userdata.0.Zustand.Waschmaschine_ist_an', false);
console.log('WM### FUWMistaus Waschmaschine wurde gestoppt')
}