NEWS
ClearSchedule funktioniert nicht
-
Hallo an alle,
ich möchte eine kleine Stoppuhr basteln. Die Stoppuhr startet, wenn ein Kanal auf true springt und soll beendet werden, wenn der Kanal wieder auf false springt.
Wenn mein Kanal auf false springt, trigert diesr korrekt die unteren "on".. code Zeilen. Meine Variable 'Bewaesserung.LaufzeitVorgarten' wird zuverlässig auf 00:00 gesetzt. Allerdings wird der Scheduler nicht beendet.
Ich arbeite öfter mit Scheduler und beende oder setzte diese neu. Ich sehe den Fehler nicht, warum dies hier nicht funktioniert.Hat jemand eine Idee für mich. Danke im Voraus.
//Vorgarten var TimerVorgarten=null; on({ id:'hm-rpc.1.000D1D89A09811.10.STATE'/*Bewaesserung Kanal:1:10 STATE*/, val:true },function(obj){ var ZeitMin=getState('Bewaesserung.BewaesserungNoetig.VorgartenZeit').val; var Zeitms=ZeitMin*60*1000; setStateDelayed('hm-rpc.1.000D1D89A09811.10.STATE',false,Zeitms); TimerVorgarten='*/10 * * * * *'; TimerVorgarten=schedule(TimerVorgarten,function(){ var TimerVorgartenLaufzeit=getState('Bewaesserung.LaufzeitVorgarten').val; var minute=TimerVorgartenLaufzeit.substr(0,2); log(minute); var sekunde=TimerVorgartenLaufzeit.substr(3,2); log(sekunde); if (sekunde<50){ sekunde=parseInt(sekunde)+10; }else{ sekunde='00'; minute=parseInt(minute)+1; if (minute<10){minute='0'+minute}; } setState('Bewaesserung.LaufzeitVorgarten',minute+":"+sekunde); }) }); on({ id:'hm-rpc.1.000D1D89A09811.10.STATE'/*Bewaesserung Kanal:1:10 STATE*/, val:false },function(obj){ clearSchedule(TimerVorgarten); setStateDelayed('Bewaesserung.LaufzeitVorgarten','00:00',5000); }); -
Hallo an alle,
ich möchte eine kleine Stoppuhr basteln. Die Stoppuhr startet, wenn ein Kanal auf true springt und soll beendet werden, wenn der Kanal wieder auf false springt.
Wenn mein Kanal auf false springt, trigert diesr korrekt die unteren "on".. code Zeilen. Meine Variable 'Bewaesserung.LaufzeitVorgarten' wird zuverlässig auf 00:00 gesetzt. Allerdings wird der Scheduler nicht beendet.
Ich arbeite öfter mit Scheduler und beende oder setzte diese neu. Ich sehe den Fehler nicht, warum dies hier nicht funktioniert.Hat jemand eine Idee für mich. Danke im Voraus.
//Vorgarten var TimerVorgarten=null; on({ id:'hm-rpc.1.000D1D89A09811.10.STATE'/*Bewaesserung Kanal:1:10 STATE*/, val:true },function(obj){ var ZeitMin=getState('Bewaesserung.BewaesserungNoetig.VorgartenZeit').val; var Zeitms=ZeitMin*60*1000; setStateDelayed('hm-rpc.1.000D1D89A09811.10.STATE',false,Zeitms); TimerVorgarten='*/10 * * * * *'; TimerVorgarten=schedule(TimerVorgarten,function(){ var TimerVorgartenLaufzeit=getState('Bewaesserung.LaufzeitVorgarten').val; var minute=TimerVorgartenLaufzeit.substr(0,2); log(minute); var sekunde=TimerVorgartenLaufzeit.substr(3,2); log(sekunde); if (sekunde<50){ sekunde=parseInt(sekunde)+10; }else{ sekunde='00'; minute=parseInt(minute)+1; if (minute<10){minute='0'+minute}; } setState('Bewaesserung.LaufzeitVorgarten',minute+":"+sekunde); }) }); on({ id:'hm-rpc.1.000D1D89A09811.10.STATE'/*Bewaesserung Kanal:1:10 STATE*/, val:false },function(obj){ clearSchedule(TimerVorgarten); setStateDelayed('Bewaesserung.LaufzeitVorgarten','00:00',5000); }); -
@roland
Zeilen 10, 11:
Der CRON-String und der Schedule-Handler (Objekt) verwenden den gleichen Variablenbezeichner. -
Hallo an alle,
ich möchte eine kleine Stoppuhr basteln. Die Stoppuhr startet, wenn ein Kanal auf true springt und soll beendet werden, wenn der Kanal wieder auf false springt.
Wenn mein Kanal auf false springt, trigert diesr korrekt die unteren "on".. code Zeilen. Meine Variable 'Bewaesserung.LaufzeitVorgarten' wird zuverlässig auf 00:00 gesetzt. Allerdings wird der Scheduler nicht beendet.
Ich arbeite öfter mit Scheduler und beende oder setzte diese neu. Ich sehe den Fehler nicht, warum dies hier nicht funktioniert.Hat jemand eine Idee für mich. Danke im Voraus.
//Vorgarten var TimerVorgarten=null; on({ id:'hm-rpc.1.000D1D89A09811.10.STATE'/*Bewaesserung Kanal:1:10 STATE*/, val:true },function(obj){ var ZeitMin=getState('Bewaesserung.BewaesserungNoetig.VorgartenZeit').val; var Zeitms=ZeitMin*60*1000; setStateDelayed('hm-rpc.1.000D1D89A09811.10.STATE',false,Zeitms); TimerVorgarten='*/10 * * * * *'; TimerVorgarten=schedule(TimerVorgarten,function(){ var TimerVorgartenLaufzeit=getState('Bewaesserung.LaufzeitVorgarten').val; var minute=TimerVorgartenLaufzeit.substr(0,2); log(minute); var sekunde=TimerVorgartenLaufzeit.substr(3,2); log(sekunde); if (sekunde<50){ sekunde=parseInt(sekunde)+10; }else{ sekunde='00'; minute=parseInt(minute)+1; if (minute<10){minute='0'+minute}; } setState('Bewaesserung.LaufzeitVorgarten',minute+":"+sekunde); }) }); on({ id:'hm-rpc.1.000D1D89A09811.10.STATE'/*Bewaesserung Kanal:1:10 STATE*/, val:false },function(obj){ clearSchedule(TimerVorgarten); setStateDelayed('Bewaesserung.LaufzeitVorgarten','00:00',5000); });@roland sagte: Hat jemand eine Idee für mich.
Es können mit dem Trigger val: true mehrere Scheduler laufen. Ändere den Trigger in change: 'gt'.
Besser nur einen Trigger auf Wertänderung verwenden und innerhalb des Callbacks den Wert prüfen:
//Vorgarten var TimerVorgarten=null; on('hm-rpc.1.000D1D89A09811.10.STATE'/*Bewaesserung Kanal:1:10 STATE*/, function(obj) { if(obj.state.val) { // Operationen bei true } else { clearSchedule(TimerVorgarten); setStateDelayed('Bewaesserung.LaufzeitVorgarten','00:00',5000); } });