NEWS
Lampe immer nach 6 Stunden ausschalten
-
Hi,
ich bastel gerade an einem Blockly Skript mit der ich zu einem Bestimmten Zeitpunkt eine Lampe einschalten möchte und diese immer 6 Stunden später wieder ausgeschaltet werden soll.
Als Starttrigger hab ich einen Zeitplan genommen.
Zuerst hatte ich einen weiteren Zeitplantrigger erstellt, der zum Ausschaltzeitpunkt ausgerufen wird.
Das finde ich aber etwas umständlich, wenn man den Startzeitpunkt mal ändert. Meine Idee war nun den Ausschaltzeitpunkt im Anschaltblock zu berechnen und dann beim erreichen der Zeit den Ausschaltblock zu triggern. Dabei scheitere ich aber den richtigen Trigger zu finden bzw. ihn zu konfigurieren.Könnt Ihr mir helfen bzw. vielleicht denke ich auch viel zu kompliziert und ich sehe mittlerweile den Block vor Bäumen nicht mehr.
Danke.
-
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
Als Starttrigger hab ich einen Zeitplan genommen.
welchen?
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
Zuerst hatte ich einen weiteren Zeitplantrigger erstellt, der zum Ausschaltzeitpunkt ausgerufen wird.
welchen?
Wäre im Prinzip auch korrekt, wenn Ein- und Ausschaltzeitpunkte fix sein sollen.
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
Meine Idee war nun den Ausschaltzeitpunkt im Anschaltblock zu berechnen
was gibt es denn da zu berechnen, wenn der Wert festgeschrieben ist?
-
Der Starttrigger ist im ersten Bild zu sehen. Momentan soll die Lampe an jedem Tag um 11:45 Uhr angeschaltet werden und somit um 17:45 wieder ausgeschaltet werden (Im zweiten Bild ist der Ausschaltzeitpunkt noch auf 20:45).
Nun ist es aber so, das je nach dem welche Pflanzen beleuchtet werden sollten sich der Startzeitpunkt verschieben kann. Dabei soll man aber nicht jedesmal auch den Ausschaltzeitpunkt neu berechnen müssen, sondern dieser soll immer 6 Stunden später sein. -
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
Könnt Ihr mir helfen bzw. vielleicht denke ich auch viel zu kompliziert und ich sehe mittlerweile den Block vor Bäumen nicht mehr.
Tust du. Einfach innerhalb des Zeitplans einen "ausführen Timeout" Block der 6 stunden später aktiv wird.. z.Bsp. so:
-
@asgothian Danke. Das hat mir geholfen.
-
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
Der Starttrigger ist im ersten Bild zu sehen
leider unvollständig und abgeschnitten, sonst hätte ich nicht gefragt.
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
sich der Startzeitpunkt verschieben kann
und dann schreibst du jedesmal das Blockly neu?
-
@asgothian sagte in Lampe immer nach 6 Stunden ausschalten:
Einfach innerhalb des Zeitplans einen "ausführen Timeout" Block der 6 stunden später aktiv wird..
dann darf aber keine Störung auftreten, da sonst der Timeou nie ausgeführt wird.
Bei 6h habe ich das deshalb nicht empfohlen.
2 Trigger sind da ausfallsicherer -
@homoran Das denke ich auch, allerdings scheitere ich, wie ich schon schrieb, daran den neues Ausschaltzeitpunkt als Triggerzeit für das Ausschalten zu definieren...
Und nein ich schreibe dann nicht das ganze Blocky neu. Ich möchte nur zentral einen Wert ändern und nicht 2.
-
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
Ich möchte nur zentral einen Wert ändern
da ich deinen komplexen Zeitplan immer noch nicht kenne versuche ich es mal anders.
Bei einem CRON wie
30 7 * * *
ist es doch kein Problem, wenn man den auf45 7 * * *
stellt auch mal eben den Ausschaltzeitpunkt auf45 13 * * *
zu stellen.Aber ja, man soll auch solche CRON variabel erstellen können. ich hab es noch nie gebraucht und dementsprechend auch noch nicht gemacht.
-
@homoran Womit ich wieder am Anfang wäre...
-
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
@homoran Womit ich wieder am Anfang wäre...
nöö, nur solange du bei deinem unbekannten komplexen Zeitplan bleiben willst.
-
@homoran Ich seh da momentan nichts komplexes statt zwei Zeiten (an und aus) möchte ich Startzeit und Dauer definieren.
Von daher ist der Ansatz von @asgothian schon der naheliegende gewesen.
Allerdings stimme ich Dir auch zu, das bei einer Störung es dazu kommen kann, das die Lampe z.B nicht nach 6 Stunden ausgeschaltet wird. Deshalb bin ich schon noch an einer Lösung mit 2 Triggern interessiert.Vielleicht hat hier ja jemand anderes schonmal das Problem gehabt, den Fall Start und Dauer vorzugeben finde ich nun nicht so ungewöhnlich.
-
Ist die Frage was du mit Störung meinst, Stromausfall so das das Blockly aus ist?
Du könntest die Lampen über eine Zigbee Steckdose schalten und in den Einstellungen der Steckdose das Verhalten nach Stromausfall auf off setzen dann wäre gewährleistet das die Lampen, sollte eine "Störung" aufgetreten aus ist.
-
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
Ich seh da momentan nichts komplexes
und ich seh gar nichts, nach
peri...
ist abgeschnittendeswegen wäre die Verwendung von
@homoran sagte in Lampe immer nach 6 Stunden ausschalten:
einem CRON wie 30 7 * * *
Vielleicht hilfreich
-
@iceman8080 sagte: Lösung mit 2 Triggern
Mit Einschaltzeit als "hh:mm" in einem Datenpunkt, aber nicht über Mitternacht:
-
@duffy Gute Idee, im Grund ist die Lampe auch ein Zigbee Zwischenstecker.
Mit 'Störung' dachte ich eher daran, das bei wiederholendem Aufruf des Blockly (z.B. wenn die Startzeit angepasst wird während der Timer schon läuft) es zu mehreren Timern kommt die gestartet sind.
-
@paul53 Cool, das sieht zwar auf dem ersten Blick kompliziert aus, ist aber glaube ich das was ich gesucht habe. Danke das werde ich mal umsetzen.
-
@homoran sagte in Lampe immer nach 6 Stunden ausschalten:
@asgothian sagte in Lampe immer nach 6 Stunden ausschalten:
Einfach innerhalb des Zeitplans einen "ausführen Timeout" Block der 6 stunden später aktiv wird..
dann darf aber keine Störung auftreten, da sonst der Timeou nie ausgeführt wird.
Bei 6h habe ich das deshalb nicht empfohlen.
2 Trigger sind da ausfallsichererDas stimmt zwar, aber ich habe bisher keine Probleme auch mit so langen Timeouts. Die Einfache Lösung ist bei Skriptstart die Lampe abzuschalten.
Die Komplexe Lösung ist:
In diesem Fall wird gespeichert wann die Lampe wieder aus gehen soll. Beim Start des Skriptes muss dann nur geschaut werden ob die Zeit um ist, und ggf. ein Timeout mit der entsprechenden Restzeit loslaufen.
Ist die Zeit schon vorbei sollte die Lampe (sofern sie noch an ist) noch ausgeschaltet werden.Das geht auch über Mitternacht.
A.
Nachtrag: die 216000000 die auf die aktuelle Zeit aufaddiert werden sind 6h in ms ausgedrückt.Nachtrag 2: das lässt sich auch schön mit dem Skript von @paul53 kombinieren - die Einschaltzeit mit einem einstellbaren cron so wie bei Ihm, das Ausschalten per Timeout mit Skript-Neustart-Sicherung wie bei mir
-
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
ist aber glaube ich das was ich gesucht habe.
ja, aber mit einem Cron.
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
das sieht zwar auf dem ersten Blick kompliziert aus
Deswegen kann ich das nicht
-
@iceman8080 sagte in Lampe immer nach 6 Stunden ausschalten:
@duffy Gute Idee, im Grund ist die Lampe auch ein Zigbee Zwischenstecker.
Mit 'Störung' dachte ich eher daran, das bei wiederholendem Aufruf des Blockly (z.B. wenn die Startzeit angepasst wird während der Timer schon läuft) es zu mehreren Timern kommt die gestartet sind.
Kann es nicht. Bei jedem "Neustart" des Blockly's sollten alle Trigger beendet werden. Schwierig ist es nur wenn der Code an sich noch hinter einem GUI Element angehängt wird und dann mehrfach aktivier wird - das ist aber keine Störung sondern eine Fehlbedienung