Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Hintergrund Timeouts stoppen bei mehrfach Ausführung?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hintergrund Timeouts stoppen bei mehrfach Ausführung?

    This topic has been deleted. Only users with topic management privileges can see it.
    • nik82
      nik82 Most Active @paul53 last edited by

      @paul53
      Perfekt, vielen Dank für die Info👍

      1 Reply Last reply Reply Quote 0
      • nik82
        nik82 Most Active @paul53 last edited by

        @paul53
        Jetzt muss ich leider nochmal nerven, ich habe das jetzt angelegt:

        2b6f7c01-1661-469d-903a-a874b6d73653-image.png

        Leider macht er aber nichts, wahrscheinlich weil er keinen vorherigen wert hat, jetzt muss ich quasi warten bis sich der wert wirklich ändert oder?

        Momentan ist der Wert -8000, dass heißt ich muss warten bis der wert jetzt einmal über 200 geht und dann geht das wahrscheinlich.

        Könnte man das noch verbessern, weil immer wenn ich das Script neustarte, müsste ich immer warten und das kann ja bis zum Abend dauern?

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @nik82 last edited by

          @nik82
          Es werden die falschen Timer gestoppt!

          @nik82 sagte in Hintergrund Timeouts stoppen bei mehrfach Ausführung?:

          wenn ich das Script neustarte, müsste ich immer warten und das kann ja bis zum Abend dauern?

          Außerhalb des Triggers:

          Bild_2022-06-03_110833608.png

          nik82 2 Replies Last reply Reply Quote 0
          • nik82
            nik82 Most Active @paul53 last edited by

            @paul53
            Ok, danke. Oh da hat sich ein falscher Timeout eingeschlichen weil ich das Script für 1000 habe und einfach kopiert habe für den 200er Wert.

            @paul53 sagte in Hintergrund Timeouts stoppen bei mehrfach Ausführung?:

            Außerhalb des Triggers:

            Bild_2022-06-03_110833608.png

            Was soll ich bei Object ID auswählen, wenn ich das so lasse, dann kommt eine Fehlermeldung im Log "State "Object ID" not found "

            1 Reply Last reply Reply Quote 0
            • nik82
              nik82 Most Active @paul53 last edited by

              @paul53
              Hat sich erledigt, ich mache es jetzt so:

              55cc2742-63e2-4fe4-a41b-77d3e15c8825-image.png

              Der Tip mit der dummy Variable und damit auf die timeouts zu gehen war super!
              Das klappt einwandfrei.

              Nochmal vielen Dank für deine super und schnelle Hilfe👍

              1 Reply Last reply Reply Quote 0
              • nik82
                nik82 Most Active @paul53 last edited by

                Hallo zusammen,
                habe das Script jetzt noch etwas erweitert und wollte das keinem vorenthalten, falls jemand genau das gleiche Thema hat.

                Wir hatten ja als Beispiel dieses Script:

                32469bb3-eeac-4df7-b649-8c9ac29187d7-image.png

                Das klappt ja soweit ganz gut, nur bekomme ich hier IMMER eine Meldung wenn sich der Wert ändert, also auch wenn sich der Wert innerhalb der 5 Minuten ändert.
                Ich möchte aber nur eine Meldung wenn ein Timeout wirklich durchgelaufen ist, also nur wenn der Wert auch für 5 Minuten bleibt.

                Beispiel:
                09:25 Uhr: Objekt geht auf false
                09:26 Uhr: Objekt geht wieder auf true
                --> jetzt würde nach 5 Minuten die Meldung "Variable ist wahr" kommen, da es sich aber nur innerhalb der einen Minute geändert hat möchte ich keine Meldung bekommen.

                Beispiel2:
                09:25 Uhr: Objekt geht auf false
                09:30 Uhr: Meldung kommt "Variable ist falsch"
                09:45 Uhr: Objekt geht auf true
                09:50 Uhr: Meldung kommt "Variable ist wahr"
                --> das ist in Ordnung weil die Variable mehr als 5 Minuten den Zustand false oder true hatte

                Deswegen habe ich hier noch eine Variable dazugeschrieben:

                f358c7dc-c88e-4a00-96be-b13d07cfea62-image.png

                @paul53
                Denke das ist von der Logik ok oder? 🙂

                1 Reply Last reply Reply Quote 0
                • nik82
                  nik82 Most Active last edited by nik82

                  @paul53

                  Hallo Paul, ich bräuchte wieder Hilfe von einem Profi 🙂

                  Ich habe dieses Script hier:

                  d69e2ac9-6744-4957-81bb-965a0a82bb37-image.png

                  Ich will quasi nur eine Fehler-Nachricht haben, wenn CarrierSense länger als 15 Minuten über 10 ist.
                  Und dann will ich nur eine Ok-Nachricht haben, wenn diese Bedingung vorher erfüllt war.

                  Wenn ich jetzt testweise den Wert auf 20 stelle, dann kommt nach 15 Minuten eine Error-Meldung --> soweit ok.
                  Stelle ich dann auf 0, dann kommt eine Ok-Meldung --> auch ok.

                  Stelle ich aber den Wert auf 20, dann nach ein paar Sekunden gleich wieder auf 0 --> dann kommt nichts --> auch ok.

                  Und stelle ich aber den Wert auf 20, dann nach ein paar Sekunden auf 30 und dann ein paar Sekunden später wieder auf 0 --> dann kommt nach 15min eine Fehler-Meldung und sofort darauf eine Ok-Meldung.
                  Aber eigentlich sollte da auch gar nichts kommen.

                  Kannst du mir da helfen, ich komm da nämlich einfach nicht weiter 😞
                  P.S. Er müsste ja eigentlich den Timeout "timeout_CarrierSense_falsch" stoppen, sobald der Wert wieder unter 10 geht, aber das macht er nicht (wenn sich der Wert mehrmals innerhalb des Timeouts ändert) und ich weis nicht warum

                  Danke im Voraus.

                  nik82 1 Reply Last reply Reply Quote 0
                  • nik82
                    nik82 Most Active @nik82 last edited by nik82

                    Habs gefunden!
                    Der Timeout "CarrierSense_falsch" wird ja mehrmals gestartet und dann "stop" "timeout" wird anscheinend nur der letzte gestoppt, aber nicht alle.
                    Deswegen einfach zusätzlich den eigenen Timeout noch stoppen, damit dieser nicht mehrfach ausgeführt wird:

                    c1b84a41-358a-40b4-8a92-a7ce085e3cf8-image.png

                    1 Reply Last reply Reply Quote 0
                    • Schmakus
                      Schmakus Developer @paul53 last edited by

                      @paul53 sagte in Hintergrund Timeouts stoppen bei mehrfach Ausführung?:

                      @nik82 sagte: du hast glaub ich deinen Post nochmal editiert oder?

                      Ja, hab ich, da der Umgang mit den Timer-Variablen etwas trickreich ist:

                      Die Timer-Variablen werden nicht angeboten:

                      Bild_2022-06-02_223535526.png

                      Also erstellt man eine dummy-Variable, die man in das Skript zieht:

                      Bild_2022-06-02_223737549.png

                      Anschließend selektiert man die richtige Timer-Variable:

                      Bild_2022-06-02_223907518.png

                      Tipp: Man benötigt nicht die Variaben! Bei den Timeouts findet man den Block "Verzögerung"

                      nik82 1 Reply Last reply Reply Quote 0
                      • nik82
                        nik82 Most Active @Schmakus last edited by

                        @schmakus
                        Danke für den Tip, habe den Block "Verzögerung" gerade gefunden, aber was genau macht dieser Block?
                        Ich verstehs leider noch nicht ganz, verzögert der die Timeout Ausführung?

                        Schmakus 1 Reply Last reply Reply Quote 0
                        • Schmakus
                          Schmakus Developer @nik82 last edited by Schmakus

                          @nik82 nein, dieser beinhaltet quasi die Variable des jewiligen Timeouts oder Intervall.
                          Diesen kann man einsetzen, um zu prüfen, ob ein Tiemout schon läuft.

                          => nicht Verzögerung timeout

                          Bedenke aber, dass wenn ein timeout mal gestartet wurde, es jedoch nie gestoppt wurde, die Abfrage on "nicht timeout" immer wahr ergibt. Erst ein "stop timeout" löscht die Variable (setzt auf NULL). Ein timeout setzt sich nämlich nach erfolgreichem Ablauf nicht selbst zurück. Die timeout-ID bleibt weiterhin in der Variablen.

                          nik82 1 Reply Last reply Reply Quote 1
                          • nik82
                            nik82 Most Active @Schmakus last edited by

                            @schmakus
                            Ah jetzt hab ich das verstanden, ich nehme quasi den Block statt der Variable.
                            Vielen Dank für die Info.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            498
                            Online

                            32.0k
                            Users

                            80.5k
                            Topics

                            1.3m
                            Posts

                            3
                            18
                            924
                            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