Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] [Blockly]Lampen aus, wenn 15 Minuten keine Bewegung

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    780

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

[gelöst] [Blockly]Lampen aus, wenn 15 Minuten keine Bewegung

Scheduled Pinned Locked Moved Skripten / Logik
24 Posts 4 Posters 4.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Arnulf
    wrote on last edited by
    #3

    Leider kann ich vom Büro aus nicht auf mein Blockly zugreifen. Aber ich habe Folgendes gemacht:

    Wenn Der Befehl "Lampen an" (für alle Lampen) oder "Spiegel an" ( nur diese eine Lampe) kommt, wird ein Flag auf true gesetzt.

    Wenn der Bewegungsmelder nun eine Bewegung feststellt, wir ein Timer gesetzt und die Lampe an geschaltet.

    Wenn der Bewegungsmelder innerhalb des Timerzeitraums wieder feuert, weird der Timer einfach neu gesetzt.

    Läuft der Timer aus und das Lampenflag wurde vorher oder zwischenzeitlich nicht auf true gesetzt, geht die Lampe aus.

    Wird die Lampe explizit mit Kommando aus geschaltet, dann setze ich das Flag auf false.

    Damit geht die Spiegellampe nicht aus, wenn ich die Lampe explit per Kommando an geschaltet hatte.

    1 Reply Last reply
    0
    • AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      wrote on last edited by
      #4

      Das dürfte folgendermaßen gehen

      Trigger...
      | Setze State "abc" auf true
      | Setze State "abc" auf false, Zeitverzögert 15 Minuten, löschen wenn läuft
      | (Beide Blöcke wiederholen je State)
      |__
      
      

      Als Resultat werden die Lampen bei jedem Trigger angeschaltet und nach 15 Minuten wieder ausgeschaltet. "löschen wenn läuft" sorgt dafür, dass die Verzögerung jedes Mal verlängert wird, wenn ein Trigger kommt.

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

      1 Reply Last reply
      0
      • A Offline
        A Offline
        Arnulf
        wrote on last edited by
        #5

        oh, sorry.

        Hatte das mit dem Spiegel gar nicht mit Blockly gemacht, sondern mit node red. Wenn du daran Interesse hast, sag Bescheid

        1 Reply Last reply
        0
        • M Offline
          M Offline
          Modjo
          wrote on last edited by
          #6

          Hi Zusammen,

          vielen Dank für eure Antworten.

          Ich stehe gerade total auf dem Schlauch. Kann mir einer anhand meines / eines Blocklys zeigen, wie ich das mit Timer / Zeitverzögerung mit Wiederholung umsetze?

          Danke & Gruß

          Modjo

          1 Reply Last reply
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            wrote on last edited by
            #7

            Der Block ist in der Doku zwar auf englisch, sieht aber prinzipiell so aus:

            https://github.com/ioBroker/ioBroker.ja … uere-state
            1097_unbenannt.png

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

            1 Reply Last reply
            0
            • M Offline
              M Offline
              Modjo
              wrote on last edited by
              #8

              Hi,

              da ich das mit dem Timeout nicht so ganz gerafft habe, habe ich es nun wie folgt gemacht (möglicherweise viel zu kompliziert :lol: )

              var Zeit;
              
              on({id: "hue.0.Anwesenheit_WZ_BM"/*Anwesenheit_WZ_BM*/, change: "ne"}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                if (getState("javascript.0.Astro_Nacht").val == true) {
                  Zeit = true;
                  while (Zeit) {
                    setState("broadlink.0.learnedSignals.CODE_b20734000c23230c230c230c0c23230c0c23230c0c23230c240c230c0d23230c0c230c230c230c230c230c23230c230c0c230c230c00016400000000"/*Wohnzimmer Kugel ein*/, true);
                    setState("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, true);
                    setState("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, true);
                    if ((new Date().getTime()) - getState("hue.0.Anwesenheit_WZ_BM").lc >= 900000) {
                      Zeit = false;
                    } else {
                      Zeit = true;
                    }
                  }
                  setState("broadlink.0.learnedSignals.CODE_b2001e01220c0b220c220c220c220c220c220b220c22230b230b0c0001630c22220c220b230b0c22230b0c22230b0b23220c220c220b0c22230b0c220c220b230b220c220c220c220c22220c220c0b0001630c22230b220c220c0b23220b0c22230b0c22230b220c220c0b23220b0c220c220c220c220b220c220c220c22230b220c0b0001630c22230b230b220b0c22230b0c22230b0c22220c220c220c0b22230b0c220c220b230b230b220c220c220b23220c220b0c0001630b23220c220b230b0c22230b0b23220b0c22230b230b230b0c22220c0b220c220c220c220b230b230b220c22230b230b0b0001630c22220c220c220c0b22230b0c22230b0b22230b0b22220c0b22230b0c210c220b220c220b220c220b220c220b220c220b0005dc00000000000000000000"/*Wohnzimmer Kugel aus*/, true);
                  setState("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, false);
                  setState("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, false);
                }
              });
              

              Mal sehen, ob das klappt.

              VG

              Modjo
              4811_ambilight.jpg

              1 Reply Last reply
              0
              • K Offline
                K Offline
                Kueppert
                wrote on last edited by
                #9

                Ho Modjo,

                okay, ist vielleicht auch niht so einfachzu verstehen ohne Blockly Beispiel…kenne ich von mir ^^ Hab dir daher mal mein Blockly angehangen:
                2700_k_che_15min.png

                Viele Grüße, Thorsten

                UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                1 Reply Last reply
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  wrote on last edited by
                  #10

                  @Modjo:

                  da ich das mit dem Timeout nicht so ganz gerafft habe, habe ich es nun wie folgt gemacht (möglicherweise viel zu kompliziert :lol: ) `

                  Mangels Blockly habe ich mich mal mit Powerpoint an deinem Skript versucht:
                  1097_bild1.png

                  Tödlich ist ernst gemeint. So eine Schleife kann dir dein ganzes System aufhängen.

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

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Modjo
                    wrote on last edited by
                    #11

                    Hallo an alle Helfenden,

                    vielen Dank für eure Lösungsansätze und Vorschläge.

                    @Kueppert: Dein Vorschlag hatte ich zunächst umgesetzt, welcher auch funktioniert-> Vielen Dank!

                    @AlCalzone: Vielen Dank für deine "Künstlerische Anpassung". Tatsächlich hat mir mein Script mein RPI3 zum Absturz gebracht.

                    Nun habe ich das Script so umgebaut und es scheint zu funktionieren, ich werde es jetzt mal ausgiebig testen.
                    4811_script.jpg

                    1 Reply Last reply
                    0
                    • AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      wrote on last edited by
                      #12

                      @Modjo:

                      Tatsächlich hat mir mein Script mein RPI3 zum Absturz gebracht. `

                      Zur Erklärung: Die Befehle zum Setzen von States dauern nur wenige Mikro bis Millisekunden - wie eigentlich fast jeder Befehl. In deiner "solange"-Schleife erzeugst du daher im Millisekundentakt neue Timeouts und Schreibbefehle, solange bis der Host sich aufhängt. Oder bis die 15 Minuten um sind, aber das erstere wird deutlich schneller eintreten.

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

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        Modjo
                        wrote on last edited by
                        #13

                        Vielen Dank noch einmal an alle Beteiligten. Das oben geschriebene Script funktioniert.

                        VG

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          Modjo
                          wrote on last edited by
                          #14

                          Hallo zusammen,

                          eine Frage habe ich noch.

                          Wie baue ich es ein, dass der 15 Minuten Timeout nicht zwischen Golden-Hour Anfang & 23:00 Uhr läuft?

                          Hintergrund ist der: Wir liegen abends teilweise auf der Couch und da erkennt der Hue Motion Sensor minimalste Bewegungen nicht, sodass er meist nach 15 Minuten ausgeht, trotz dass wir auf der Couch sitzen.

                          Danke & Gruß

                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            Modjo
                            wrote on last edited by
                            #15

                            Ich hab es nun einen anderen Ansatz. Ich möchte, dass bei Bewegung der "Timer" von 15 Minuten herunterzählt und bei erneutem Trigger dann aus geht. Das funktioniert ja schon mit dem oberen Blockly. Nun möchte ich zusätzlich einbauen, dass wenn der Receiver ("Power") an ist, dass er aus dem 15 Minuten Timer heraus geht und die Lampen an bleiben. Wenn der Reveiver wieder aus ist, dann halt wieder in den 15 Minuten Timer.

                            Der Grund hierfür ist der Selbe, wie im vorherigen Post: Wenn ich TV & Reveiver an habe, liege ich auf der Couch und bewege mich wenig, sodass der Motion Sensor nicht auslöst. Licht soll aber dann dennoch anbleiben.

                            Ich habe es nun folgendermaßen probiert, was aber nicht funktioniert. Selbst wenn ich den Receiver anhabe, geht er nach 15 Minuten aus (1.jpg).

                            on({id: "hue.0.Anwesenheit_WZ_BM"/*Anwesenheit_WZ_BM*/, val: true}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              if (getState("javascript.0.Astro_Nacht").val == true) {
                                setState("broadlink.0.learnedSignals.CODE_b20734000c23230c230c230c0c23230c0c23230c0c23230c240c230c0d23230c0c230c230c230c230c230c23230c230c0c230c230c00016400000000"/*Wohnzimmer Kugel ein*/, true);
                                setState("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, true);
                                setState("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, true);
                                if (getState("yamaha.0.power").val == true) {
                                  setState("broadlink.0.learnedSignals.CODE_b20734000c23230c230c230c0c23230c0c23230c0c23230c240c230c0d23230c0c230c230c230c230c230c23230c230c0c230c230c00016400000000"/*Wohnzimmer Kugel ein*/, true);
                                  setState("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, true);
                                  setState("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, true);
                                }
                                setStateDelayed("broadlink.0.learnedSignals.CODE_b2001e01220c0b220c220c220c220c220c220b220c22230b230b0c0001630c22220c220b230b0c22230b0c22230b0b23220c220c220b0c22230b0c220c220b230b220c220c220c220c22220c220c0b0001630c22230b220c220c0b23220b0c22230b0c22230b220c220c0b23220b0c220c220c220c220b220c220c220c22230b220c0b0001630c22230b230b220b0c22230b0c22230b0c22220c220c220c0b22230b0c220c220b230b230b220c220c220b23220c220b0c0001630b23220c220b230b0c22230b0b23220b0c22230b230b230b0c22220c0b220c220c220c220b230b230b220c22230b230b0b0001630c22220c220c220c0b22230b0c22230b0b22230b0b22220c0b22230b0c210c220b220c220b220c220b220c220b220c220b0005dc00000000000000000000"/*Wohnzimmer Kugel aus*/, true, 900000, true);
                                setStateDelayed("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, false, 900000, true);
                                setStateDelayed("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, false, 900000, true);
                              }
                            });
                            

                            Vielleicht könnt ihr mir hier meinen Fehler aufzeigen!?

                            Vielen Dank & Gruß
                            4811_1.jpg

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              Modjo
                              wrote on last edited by
                              #16

                              Oder ist das richtiger?
                              4811_2.jpg

                              1 Reply Last reply
                              0
                              • AlCalzoneA Offline
                                AlCalzoneA Offline
                                AlCalzone
                                Developer
                                wrote on last edited by
                                #17

                                So ist es richtiger, aber noch nicht komplett. Die ersten 3 Befehle oberhalb des markierten Blocks sind jetzt redundant und können entfallen.

                                Das Entfernen des Timers beim Fernsehen wirst du so leider nicht hinbekommen, jedenfalls ist mir kein Weg bekannt.

                                Stattdessen wirst du dich selbst um das Starten und Löschen des Timers kümmern müssen. Ich kann dir jetzt leider kein Beispiel geben, vielleicht kommt ja wer anders dazu.

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

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  Modjo
                                  wrote on last edited by
                                  #18

                                  @AlCalzone:

                                  So ist es richtiger, aber noch nicht komplett. Die ersten 3 Befehle oberhalb des markierten Blocks sind jetzt redundant und können entfallen.

                                  Das Entfernen des Timers beim Fernsehen wirst du so leider nicht hinbekommen, jedenfalls ist mir kein Weg bekannt.

                                  Stattdessen wirst du dich selbst um das Starten und Löschen des Timers kümmern müssen. Ich kann dir jetzt leider kein Beispiel geben, vielleicht kommt ja wer anders dazu. `

                                  Danke für deine Antwort.

                                  Ich vermute, dass diese nicht "redundant" sind, da die Lampen ja auch angehen sollen, wenn ich kein TV schaue und der Receiver Power = false hat.

                                  VG

                                  1 Reply Last reply
                                  0
                                  • AlCalzoneA Offline
                                    AlCalzoneA Offline
                                    AlCalzone
                                    Developer
                                    wrote on last edited by
                                    #19

                                    Dann ist der erste Abschnitt deiner Falls-Bedingung redundant.

                                    ... drei An-Befehle ...
                                    Falls Power ist unwahr
                                    | ...drei verzögerte Aus-Befehle
                                    |__
                                    
                                    

                                    Aber wie gesagt behebt das dein Problem nicht, dass ein bereits laufender Timer am besten gestoppt werden sollte, wenn der Fernseher läuft.

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

                                    1 Reply Last reply
                                    0
                                    • M Offline
                                      M Offline
                                      Modjo
                                      wrote on last edited by
                                      #20

                                      @AlCalzone:

                                      Dann ist der erste Abschnitt deiner Falls-Bedingung redundant.

                                      ... drei An-Befehle ...
                                      Falls Power ist unwahr
                                      | ...drei verzögerte Aus-Befehle
                                      |__
                                      
                                      

                                      Aber wie gesagt behebt das dein Problem nicht, dass ein bereits laufender Timer am besten gestoppt werden sollte, wenn der Fernseher läuft. `

                                      Da hast du Recht. Dafür fällt mir derzeit auch keine Lösung ein.

                                      Hat noch Jemand eine Idee?

                                      Derzeitiger Stand:

                                      on({id: "hue.0.Anwesenheit_WZ_BM"/*Anwesenheit_WZ_BM*/, val: true}, function (obj) {
                                        var value = obj.state.val;
                                        var oldValue = obj.oldState.val;
                                        if (getState("javascript.0.Astro_Nacht").val == true) {
                                          setState("broadlink.0.learnedSignals.CODE_b20734000c23230c230c230c0c23230c0c23230c0c23230c240c230c0d23230c0c230c230c230c230c230c23230c230c0c230c230c00016400000000"/*Wohnzimmer Kugel ein*/, true);
                                          setState("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, true);
                                          setState("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, true);
                                          if (getState("yamaha.0.power").val == false) {
                                            setStateDelayed("broadlink.0.learnedSignals.CODE_b2001e01220c0b220c220c220c220c220c220b220c22230b230b0c0001630c22220c220b230b0c22230b0c22230b0b23220c220c220b0c22230b0c220c220b230b220c220c220c220c22220c220c0b0001630c22230b220c220c0b23220b0c22230b0c22230b220c220c0b23220b0c220c220c220c220b220c220c220c22230b220c0b0001630c22230b230b220b0c22230b0c22230b0c22220c220c220c0b22230b0c220c220b230b230b220c220c220b23220c220b0c0001630b23220c220b230b0c22230b0b23220b0c22230b230b230b0c22220c0b220c220c220c220b230b230b220c22230b230b0b0001630c22220c220c220c0b22230b0c22230b0b22230b0b22220c0b22230b0c210c220b220c220b220c220b220c220b220c220b0005dc00000000000000000000"/*Wohnzimmer Kugel aus*/, true, 900000, true);
                                            setStateDelayed("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, false, 900000, true);
                                            setStateDelayed("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, false, 900000, true);
                                          }
                                        }
                                      });
                                      

                                      4811_3.jpg

                                      1 Reply Last reply
                                      0
                                      • M Offline
                                        M Offline
                                        Modjo
                                        wrote on last edited by
                                        #21

                                        Vielleicht ist das eine Lösung?

                                        var timeout;
                                        
                                        on({id: "hue.0.Anwesenheit_WZ_BM"/*Anwesenheit_WZ_BM*/, val: true}, function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
                                          if (getState("javascript.0.Astro_Nacht").val == true) {
                                            setState("broadlink.0.learnedSignals.CODE_b20734000c23230c230c230c0c23230c0c23230c0c23230c240c230c0d23230c0c230c230c230c230c230c23230c230c0c230c230c00016400000000"/*Wohnzimmer Kugel ein*/, true);
                                            setState("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, true);
                                            setState("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, true);
                                            if (getState("yamaha.0.power").val == false) {
                                              timeout = setTimeout(function () {
                                                setState("broadlink.0.learnedSignals.CODE_b2001e01220c0b220c220c220c220c220c220b220c22230b230b0c0001630c22220c220b230b0c22230b0c22230b0b23220c220c220b0c22230b0c220c220b230b220c220c220c220c22220c220c0b0001630c22230b220c220c0b23220b0c22230b0c22230b220c220c0b23220b0c220c220c220c220b220c220c220c22230b220c0b0001630c22230b230b220b0c22230b0c22230b0c22220c220c220c0b22230b0c220c220b230b230b220c220c220b23220c220b0c0001630b23220c220b230b0c22230b0b23220b0c22230b230b230b0c22220c0b220c220c220c220b230b230b220c22230b230b0b0001630c22220c220c220c0b22230b0c22230b0b22230b0b22220c0b22230b0c210c220b220c220b220c220b220c220b220c220b0005dc00000000000000000000"/*Wohnzimmer Kugel aus*/, true);
                                                setState("hue.0.Bridge.Wohnzimmer.on"/*Bridge.Wohnzimmer.on*/, false);
                                                setState("hue.0.Bridge.Küche.on"/*Bridge.Küche.on*/, false);
                                              }, 900000);
                                            }
                                          }
                                        });
                                        

                                        Müsste ich später mal Zuhause testen.

                                        VG
                                        4811_4.jpg

                                        1 Reply Last reply
                                        0
                                        • AlCalzoneA Offline
                                          AlCalzoneA Offline
                                          AlCalzone
                                          Developer
                                          wrote on last edited by
                                          #22

                                          Denke dir die Logik mal ganz genau durch:

                                          Unter welcher Bedingung muss ein 15-Minuten Timer gesetzt werden?

                                          Unter welcher Bedingung muss er erneuert werden? D.h. löschen und wieder setzen.

                                          Unter welcher Bedingung muss er einfach nur gelöscht werden?

                                          Dann kannst du dir einen groben Ablauf erstellen wie der Code im Trigger strukturiert werden muss.

                                          Hier findest du ein Beispiel wie man Timer setzt und löscht: https://github.com/ioBroker/ioBroker.ja … -execution

                                          Der verzögert auszuführende Code (d.h. ausschalten) muss in dem Timer-Block gepackt werden.


                                          Edit: Hier wurde was ähnliches gemacht: viewtopic.php?p=168045#p168045

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

                                          1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          485

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe