NEWS
Zeit-Objekt als Trigger
-
@paul53 Vielen herzlichen Dank für Deine erneute Unterstützung!
Da ich zuvor noch nie mit den Funktionen gearbeitet habe und ich Deinen Screenshot erst jetzt gerade sah (nachträglich noch eingefügt, oder war ich blind?) war ich gerade etwas beschäftigt mit dem Versuch dies richtig zu konfigurieren.
Habs nun aber hinbekommen und scheint korrekt zu sein, wenn ich dies mit Deinem Beispiel vergleiche.
Mit Deiner Lösung ist nun das Problem beim Script-Start gelöst, das wiederholte Aufrufen der Funktion aber leider nur teilweise.
Mit Hilfe des Timeouts wird zwar der Cron nicht gleich beim verändern des Zeitobjektes gesetzt, sofern die Veränderung innerhalt des definierten Timeouts liegt, spätere Änderungen werden aber nicht mit der bisherigen überschrieben, sondern ergänzt.Wenn ich also um 10:00 das Zeitobjekt auf 14:30 einstelle, um 10:30 dies aber auf 14:45 korrigiere, so wird das Script sowohl um 14:30, als auch um 14:45 ausgeführt.
Dies sollte aber eigentlich möglich sein zu verhindern, indem ich am Schluss den "falls, mache" Block einfüge und dort die Stunden und Minuten aus dem Zeitobjekt mit der aktuellen Zeit abgleiche. Das Script wird dann zwar dennoch gestartet, sollte so aber nichts ausführen und als workaround ausreichen.
Da ich nun schon etwas müde bin, werde ich dies jedoch Morgen noch einmal in Ruhe anschauen.
Vielen Dank noch einmal für Deine Hilfe!
-
@wizzardking sagte:
Wenn ich also um 10:00 das Zeitobjekt auf 14:30 einstelle, um 10:30 dies aber auf 14:45 korrigiere, so wird das Script sowohl um 14:30, als auch um 14:45 ausgeführt.
Um das zu vehindern, ist stop schedule im Trigger eingebaut. Es kann aber ein Problem geben, wenn eine Funktion (schedule()) den gleichen Bezeichner hat wie eine Variable. Deshalb benenne die Variable schedule mal um in z.B. schedMo1.
-
@paul53 Das habe ich eigentlich auch eingebaut, schein aber nicht zu funktionieren.
-
Bei den hier Rot markierten Stellen habe ich "Wert von Objekt ..." genommen, anstelle direkter Werte wie in Deinem Besipiel.
Habe ich dort evtl. etwas missverstanden? -
habe ich "Wert von Objekt ..." genommen
Wenn Du innerhalb der Funktion "Wert von Objekt" verwendest, sollte der Übergabeparameter uhrzeit entfallen, denn er ist dann überflüssig.
-
Demnach müsste dies so korrekt sein?
Was ich aber leider noch immer nicht verstehe, ist was das für einen Block mit dem Inhalt "Wert" ist, welchen du bei Dir eingefügt hast und ich nun im Bild mit den ???? ersetzt habe. (sry, falls ich hier etwas Begriff stutzig bin)
-
@wizzardking sagte:
Block mit dem Inhalt "Wert"
Unter Blöcke Trigger
Ändere bitte den Variablenbezeichner von schedule !
-
@paul53 said in Zeit-Objekt als Trigger:
Ändere bitte den Variablenbezeichner von schedule !
Nice!!
Nach dem umbenennen musst ich auch die stop funktion neu zuweisen, da diese bei "schedule" blieb.
Scheint nun perfekt zu funktionieren.Vielen Dank für Deine Geduld. Bin ich mir aus einem Forum so nicht gewohnt
-
@wizzardking Wenn mehrere Cronjobs in einem Skript erzeugt werden sollen, kann man es etwa so machen:
Die Funktionen Mo1() und Mo2() sind erforderlich, weil Blockly es nicht zulässt, den gleichen Cronjob zweimal (Skriptstart / Trigger) zu erzeugen.
-
Hallo zusammen,
ich habe das gleiche Problem wie @wizzardking mein cron-job läuft nach Änderung der Zeiten mehrfach.
Und obwohl ich diesen Post jetzt gefühlt 100x gelesen habe, checke ich die Lösung nicht, vielleicht kann mir hier jemand "ein Licht ans Rad schrauben"...?
Bei mir geht es um eine Bewässerung die zu bestimmten änderbaren Uhrzeiten laufen soll. Dazu habe ich in der VIS zwei Eingabe-Felder die mir die Start-Stund und die Start-Stund in 2 Datenpunkte schreiben, diese sollen dann vom cron-job übernommen werden. Das funktioniert soweit auch wie gewünscht.
Nun habe ich in diesem Post gelernt, dass man den Job vorher stoppen muss um ihm dann die neuen Zeit einlesen zu lassen - das leuchtet mir auch ein.Wenn ich aber den "Stop" vor den cron-job setze, (im screenshot wieder/noch deaktiviert), bekomme ich aber eine Fehlermeldung.
Kann mir jemand den Weg weisen, an welcher Position muss in den alten cron-job stoppen damit der Neue korrekt eingelesen werden kann ?
@paul53 ich setze ganz stark auf Dich, Du scheinst hier den Durchblick zu haben...
Danke schon mal an der Stelle,
viele Grüße,
Stefan. -
@Stefan-Hanke Entferne das Leerzeichen im Namen des Zeitplans. Das Stop dann neu wählen damit er den geänderten Namen nimmt
-
Guten Morgen !
So wie es aussieht, war es das tatsächlich - ein Leerzeichen !Ich habe damit beim Aktivieren von "Stop" kein Fehler mehr im log, jetzt beobachte ich das mal den Tag über, mal sehen ob der Rasen trocken bleibt.
Zumindest was die von mir verursachte Nässe angeht, Regen kommt ja wahrscheinlich sowieso...
@fastfoot Vielen herzlichen Dank schon mal an der Stelle...
-
Hallo zusammen,
ich möchte noch ein kurzes Feedback da lassen, es war tatsächlich das Leerzeichen im Namen des cron-jobs. Habe jetzt die letzten beiden Tage die Startzeiten gefühlt hundert mal geändert, das Programm lief jeweils nur einmal wie geplant durch.
@fastfoot : nochmals vielen Dank für Deine Hilfe !
Viele Grüße,
Stefan -
@Stefan-Hanke sagte in Zeit-Objekt als Trigger:
es war tatsächlich das Leerzeichen im Namen
man sollte eigentlich nie Leerzeichen oder Sonderzeichen in Namen oder Variablen verwenden. Iobroker wandelt die zwar in Unterstriche um, jedoch wurde das wohl im Stop nicht gemacht, deshalb der Fehler. In Github existiert ein issue dazu, sollte also irgendwann auch funktionieren