Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] [Blockly]Lampen aus, wenn 15 Minuten keine Bewegung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

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

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

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

      VG

      1 Reply Last reply Reply Quote 0
      • M
        Modjo last edited by

        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 Reply Quote 0
        • M
          Modjo last edited by

          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 Reply Quote 0
          • M
            Modjo last edited by

            Oder ist das richtiger?
            4811_2.jpg

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

              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.

              1 Reply Last reply Reply Quote 0
              • M
                Modjo last edited by

                @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 Reply Quote 0
                • AlCalzone
                  AlCalzone Developer last edited by

                  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.

                  1 Reply Last reply Reply Quote 0
                  • M
                    Modjo last edited by

                    @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 Reply Quote 0
                    • M
                      Modjo last edited by

                      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 Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer last edited by

                        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

                        1 Reply Last reply Reply Quote 0
                        • M
                          Modjo last edited by

                          Hi,

                          der letzte von mir gepostete Ansatz funktioniert.

                          VG

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

                            Prima, dann markiere das Thema im Titel des 1. Beitrags bitte als gelöst.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            811
                            Online

                            31.9k
                            Users

                            80.2k
                            Topics

                            1.3m
                            Posts

                            4
                            24
                            3688
                            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