Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Blocky] Trigger only one time

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

[Blocky] Trigger only one time

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
11 Beiträge 4 Kommentatoren 3.2k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ldittmarL Offline
    ldittmarL Offline
    ldittmar
    Developer
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • rantanplanR Offline
      rantanplanR Offline
      rantanplan
      schrieb am zuletzt editiert von
      #2

      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

      Rantanplan

      CCU3 / MS Server 2019(VM) / Scripten mit Blockly

      1 Antwort Letzte Antwort
      0
      • ldittmarL Offline
        ldittmarL Offline
        ldittmar
        Developer
        schrieb am zuletzt editiert von
        #3

        @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 Antwort Letzte Antwort
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #4

          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).

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Antwort Letzte Antwort
          0
          • ldittmarL Offline
            ldittmarL Offline
            ldittmar
            Developer
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            • DutchmanD Offline
              DutchmanD Offline
              Dutchman
              Developer Most Active Administrators
              schrieb am zuletzt editiert von
              #6

              @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 Antwort Letzte Antwort
              0
              • rantanplanR Offline
                rantanplanR Offline
                rantanplan
                schrieb am zuletzt editiert von
                #7

                @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

                Rantanplan

                CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                1 Antwort Letzte Antwort
                0
                • rantanplanR Offline
                  rantanplanR Offline
                  rantanplan
                  schrieb am zuletzt editiert von
                  #8

                  @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

                  Rantanplan

                  CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                  1 Antwort Letzte Antwort
                  0
                  • AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    @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.

                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                    1 Antwort Letzte Antwort
                    0
                    • rantanplanR Offline
                      rantanplanR Offline
                      rantanplan
                      schrieb am zuletzt editiert von
                      #10

                      @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

                      Rantanplan

                      CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                      1 Antwort Letzte Antwort
                      0
                      • ldittmarL Offline
                        ldittmarL Offline
                        ldittmar
                        Developer
                        schrieb am zuletzt editiert von
                        #11

                        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 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        279

                        Online

                        32.4k

                        Benutzer

                        81.4k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe