Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Überleben Timeouts einen Restart?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Überleben Timeouts einen Restart?

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      simplyclever last edited by

      In Blockly setze ich dynamisch Timer. Mir ist klar, das Cron Timer einen restart überleben,
      wie sieht das aber mit dynamischen Timern aus (Ausführen alle xx Minuten)?

      David G. liv-in-sky Homoran 3 Replies Last reply Reply Quote 0
      • David G.
        David G. @simplyclever last edited by

        @simplyclever

        Innerhalb eines Triggere muss der Trigger den timeout neustarten.

        Außerhalb startet er automatisch durch den Start der Javascript Instanz und dem Start des Scripts.

        1 Reply Last reply Reply Quote 1
        • liv-in-sky
          liv-in-sky @simplyclever last edited by

          @simplyclever sagte in Überleben Timeouts einen Restart?:

          dynamisch

          variablen überleben keine neustarts
          wenn du etwas absichern willst, musst du es in einen dp schreiben

          1 Reply Last reply Reply Quote 1
          • Homoran
            Homoran Global Moderator Administrators @simplyclever last edited by

            @simplyclever sagte in Überleben Timeouts einen Restart?:

            Mir ist klar, das Cron Timer einen restart überleben,

            wieso das?
            sie werden beim Neustart neu abonniert.

            @simplyclever sagte in Überleben Timeouts einen Restart?:

            wie sieht das aber mit dynamischen Timern aus (Ausführen alle xx Minuten)?

            entsprechend genau so.
            Aber was ist daran dynamisch?

            S 1 Reply Last reply Reply Quote 0
            • S
              simplyclever @Homoran last edited by

              @homoran Dynamisch ist daran, dass die Timeouts in abhängigkeit von DatenPunkten aktiviert bzw. deaktiviert werden.
              Z.B. Wenn die Haustür geöffnet wird starte einen Timer. Nach 5 Minuten gibt es eine Warnung an mein Handy, dass die Tür
              seit 5 Minuten offen steht. Wird die Tür vor Ablauf des Timers geschlossen, wird der Timer gestoppt.
              Ziel ist also sicherzustellen, dass bei einen Restart (Stromausfall, etc) aktive Timer wieder gestartet werden (wenn sie denn den
              Restart nicht überleben).

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @simplyclever last edited by

                @simplyclever sagte in Überleben Timeouts einen Restart?:

                Ziel ist also sicherzustellen, dass bei einen Restart (Stromausfall, etc) aktive Timer wieder gestartet werden (wenn sie denn den
                Restart nicht überleben).

                dann müsstest du statt Timeout einen Timestamp in einen DP schreiben.
                Diesen bei Neustart wieder auslesen.

                Was nutzt dir ein gelöschter 5 Minuten Timeout, wenn er nach einer Stunde Stromausfall genau da weitermachen würde wo er abgebrochen worden ist.

                S 1 Reply Last reply Reply Quote 0
                • S
                  simplyclever @Homoran last edited by

                  @homoran Ja, dass ist klar. Nach restart gucken, welcher Timer aktiv ist, wie viel Zeit vergangen ist und Timer evtl. neu aktivieren, falls der Auslöser auch noch wahr ist.
                  Puh, klingt doch nach mehr Aufwand, da ich natürlich nicht nur 1 Timer habe und diese auch unterschiedliche Wartezeiten.
                  Dann muss ich das ganze etwas generischer Implementieren.
                  Oder ganz simpel: Nach Neustart alle Trigger checken, die Timer aktivieren.

                  OliverIO David G. liv-in-sky 3 Replies Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @simplyclever last edited by

                    @simplyclever
                    um es kurz zu machen,
                    alle timer, die mit setinterval oder settimeout gestartet worden sind (wie die blöcke in blockly da genau heißen weiß ich nicht) sind nach neustart des javascript-adapters weg.
                    wahrscheinlich auch nach stop und start des skriptes, da der javascript adapter die timer dann wieder aufräumt.
                    d.h. du musst diese art der timer immer irgendwo in einem datenpunkt speichern und dann nach skriptstart wieder erneut starten.

                    1 Reply Last reply Reply Quote 0
                    • David G.
                      David G. @simplyclever last edited by David G.

                      @simplyclever

                      Oder es nicht bis zur perfektion treiben.
                      Wie oft wird der iobroker denn neugestartet?

                      Ob zu diesem Zeitpunkt grad wirklich eine Türe offen war? Und man dann alle x Monate mal eine Meldung verpasst?

                      Ich starte mein System ca jeden Monat einmal gezielt neu wenn Updates etc eingespielt werden.

                      EDIT
                      Und wenn das System mal ungewollt neustartet, warum auch immer werde ich benachrichtigt und gut ist.

                      1 Reply Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @simplyclever last edited by

                        @simplyclever ist doch nicht so wild:

                        -du hast für jeden timer einen dp

                        • wenn der timer auslöst schreibst du 0 rein
                        • wenn ein timer gesetzt wird nimmst du den jetzt-zeittempel + x-minuten und schreibst diesen wert
                        • beim script start checkst du den dp - ist er 0 ist nix zu tun hat er einen wert, der kleiner wie die jetztzeit ist, ist er abgelaufen - dann gibt's alarm
                        • ist er größer als jetzt setzt du den timer wieder neu

                        deine timer datenpunkte setzt du in ein array, dann kannst du durch eine schleife laufen und abfragen

                        ist doch ein interessantes script 🙂

                        Homoran 1 Reply Last reply Reply Quote 2
                        • Homoran
                          Homoran Global Moderator Administrators @liv-in-sky last edited by

                          @liv-in-sky genau so!

                          aber ob das

                          @liv-in-sky sagte in Überleben Timeouts einen Restart?:

                          doch nicht so wild:

                          ist, lasse ich jetzt mal offen.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          700
                          Online

                          32.0k
                          Users

                          80.5k
                          Topics

                          1.3m
                          Posts

                          5
                          11
                          473
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo