NEWS
Schedule - Spezial Frage
-
vorab:
Ich schreibe alles in JS; Blockly nehm ich nicht.
Bei Schedule benutze ich Cron.
Handhabe Schedule per Variable und clearschedule ist mir bekannt.Sachverhalt:
Ich möchte ein Gerät für x Minuten einschalten und dann nach weiteren x Minuten ausschalten.
Beide Werte liegen per DP vor, z.B.
alle_x = 15 (alle 15 Minuten ein schalten)
für_x = 2 (dann nach 2 Minuten aus schalten)Hatte es so probiert, klappt aber verständlicher Weise nicht:
alle_x = getState("javascript.0.System.Ulanzi.alle_x_Minuten").val; fuer_x = getState("javascript.0.System.Ulanzi.fuer_x_Minuten").val; // schedule '*/15 * * * *' sched_alle_x = "*/" + alle_x + " * * * *"; sched_fuer_x = "*/" + (alle_x + fuer_x) + " * * * *"; log (sched_alle_x + " __ " + sched_fuer_x); schedule(sched_alle_x, function () { setState("awtrix-light.0.display.power",true); log ("Ulanzi ein"); }); schedule(sched_fuer_x, function () { setState("awtrix-light.0.display.power",false); log ("Ulanzi aus"); }); log ("Ulanzi wird alle " + alle_x + " Minuten für " + fuer_x + " Minuten eingeschaltet.");Wenn ich z.B. sage alle 3 Minuten für 1 Minute ein, dann kommt ja nach meinem Script:
alle_x = 3,6,9,12,15,.....
für_x = 4,8,12,16,...Somit klappt das nur das erste mal, dann läuft es auseinander.
Hat da jemand ein Script Schnipsel für mich.
-
vorab:
Ich schreibe alles in JS; Blockly nehm ich nicht.
Bei Schedule benutze ich Cron.
Handhabe Schedule per Variable und clearschedule ist mir bekannt.Sachverhalt:
Ich möchte ein Gerät für x Minuten einschalten und dann nach weiteren x Minuten ausschalten.
Beide Werte liegen per DP vor, z.B.
alle_x = 15 (alle 15 Minuten ein schalten)
für_x = 2 (dann nach 2 Minuten aus schalten)Hatte es so probiert, klappt aber verständlicher Weise nicht:
alle_x = getState("javascript.0.System.Ulanzi.alle_x_Minuten").val; fuer_x = getState("javascript.0.System.Ulanzi.fuer_x_Minuten").val; // schedule '*/15 * * * *' sched_alle_x = "*/" + alle_x + " * * * *"; sched_fuer_x = "*/" + (alle_x + fuer_x) + " * * * *"; log (sched_alle_x + " __ " + sched_fuer_x); schedule(sched_alle_x, function () { setState("awtrix-light.0.display.power",true); log ("Ulanzi ein"); }); schedule(sched_fuer_x, function () { setState("awtrix-light.0.display.power",false); log ("Ulanzi aus"); }); log ("Ulanzi wird alle " + alle_x + " Minuten für " + fuer_x + " Minuten eingeschaltet.");Wenn ich z.B. sage alle 3 Minuten für 1 Minute ein, dann kommt ja nach meinem Script:
alle_x = 3,6,9,12,15,.....
für_x = 4,8,12,16,...Somit klappt das nur das erste mal, dann läuft es auseinander.
Hat da jemand ein Script Schnipsel für mich.
@bahnuhr
Also ich würde per Schedule ein- und mit 'nem Timeout ausschalten. -
@bahnuhr
Also ich würde per Schedule ein- und mit 'nem Timeout ausschalten.Hatte ich auch schon überlegt:
sowas:
schedule(sched_alle_x, function () { setState("awtrix-light.0.display.power",true); log ("Ulanzi ein"); setTimeout(function() { setState("awtrix-light.0.display.power",false); } , fuer_x); });Ich probiers mal.
-
Hatte ich auch schon überlegt:
sowas:
schedule(sched_alle_x, function () { setState("awtrix-light.0.display.power",true); log ("Ulanzi ein"); setTimeout(function() { setState("awtrix-light.0.display.power",false); } , fuer_x); });Ich probiers mal.
das funktioniert grundsätzlich.
allerdings, wenn während der an-phase der javascript adapter neugestartet wird
oder iobroker neu gestartet wird, dann gibt es den timout nicht mehr.da du aber sehr kleinteilig schaltets, wird ja beim nächsten mal an, der timer wieder gestartet
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden