Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Timeout, ich finde den Fehler nicht

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Timeout, ich finde den Fehler nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @Has3nb3inMH last edited by Homoran

      @Has3nb3inMH sagte in Timeout, ich finde den Fehler nicht:

      @paul53 der laufende Timer müsste doch bei über 3 gestoppt werden.

      Wie ich bereits schrieb, wird er nicht gestoppt wenn mehrfach hintereinander der Wert bei < 3 aktualisiert wird.
      Dann laufen mehrere Timer parallel und können nicht mehr gestoppt werden.

      1 Reply Last reply Reply Quote 0
      • buggybeast
        buggybeast last edited by buggybeast

        @Has3nb3inMH wie schon geschrieben nimm geändert und nicht aktualisiere. Das ist in deinem Fall tödlich 😉
        Du könntest dann in deinen falls statements (linkes Skript von dir) Folgendes einbauen:
        Falls wert < x und vorheriger wert >= x
        Wert und vorheriger wert findest du unter Trigger Blöcken (heißt da objektid).

        Homoran H 2 Replies Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @buggybeast last edited by

          @buggybeast sagte in Timeout, ich finde den Fehler nicht:

          nimm geändert und nicht aktualisiere. Das ist in deinem Fall tödlich

          Aber selbst das hilft nicht, wenn hintereinander 2,8 .... 2,7....2,9... usw kommt.

          Da muss unbedingt vor dem timeout ein Stop timeout erfolgen um den alten timeout zu beenden.

          Die Folge davon ist aber, dass ständig die x Minuten neu gestartet werden.
          Das von @paul53 verlinkte Skript habe ich mir nicht näher angesehen, aber ich würde mich wundern, wenn dieses Problem dort von Paul nicht abgefangen würde

          1 Reply Last reply Reply Quote 0
          • buggybeast
            buggybeast last edited by buggybeast

            @Homoran ja, außer er baut das mit wert und vorheriger wert ein 😊
            Dann passiert das nicht.
            Besser wäre es auch, wenn im ersten falls der gleiche Schwellenwert genommen wird, also in seinem Fall auch die 3 (natürlich als Zahl und nicht als Text). Und den stop timeout dann oben einzubauen, Im ersten falls Block.
            Mein Skript sieht so aus und funktioniert seit Monaten tadellos.
            3a99f571-adfb-4389-98bb-32825390f3da-image.png https://forum.iobroker.net/assets/uploads/files/1588412324597-script.png

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

              @buggybeast sagte in Timeout, ich finde den Fehler nicht:

              Dann passiert das nicht.

              Sicher??

              Was passiert bei
              2,9....2,8....2,7....

              1 Reply Last reply Reply Quote 0
              • buggybeast
                buggybeast last edited by

                @Homoran habe oben mal mein Skript rein kopiert.
                Bei 2.7,...,2,8 passiert nix, wenn der vorherige Wert nicht >= 3 war.

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

                  @buggybeast siehe meinen letzten Post!

                  Du müsstest mit einer Sperrvariablen arbeiten, die auf true gesetzt wird, wenn < 3 und auf false wenn darüber und bei < 3 diese Abfragen ob diese vorher false war

                  paul53 1 Reply Last reply Reply Quote 0
                  • buggybeast
                    buggybeast last edited by buggybeast

                    @Homoran ich schätze du meinst, dass seine schwellwerte „kacke“ sind (sorry) 😉
                    Er muss die gleichen schwellwerte nehmen, wie in meinem Skript.
                    Dann funktioniert das.
                    Sonst hat er halt ein Problem, wenn der Wert mal auf 10 oder 50 geht. Meinst du das?
                    Hach Mist. Was ich meine, ist natürlich, wenn der der Wert von < 3 auf 10 oder so geht, und dann wieder auf < 3. dann würde ein zweiter timeout gestartet werden. Das liegt an den beiden weit auseinander liegenden schwellwerten.

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

                      @buggybeast sagte in Timeout, ich finde den Fehler nicht:

                      Meinst du das?

                      Nein!
                      Ich meine, selbst wenn er auf Änderung triggert und der nächste Wert gemäß dem Vergleich zum letzten unter 3 und immer kleiner wird, wird der Timeout neu gestartet.
                      Der bisherige wird nicht gelöscht und damit hängt das ganze Skript so bald der timeout gelöscht werden soll, da mehrere timeout mit dem selben Namen laufen.

                      EDIT:
                      Mist Handy!

                      Sehe jetzt erst, dass du mit absoluten Zahlen vergleichst und nicht WERT < VORHERIGER WERT.
                      Dann passen meine Antworten natürlich nicht

                      buggybeast 1 Reply Last reply Reply Quote 0
                      • H
                        Has3nb3inMH @buggybeast last edited by

                        @buggybeast habe ich gemacht und läuft jetzt problemlos.

                        Danke

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

                          @Homoran sagt:

                          Du müsstest mit einer Sperrvariablen arbeiten

                          Im verlinkten Skript wird die Timer-Variable timeout als Sperrvariable "missbraucht". Anstelle einer Sperrvariable kann auch "vorheriger Wert" ausgewertet werden, wobei der Vergleich exakt sein muss, damit es in allen möglichen Fällen funktioniert.

                          Blockly_temp.JPG

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

                            @Homoran sagte in Timeout, ich finde den Fehler nicht:

                            Mist Handy!

                            Wenigstens geht es nicht nur mir so 😆

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            652
                            Online

                            32.0k
                            Users

                            80.4k
                            Topics

                            1.3m
                            Posts

                            5
                            18
                            833
                            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