Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Blocky] Trigger only one time

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Blocky] Trigger only one time

    This topic has been deleted. Only users with topic management privileges can see it.
    • ldittmar
      ldittmar Developer last edited by

      Was mir öfters gefehlt hat, ist ein Einmal-Trigger. Zum Beispiel wenn die Alarmanlage scharf ist und jemand kommt wieder nach Hause, soll diese ja nur einmalig getriggert werden oder ab eine bestimmte Uhrzeit soll etwas einmalig eingeschaltet werden, wenn Bewegung erkannt wird. Man würde z.B. dafür in der schedule noch ein Trigger auf dem Bewegungsmelder setzen, der sich dann automatisch unsubscribed, wenn es einmal ausgeführt wurde.

      Natürlich kann man das programmatisch lösen, aber es wäre für die nicht Programmierer unter uns schön es auch mit Blockly machen zu können. Das wäre ja auch gar nicht so schwer, denn man müsste dem Trigger nur in eine Variable packen und noch ein "stop trigger"-Blockly zur Verfügung stellen, der ein unsubscribe ausführt.

      https://trello.com/c/aE8m3bK7/286-block … y-one-time

      386_24-10-_2017_09-46-26.png

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

        Hallo ldittmar

        Ein Trigger überwacht Zustände und reagiert auf deren Änderung.

        Das macht er immer. Sonst wäre es kein Trigger.

        Wenn ein Trigger seine Aktionen nur einmalig ausführen soll setzt man am besten ein Flag.

        Trigger in Trigger machen KEINEN Sinn.
        147_beispiel.png

        Grüße

        1 Reply Last reply Reply Quote 0
        • ldittmar
          ldittmar Developer last edited by

          @rantanplan:

          Trigger in Trigger machen KEINEN Sinn. `
          Hi Ratanplan,

          natürlich machen Trigger im Trigger Sinn! Folgendes Beispiel:

          Trigger: Warte bis Alarmknopf gedrückt wurde

          Starte zweiten Trigger: Wenn Haustür geschlossen wurde, setze Alarm auf scharf

          Jetzt MUSS der zweite Trigger ja beendet werden, wenn ich will ja nicht dass der Alarm immer schaft gestellt wird, wenn die Tür zu geht.

          Noch ein Beispiel:

          Trigger: Nachruhe Knopf wurde gedrückt

          Starte zweiten Trigger: Wenn das Lich im Schlafzimmer ausgeschaltet wird, dann beginnt die Nachtruhe

          Auch hier muss der zweite Trigger gestoppt werden.

          Beispiel im Garten:

          Trigger: Starte Rasensprenger im Garten um 22 Uhr wenn Terassentür zu ist (also niemand sich im Garten befindet). Sollte die Tür offen sein:

          Starte zweiten Trigger: Warte bis die Terrassentür geschlossen wurde und starte dann den Rasensprenger.

          Hier muss ebenfalls den zweiten Trigger beendet werden.

          Grüße,

          ldittmar

          1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer last edited by

            Was ldittmar vorhat ist gar nicht so abwegig. In reinem JS gibt es subscribe und unsubscribe, um Trigger zu aktivieren und (z.B. nach dem Auslösen) wieder zu entfernen.

            So etwas als Reaktion auf einen weiteren Trigger auszuführen (also geschachtelt) ist IMO legitim. Dabei sollte aber darauf geachtet werden, dass der Trigger nicht schon aktiv ist (z.b. bei zweimaligem Auslösen des äußeren Triggers).

            1 Reply Last reply Reply Quote 0
            • ldittmar
              ldittmar Developer last edited by

              Also… hier das Ganze mal als JS mit 3 Triggern: (Kurzfassung vom dem was ich zuhause nutze)

              var setAlarmOn, setAlarmOff;
              
              on({id: "amazon-dash.0.ac-63-be-09-fc-15.pressed"/*Alarmanlage einschalten*/, change: "ne"}, function (obj){
                  console.log('Alarmanlage Knopf gedrückt!');
                  setAlarmOn = on({id: "hm-rpc.0.MEQ0031988.1.STATE"/*EG_Haustuer_Sensor.STATE*/, change: "ne"}, function (obj2){
                      if (obj2.state.val == false) {
                          unsubscribe(setAlarmOn);
                          console.log('Alaranlage scharf geschaltet.');
                          setTimeout(function () {
                              setAlarmOff = on({id: "hm-rpc.0.MEQ0031988.1.STATE"/*EG_Haustuer_Sensor.STATE*/, change: "ne"}, 
                              function (obj3){
                                  if (obj3.state.val == false) {
                                      console.log('Alarmanlage aus');
                                      unsubscribe(setAlarmOff);
                                  }
                              });
                          }, 3000);
                      }
                  });
              });
              
              
              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                @AlCalzone:

                Was ldittmar vorhat ist gar nicht so abwegig. In reinem JS gibt es subscribe und unsubscribe, um Trigger zu aktivieren und (z.B. nach dem Auslösen) wieder zu entfernen.

                So etwas als Reaktion auf einen weiteren Trigger auszuführen (also geschachtelt) ist IMO legitim. Dabei sollte aber darauf geachtet werden, dass der Trigger nicht schon aktiv ist (z.b. bei zweimaligem Auslösen des äußeren Triggers). `

                was waere der unterschied zwischen dieser loesung und einer if abfrage ? Trigger immer aber ausfuerhung nur wen IF (value check) = true ?

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

                  @AlCalzone:

                  Dabei sollte aber darauf geachtet werden, dass der Trigger nicht schon aktiv ist (z.b. bei zweimaligem Auslösen des äußeren Triggers). `
                  Deshalb bleibe ich bei meiner Aussage. 😉

                  Viel zu umständlich, gefährlich und unübersichtlich. Fehlersuche ohne einen richtigen Debugger so gut wie unmöglich.

                  Grüße

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

                    @Dutchman:

                    was waere der unterschied zwischen dieser loesung und einer if abfrage ? Trigger immer aber ausfuerhung nur wen IF (value check) = true ? `

                    Danke Dutchman.

                    Mein reden.

                    Grüße

                    1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer last edited by

                      @Dutchman:

                      was waere der unterschied zwischen dieser loesung und einer if abfrage ? Trigger immer aber ausfuerhung nur wen IF (value check) = true ? `
                      Ohne bewerten zu wollen:

                      Die Logik wird anders abgebildet. Bei komplexeren Logiken kann es übersichtlicher sein, wenn zusammen bleibt was zusammen gehört.

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

                        @AlCalzone:

                        Ohne bewerten zu wollen:

                        Die Logik wird anders abgebildet. Bei komplexeren Logiken kann es übersichtlicher sein, wenn zusammen bleibt was zusammen gehört. `
                        Da bin ich bei Dir!

                        Muss man aber nicht über aktivierte/nicht aktivierte Trigger lösen 😉

                        Ich bin bei dem Thema raus.

                        Liebe Grüße

                        1 Reply Last reply Reply Quote 0
                        • ldittmar
                          ldittmar Developer last edited by

                          Mein Gedanke ist: warum soll ein Trigger 24 Stunden aktiv sein, wenn er z.B. nur einmal am Tag gebraucht wird? Ich halte mein Speicher gerne sauber. 😉

                          Grüße,

                          ldittmar

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          816
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          3211
                          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