nicht korrekte Startuhrzeit eines Scriptes

  • Hallo,
    ich will ja nicht kleinlich sein, evtl. verzögert sich aber die Ausführungszeit weite
    Ist noch im Test seit letzter Woche. Das Script soll ab einem Startdatum alle 7 Tage um 06:04 starten.

    let targetDate = new Date(2025, 02, 10, 06, 04, 0)
    let interval = 7 * 24 * 60 * 60 * 1000


    Letzte Woche (10.3.2025) startete es um 06:04. Heute morgen jedoch um 05:54.

    Jemand eine Idee warum ?! Lösungsvorschlag ?!

  • Das macht man am besten mit dem im Script zugänglichen Schedule (Cron Job). Das funktioniert zuverlässig und genau (sofern der Shelly Zugang zu einem Zeitserver hat).

    „Habt Geduld. Alle Dinge sind schwierig, bevor sie einfach werden!“ (aus Frankreich)

    „Nothing in life is to be feared, it is only to be understood.“ (Marie Curie, 1867-1934)

    „Comment is free, but facts are sacred“ (C.P. Scott, britischer Verleger)

  • natürlich gibt es einen Zugang zum ntp Server . die zeit "Last seen" ist auch korrekt.

    intern nutzen die shellys zur zeitbasierten Ausführung einen cron deamon.

  • Das meinte ich:

    eiche
    27. Februar 2023 um 10:01

    „Habt Geduld. Alle Dinge sind schwierig, bevor sie einfach werden!“ (aus Frankreich)

    „Nothing in life is to be feared, it is only to be understood.“ (Marie Curie, 1867-1934)

    „Comment is free, but facts are sacred“ (C.P. Scott, britischer Verleger)

  • Unter der Annahme, dass du mit Timer.set() arbeitest:

    intern nutzen die shellys zur zeitbasierten Ausführung einen cron deamon.

    Für Timer stimmt das nicht - die arbeiten mit der Uptime des Gerätes. Das geht auch implizit aus der Dokumentation der (in FW 1.5.x neuen) Timer.getInfo() Methode hervor:

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Das macht ja auch Sinn, weil Timer damit auch auf Geräten funktionieren, die mangels Internetzugang keine Zeitsynchronisation durchführen können.

    Meine Vermutung ist, dass die interne Uhr des Shellys zu schnell läuft und daher ein Drift zwischen Uptime und Realzeit auftritt. Das könntest du überprüfen, indem du z. B. die Differenz in der Uptime innerhalb von exakt 24 Stunden misst.

    Wenn diese Vermutung zutrifft, wäre die Lösung - wie von thgoebel vorgeschlagen - ein Schedule, weil der natürlich an der Systemzeit hängt.