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.
    • paul53
      paul53 @nik82 last edited by paul53

      @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

      nik82 Schmakus 3 Replies Last reply Reply Quote 2
      • 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