Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Skript wird 2x ausgelöst

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Skript wird 2x ausgelöst

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

      @homoran Ich habe versucht, das Verhalten mit Switch = false zu verriegeln. Ohne Erfolg. Würde mich auch stark wundern, wenn er innerhalb ein paar ms schalten würde. Er muss ja true schicken und den Wert zurück bekommen. Trotzdem verstehe ich nicht, warum er den Block 2x ausführt. Es kommt auch gelegentlich vor, dass er 2x aus sendet.

      Homoran Asgothian K 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @sZno last edited by

        @szno wenn ein timeout erst mehr als einmal gestartet wurde kann er nicht wieder gestoppt werden.

        S 1 Reply Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @sZno last edited by Asgothian

          @szno sagte in Skript wird 2x ausgelöst:

          @homoran Ich habe versucht, das Verhalten mit Switch = false zu verriegeln. Ohne Erfolg. Würde mich auch stark wundern, wenn er innerhalb ein paar ms schalten würde. Er muss ja true schicken und den Wert zurück bekommen. Trotzdem verstehe ich nicht, warum er den Block 2x ausführt. Es kommt auch gelegentlich vor, dass er 2x aus sendet.

          Dieses Verhalten ist durch den Trigger begründet. Aus technischen Gründen aktualisiert der Aqara BWM den "occupancy" state in einigen Fällen doppelt. Dies liegt daran das der Sensor die Aktualisierung der occupancy manchmal verschluckt hat wenn gleichzeitig die Helligkeit gemeldet wurde. Ein Fix auf der Herdiman-Seite sorgt dafür das diese Aktualisierung automatisch dazu kommt.

          Um zu verhindern das das klemmt kannst du das folgende Konstrukt versuchen:

          Screenshot 2021-10-26 at 09.33.34.png

          Der Baustein 'state value' kommt dabei aus dem Trigger Block und ist mit 'Objekt ID' vorbelegt. Er beinhaltet den Wert des triggernden Objektes.

          Durch die Kombination "schalten mit delay" und "löschen falls läuft" entsteht beim anschalten eine "entprellung". Das Anschalten wird um 50 ms verzögert und blockiert damit die doppelte Aktualisierung seitens des Zigbee Adapters.

          Das gleiche kann auch für das abschalten genutzt werden. Vorteil: Kein timeout explizit im Blockly. Nachteil: Kein log Eintrag.

          An Stelle von
          Screenshot 2021-10-26 at 09.31.35.png

          kann daher auch

          Screenshot 2021-10-26 at 09.31.51.png

          stehen damit du ggf. auch noch den Logeintrag mit bekommst.

          A.

          Nachtrag: Fehlerteufel: In der Falls Bedingung habe ich statt Helligkeit < 6 Helligkeit = 6 geschrieben. Das ist natürlich nicht korrekt.

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

            @homoran Und was genau macht dann der Baustein "Stop timeout"?

            Asgothian Homoran 2 Replies Last reply Reply Quote 0
            • S
              sZno @Asgothian last edited by

              @asgothian danke damit kann ich was anfangen. Das hilft auf jedenfall. Werde das heute Abend mal testen 👍

              1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @sZno last edited by Asgothian

                @szno sagte in Skript wird 2x ausgelöst:

                @homoran Und was genau macht dann der Baustein "Stop timeout"?

                Dazu muss erst einmal erklärt werden was der “timeout” Baustein macht:

                • es wird eine Funktion erstellt die in eine Liste von später auszuführenden Funktionen eingetragen wird.
                • es wird ein sogenanntes “Handle” zurück gegeben mit dem auf den Eintrag in der Liste zugegriffen werden kann.
                • intern wird dieses Handle in der Variablen “timeout” (oder timeout2/3/4 wenn man mehrere unterschiedliche Timeouts braucht) gespeichert

                Das “stop timeout” nimmt besagtes Handle und entfernt den Eintrag aus der Liste.

                Wenn also der gleiche timeout 2 mal angelegt wird steht die Funktion doppelt in der Liste, das Handle des ersten Eintrags wird beim 2. Erzeugen durch das Handle des 2. Eintrags überschrieben und kann dann nicht mehr gelöscht werden.

                A.

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

                  @szno sagte in Skript wird 2x ausgelöst:

                  Und was genau macht dann der Baustein "Stop timeout"?

                  einen laufenden timeout stoppen.

                  sobald der timeout mehr als einmal gestartet wurde funktioniert es nicht mehr.
                  Deswegen sollte vor jedem timeout immer auch ein stop timeout sein

                  1 Reply Last reply Reply Quote 0
                  • hydrotec
                    hydrotec @sZno last edited by

                    @szno sagte in Skript wird 2x ausgelöst:

                    @hydrotec Der hue motion sensor von dir, was hat der für minimale Schaltzeiten? ...

                    Von true zu false ca. 10 Sekunden.

                    Kleine Gegenfrage, warum benötigst du so kurze Schaltzeiten?
                    Nach dieser Anleitung, wird eigentlich bei diesen BWM eine kürzere Schaltzeit als einer Minute nicht empfohlen.

                    IMPORTANT: occupancy_timeout should not be set to lower than 60 seconds. The reason is this: after detecting a motion the sensor ignores any movements for exactly 60 seconds. In case there are movements after this 60 seconds, a new message (occupancy: true) will be sent and the sensor will go to sleep for another minute, and so on. Therefore, in order to sustain occupancy: true, you need a reasonable window after this 60s sleep to determine continued occupancy. This is expected behaviour (see #270). To work around this, a hardware modification is needed.
                    

                    Aus meiner Erfahrung heraus, würde ich ein Timeout von zwei Minuten nehmen.
                    (Im Büro habe ich sogar zehn Minuten)
                    Zu kurze Schaltzeiten sind nicht unbedingt der Hit.
                    Wenn das Licht ständig an oder aus geht leiden auch deine Lampen darunter.

                    Gruß, Karsten

                    S 1 Reply Last reply Reply Quote 0
                    • K
                      Kusi @sZno last edited by Kusi

                      @szno sagte in Skript wird 2x ausgelöst:

                      zu verriegeln

                      Dafür ist die Variable zu nehmen.

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        sZno @Kusi last edited by

                        @kusi Du meinst den Wert? Hab ich gemacht. War am Handy nur schreibfaul.

                        K 1 Reply Last reply Reply Quote 0
                        • S
                          sZno @hydrotec last edited by sZno

                          @hydrotec Das ist schnell erklärt. Das Licht ist auf dem Weg zum WC. Wenn ich nachts schnell pinkeln gehe braucht das nunmal keine 10 min 😅
                          Und besagte Hardware Modifikation wurde gemacht.

                          hydrotec 1 Reply Last reply Reply Quote 0
                          • K
                            Kusi @sZno last edited by

                            @szno sagte in Skript wird 2x ausgelöst:

                            Du meinst den Wert?

                            Nein, die Überprüfung ob das Licht bereits eingeschaltet wurde. Du nutzt dafür einen eigenen Datenpunkt, welcher aber fürs Schreiben und danach Auslesen seine Zeit braucht.
                            Die Variablle ist bedeutend schneller, habe ich gelernt.

                            1 Reply Last reply Reply Quote 0
                            • hydrotec
                              hydrotec @sZno last edited by

                              @szno sagte in Skript wird 2x ausgelöst:

                              ... Das Licht ist auf dem Weg zum WC. Wenn ich nachts schnell pinkeln gehe braucht das nunmal keine 10 min 😅

                              Komm du erst mal ins Alter, da sind 10 min nichts 😜

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                sZno @hydrotec last edited by

                                @hydrotec ^^ Sau geil. Naja noch dauerts zum Glück nicht so lange.

                                Vielen Dank an alle die hilfreiche Tipps hatten. Da ich selber manchmal frustriert bin, wenn in Foren die Rätsels Lösung nicht gepostet wird, hier noch mein fertiges Skript, dass so einwandfrei funktioniert.

                                Blockly.JPG

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                891
                                Online

                                32.0k
                                Users

                                80.5k
                                Topics

                                1.3m
                                Posts

                                5
                                21
                                541
                                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