NEWS
[Geklärt] Zeitplan startet nicht
-
Hallo,
Ich habe für den Wasserstand unseres Teiches ein Blockly
erstellt, das um 12:00 ein Ventil und die zugehörige Versorgungsspannung
einschalten soll. Vorher erfolgt eine Prüfung, ob der Wasserstand OK ist oder nicht. Bei Unterschreitung des Wasserstandes ist der GPIO Kontakt auf on. Jetz soll das Ventil öffnen.
Um 12:30 erfolgt die Abschaltung, egal ob der Wasserstand OK ist oder nicht.
Die Aktoren für das Ventil und die Versorgungsspannung sind HM Schaltaktoren.// Prüfe ob Wasserstand tief schedule('{"time":{"exactTime":true,"start":"12:00"},"period":{"days":1}}', function () { console.warn('Prüfe Wasserstand'); if (getState("fhem.0.GPIOWasserstand.state").val == true) { console.warn('falls Wasserstand nicht ok und Zeitplan 12:00'); if (false) { console.warn('Wasserstand einschalten'); setState("hm-rpc.2.OEQ0482307.13.STATE"/*Ventil Wasserstand Teich.STATE*/, true); setState("hm-rpc.2.OEQ0482307.15.STATE"/*Ansteuerung Ventile 24V.STATE*/, true); } } }); schedule('{"time":{"exactTime":true,"start":"12:30"},"period":{"days":1}}', function () { if (getState("fhem.0.GPIOWasserstand.state").val != false) { console.warn('Wasserstand ausschalten'); setState("hm-rpc.2.OEQ0482307.13.STATE"/*Ventil Wasserstand Teich.STATE*/, false); setState("hm-rpc.2.OEQ0482307.15.STATE"/*Ansteuerung Ventile 24V.STATE*/, false); } });
Ich habe verschiedene Varianten versucht. Aber immer ohne Erfolg.
Wer kann mir bitte weiter helfen.
Danke
Freundliche Grüße
Michael -
@Altersrentner sagte in Zeitplan startet nicht:
schedule('{"time":{"exactTime":true,"start":"12:00"},"period":{"days":1}}',
Nimm mal bitte den einfachen CRON-Block
-
Danke für Deine Antwort,
Das hatte ich auch schon probiert.
Jetzt noch mal.// Prüfe ob Wasserstand tief schedule("0 12 * * *", function () { console.warn('Prüfe Wasserstand'); if (getState("fhem.0.GPIOWasserstand.state").val == true) { console.warn('falls Wasserstand nicht ok und Zeitplan 12:00'); if (false) { console.warn('Wasserstand einschalten'); setState("hm-rpc.2.OEQ0482307.13.STATE"/*Ventil Wasserstand Teich.STATE*/, true); setState("hm-rpc.2.OEQ0482307.15.STATE"/*Ansteuerung Ventile 24V.STATE*/, true); } } }); schedule("30 12 * * *", function () { if (getState("fhem.0.GPIOWasserstand.state").val != false) { console.warn('Wasserstand ausschalten'); setState("hm-rpc.2.OEQ0482307.13.STATE"/*Ventil Wasserstand Teich.STATE*/, false); setState("hm-rpc.2.OEQ0482307.15.STATE"/*Ansteuerung Ventile 24V.STATE*/, false); } });
Bringt auch kein Erfolg.
Gruß Michael -
@Altersrentner Zeig mal das Blockly als Bild
-
@Altersrentner sagte:
if (false) {
Diese Abfrage in Zeile 6 wird nie wahr, also der nachfolgende Teil nie ausgeführt.
-
@Homoran
Hier ist das gewünschte Bild:
Gruß Michael -
@Altersrentner sagte:
Vorher erfolgt eine Prüfung, ob der Wasserstand OK ist oder nicht.
Warum zweimal ?
@Altersrentner sagte in Zeitplan startet nicht:
Um 12:30 erfolgt die Abschaltung, egal ob der Wasserstand OK ist oder nicht.
Weshalb dann die Abfrage ?
-
@paul53 Habe die erste Prüfung entfernt.
Ohne Erfolg
-
@Altersrentner
Was ist mit der Abfrage um 12:30 Uhr ?Stimmt die Uhrzeit im System, d.h. ergibt dies hier die richtige Uhrzeit im Log bei Script-Start ?
-
@paul53 Habe die Zeit ( Log )nur zum Test umgestellt.
Wenn das Skript läuft wird der Zeitplan wieder auf 12:00/12::30 umgestellt.
Wie jetzt aus dem Log zu sehen ist ein Problem die Uhrzeit. Die muss
umgestellt werden. Aber wie?
Das zweite Problem der erste Zeitplan prüft nur
debug output:falls Wasserstand nicht ok und Zeitplan 12:00)
Wasserstand einschalten erfolgt nicht.
Der zweite Zeitplan schaltet nach dem Log ab. Das sollte funktionieren.
Wie kann ich nun den ersten Zeitplan zum Laufen bekommen.
Gruß Michael
-
@Altersrentner sagte:
Uhrzeit. Die muss umgestellt werden. Aber wie?
Dein OS (welches ?) hat die falsche Zeitzone.
-
@paul53 "Dein OS (welches ?) hat die falsche Zeitzone."
Tut mir leid
Was ist das, Höre ich das erste mal. -
@Altersrentner
Unter welchem Betriebssystem (Windows, Raspbian, Ubuntu, ...) läuft ioBroker ? -
@paul53
Raspbian -
@Altersrentner
Was sagt auf der Console (SSH) ?timedatectl
-
pi@raspberrypi:~ $ timedatectl Local time: Sat 2020-04-18 16:37:52 BST Universal time: Sat 2020-04-18 15:37:52 UTC RTC time: n/a Time zone: Europe/London (BST, +0100) System clock synchronized: yes NTP service: active RTC in local TZ: no pi@raspberrypi:~ $ ```Das ergibt den Zeitunterschied
-
@Altersrentner
Ja, London ist die falsche Zeitzone. Korrektur:sudo timedatectl set-timezone Europe/Berlin
-
@paul53
muss ich ioBroker vorher stoppen? -
@Altersrentner sagte:
muss ich ioBroker vorher stoppen?
Ich sage mal so: Es schadet nicht und so kannst Du sicher sein, dass beim Neustart auch alle Komponenten von ioBroker die Änderung mitbekommen.
-
@paul53
ist geändertpi@raspberrypi:~ $ iobroker stop pi@raspberrypi:~ $ sudo timedatectl set-timezone Europe/Berlin pi@raspberrypi:~ $ iobroker start pi@raspberrypi:~ $ timedatectl Local time: Sat 2020-04-18 17:51:17 CEST Universal time: Sat 2020-04-18 15:51:17 UTC RTC time: n/a Time zone: Europe/Berlin (CEST, +0200) System clock synchronized: yes NTP service: active RTC in local TZ: no pi@raspberrypi:~ $