Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Mehrfach Triggern verhindern? (Ohne Verlust)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Mehrfach Triggern verhindern? (Ohne Verlust)

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

      @paul53 said in Mehrfach Triggern verhindern? (Ohne Verlust):

      @newpicsel sagte: Funktioniert leider nicht

      Du setzt den Trigger-Datenpunkt auf wahr, auch dann, wenn er schon wahr enthält. Ändere den Trigger auf "ist kleiner als letztes".

      Der würde dann bei jeder anderen ID auslösen nur nicht bei der gleichen? 🤔
      Interessant!
      Allerdings wie verhält es sich dann, wenn zwischenzeitlich kein anderer DPs den trigger auslöst? Unwahrscheinlich aber nicht unmöglich muss ich zumindest annehmen 😅

      @newpicsel sagte in Mehrfach Triggern verhindern? (Ohne Verlust):

      Ein Timeout

      Es bräuchte zu jedem Datenpunkt einen eigenen Timeout. Da aber die Datenpunkte nicht bekannt sind (RegExp), steht es schlecht um die Umsetzung.

      Deshalb die Überlegung den timeout über eine Funktion zu erstellen, bei der ich die variable frei setzen kann und hier die ObjektID in den Namen der variable einfließen lassen kann… 🤔
      (Nur eine undurchdachte Überlegung)

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

        @homoran

        Richtig, fixe timeout für jeden DP fällt auch raus, da diese unbekannt sind 🙈 ist etwas komplexer die Geschichte dahinter…

        Aber leider kann es durchaus vorkommen, dass (allerdings nicht relevant unter 3sek) der selbe DP den trigger auslösen könnte.

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

          @newpicsel sagte in Mehrfach Triggern verhindern? (Ohne Verlust):

          Aber leider kann es durchaus vorkommen, dass (allerdings nicht relevant unter 3sek) der selbe DP den trigger auslösen könnte

          können kann er!
          sollen aber wohl nicht.

          aber nach 3 Sekunden ohne anderen triggernden Datenpunkt, darf er wieder?

          Das muss dann in der Logik abgefangen werden.
          im Trigger ist das nicht möglich

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

            @newpicsel sagte: Trigger werden ab und an mal mehrfach ausgelöst…

            Was sind das für Datenpunkte, die sich so verhalten (kurz aufeinander den Wert ändern)?

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

              @paul53 said in Mehrfach Triggern verhindern? (Ohne Verlust):

              Was sind das für Datenpunkte, die sich so verhalten (kurz aufeinander den Wert ändern)?

              Das sind soll wert DP einer Heizung, diese werden hauptsächlich aus der API aktualisiert, allerdings kann hier jeder seinen Intervall selber einstellen und dann kommen noch manuelle Änderungen aus iobroker hinzu sowie Änderungen von Fenstersensoren.

              Ich sag mal so, dass funktioniert schon so, nur ist es halt irgendwie auch nicht schön!
              In der Regel erfolgen Änderungen nicht parallel aber ich kann nicht von der Regel ausgehen, es kann durch eine Intervall Aktualisierung durchaus auch vorkommen, dass sich Aktualisierungen überschneiden, auch gerade weil einige Änderungen eine Aktualisierung beinhalten was im Zweifel wenn es mal hart auf hart kommt, 2-3 sehr kurze Aktualisierungen bedeuten könnte! Ich versuche es natürlich zu unterbinden aber ich rechne eher mit der Ausnahme als mit der Regel…

              B 1 Reply Last reply Reply Quote 0
              • B
                Blockmove @Newpicsel last edited by

                @newpicsel

                Eine Möglichkeit, die ich bei sowas nutze, ist die zyklische Abfrage von Signalen. Also z.B. Temperaturen oder Energieverbrauch im 30s Takt. Macht gegenseitige Abhängigkeiten, Regler, komplexe Logik usw. einfacher.
                Ist in der Prozesstechnik weit verbreitet.

                paul53 Homoran 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @Blockmove last edited by

                  @blockmove sagte: zyklische Abfrage von Signalen.

                  Wie wendet man dabei den RegExp an?

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

                    @blockmove sagte in Mehrfach Triggern verhindern? (Ohne Verlust):

                    Ist in der Prozesstechnik weit verbreitet.

                    da wird auch seltenst eventbasiert mit js gearbeitet.
                    Eine SPS tickt da anders

                    B 1 Reply Last reply Reply Quote 1
                    • B
                      Blockmove @Homoran last edited by

                      @homoran said in Mehrfach Triggern verhindern? (Ohne Verlust):

                      @blockmove sagte in Mehrfach Triggern verhindern? (Ohne Verlust):

                      Ist in der Prozesstechnik weit verbreitet.

                      da wird auch seltenst eventbasiert mit js gearbeitet.
                      Eine SPS tickt da anders

                      Naja auch eine SPS hat Events (Hardware, Zeit, und im Prinzip auch Flanken).
                      Das schöne an ioBroker ist ja, dass ich auch im SPS-Stil Aufgaben lösen kann.
                      Für jede Aufgabe eben das richtige Werkzeug nehmen

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

                        @paul53 said in Mehrfach Triggern verhindern? (Ohne Verlust):

                        @blockmove sagte: zyklische Abfrage von Signalen.

                        Wie wendet man dabei den RegExp an?

                        Innerhalb des Intervalls verknüpft man ja anhand der Logik die Werte von getStateAsync und schreibt dann mit setStateAync die Ergebnisse. Wenn das ganze mehrfach identisch passieren sool (z.B. mehrere Räume) dann ist es von Vorteil, wenn die entsprechenden Datenpunkte VOR dem Trigger bekannt sind und z.B. in Arrays oder Objekten vorhanden sind. Diese kann man dann innerhalb des Triggers z.B. mit each oder forEach abarbeiten. Das spart Rechenzeit innerhalb des Intervalls.
                        Die Regular Expressions verwende ich eigentlich nie. Du musst halt schauen, wie du sie auf z.B. GetObject zum Ermitteln der Datenpunkte anwenden kannst.
                        Natürlich ist das komplexer als ein einfaches:

                        on({id: new RegExp("0_userdata.0.Devices\.[a-zA-Z0-9]"), change:"ne"}, function (obj) {
                         tu irgendwas
                        });
                        

                        Vorteil ist, dass ich mehr Kontrolle über den Code-Ablauf habe und Eventkaskaden bei gegenseitiger Beeinflussung von Datenpunkten vermeide. Eben weil die Datenpunkte gar keine Events auslösen.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        844
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        blockly
                        5
                        25
                        1680
                        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