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. JavaScript
  5. Skript zur Steuerung Aussenlicht mit Bewegungsmelder und Tastern

NEWS

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

  • 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

Skript zur Steuerung Aussenlicht mit Bewegungsmelder und Tastern

Scheduled Pinned Locked Moved JavaScript
javascript
27 Posts 3 Posters 1.7k Views 1 Watching
  • 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.
  • M Offline
    M Offline
    mguenther
    wrote on last edited by
    #9

    danke dir - ich probiere es heute abend mal aus

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mguenther
      wrote on last edited by
      #10

      funktioniert - hatte ein paar Kleinigkeiten noch korrigieren müssen (fehlernder Buchstabe oder "." statt ",", aber habs hinbekommen, was mir jetzt noch fehlt, ist der Wandtaster. Müsste ja vom Vorgehen her analog dem virtuellen Taster sein. Ich würde noch ne Variable beim Auslösen der Bewegung einfügen und entsprechend diese Zeile ändern:

         if (!taster_virtu && dp,state.val) {
      

      in

         if (!taster && !taster_virtu && dp,state.val) {
      

      es wird nur komplex für mich bei "wenn Taster1, dann Änderung bei Licht1" und "wenn Taster2, dann Änderung bei Licht2". Mal sehen, was ich hinbekomme... :)

      paul53P 1 Reply Last reply
      0
      • M mguenther

        funktioniert - hatte ein paar Kleinigkeiten noch korrigieren müssen (fehlernder Buchstabe oder "." statt ",", aber habs hinbekommen, was mir jetzt noch fehlt, ist der Wandtaster. Müsste ja vom Vorgehen her analog dem virtuellen Taster sein. Ich würde noch ne Variable beim Auslösen der Bewegung einfügen und entsprechend diese Zeile ändern:

           if (!taster_virtu && dp,state.val) {
        

        in

           if (!taster && !taster_virtu && dp,state.val) {
        

        es wird nur komplex für mich bei "wenn Taster1, dann Änderung bei Licht1" und "wenn Taster2, dann Änderung bei Licht2". Mal sehen, was ich hinbekomme... :)

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #11

        @mguenther sagte:

        was mir jetzt noch fehlt, ist der Wandtaster.

        Passt mein Vorschlag für einen von beiden Tastern nicht ?
        Das noch einmal mit licht2, idLicht2, idTaster2_1, idTaster2_2, timer2

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mguenther
          wrote on last edited by
          #12

          probiere ich noch aus, noch nicht eingebunden

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mguenther
            wrote on last edited by
            #13
            on(idLicht1) function(dp) {
               licht1 = dp.state.val;
            });
            

            das funktioniert nicht so ganz. ich würde es in Zeile 2 schreiben - probiere ich aber morgen aus.

            on({id: [idTaster1_1, idTaster1_2]}, function() {
            licht1 = getState....;
               if(timer1) { // Timer läuft --> Licht bleibt an
                  clearTimeout(timer1);
                  timer1 = null;
               } else setState(idLicht1, !licht1); // Toggle
            });
            

            Danke

            paul53P 2 Replies Last reply
            0
            • M mguenther
              on(idLicht1) function(dp) {
                 licht1 = dp.state.val;
              });
              

              das funktioniert nicht so ganz. ich würde es in Zeile 2 schreiben - probiere ich aber morgen aus.

              on({id: [idTaster1_1, idTaster1_2]}, function() {
              licht1 = getState....;
                 if(timer1) { // Timer läuft --> Licht bleibt an
                    clearTimeout(timer1);
                    timer1 = null;
                 } else setState(idLicht1, !licht1); // Toggle
              });
              

              Danke

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #14

              @mguenther sagte

              das funktioniert nicht so ganz

              Sorry, Tippfehler. Die schließende Klammer hinter idLicht1 muss natürlich ein Komma sein.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

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

                hatte ich schon geändert, ich probiere es morgen nochmal aus - eben hats nicht geklappt...

                1 Reply Last reply
                0
                • M mguenther
                  on(idLicht1) function(dp) {
                     licht1 = dp.state.val;
                  });
                  

                  das funktioniert nicht so ganz. ich würde es in Zeile 2 schreiben - probiere ich aber morgen aus.

                  on({id: [idTaster1_1, idTaster1_2]}, function() {
                  licht1 = getState....;
                     if(timer1) { // Timer läuft --> Licht bleibt an
                        clearTimeout(timer1);
                        timer1 = null;
                     } else setState(idLicht1, !licht1); // Toggle
                  });
                  

                  Danke

                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #16

                  @mguenther sagte in Skript zur Steuerung Aussenlicht mit Bewegungsmelder und Tastern:

                  licht1 = getState....;

                  Zeile 2 ist unnötig, da licht1 eine globale Variable ist, die durch den Trigger auf idLicht1 aktualisiert wird.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    mguenther
                    wrote on last edited by
                    #17

                    bekomme es nicht hin

                    //Lichtschaltung auf Westseite - Bedingung: Elevation <=Grenzwert oder Helligkeit <Grenzwert
                    //Möglichkeit 1: Bewegungsmelder 1 und/oder 2 für die Dauer von 5min
                    //Möglichkeit 2: virtueller Taster an/aus - hat Vorang gegenüber Bewegungsmelder
                    //Möglichkeit 3: Wandtaster an/aus - hat Vorang gegenüber Bewegungsmelder und virtueller Taster
                    const idBewegung1 = 'javascript.0.Bewegungsmelder.Bewegung_WestSued'/*Bewegung WestSued*/;
                    const idBewegung2 = 'javascript.0.Bewegungsmelder.Bewegung_WestNord'/*Bewegung WestNord*/;
                    const idLicht1 = 'hm-rpc.4.MEQ0064673.14.STATE'/*12 7 Rest:14 STATE*/;
                    const idLicht2 = 'hm-rpc.4.MEQ0064673.13.STATE'/*12 7 Rest:13 STATE*/;
                    const idTaster1_1 = 'hm-rpc.4.MEQ0064673.8.PRESS_LONG'/*12 7 Rest:08 PRESS LONG*/;
                    const idTaster1_2 = 'hm-rpc.4.MEQ0064673.8.PRESS_SHORT'/*12 7 Rest:08 PRESS SHORT*/;
                    const idTaster2_1 = 'hm-rpc.4.MEQ0064673.7.PRESS_LONG'/*12 7 Rest:07 PRESS LONG*/;
                    const idTaster2_2 = 'hm-rpc.4.MEQ0064673.7.PRESS_SHORT'/*12 7 Rest:07 PRESS SHORT*/;
                    const idTaster_virtu = 'javascript.0.Bewegungsmelder.Bewegung_West_virtu_Taster'/*Bewegung West virtu Taster*/;
                    const idHelligkeit = 'hm-rpc.0.NEQ1544423.1.BRIGHTNESS'/*Aussenlicht BW Nord:1 BRIGHTNESS*/;
                    const idElevation = 'javascript.0.Sonne.Elevation'/*Elevation*/;
                    const idGrenzwertHelligkeit = 'javascript.0.Bewegungsmelder.Grenzwert_Helligkeit'/*Grenzwert Helligkeit*/;
                    const idGrenzwertElevation = 'javascript.0.Bewegungsmelder.Grenzwert_Elevation'/*Grenzwert Elevation*/;
                    const idTasterWestSued = 'javascript.0.Bewegungsmelder.Bewegung_WestSued_Taster'/*Bewegung WestSued Taster*/;
                    const idTasterWestNord = 'javascript.0.Bewegungsmelder.Bewegung_WestNord_Taster'/*Bewegung WestNord Taster*/;
                    
                    var bewegung1 = getState(idBewegung1).val;
                    var bewegung2 = getState(idBewegung2).val;
                    var licht1 = getState(idLicht1).val;
                    var licht2 = getState(idLicht2).val;
                    var taster1_1 = getState(idTaster1_1).val;
                    var taster1_2 = getState(idTaster1_2).val;
                    var taster2_1 = getState(idTaster2_1).val;
                    var taster2_2 = getState(idTaster2_2).val;
                    var tasterWestSued= getState(idTasterWestSued).val;
                    var tasterWestNord= getState(idTasterWestNord).val;
                    var helligkeit = getState(idHelligkeit).val;
                    var elevation = getState(idElevation).val;
                    var timer1 = null;
                    var timer2 = null;
                    var dauer = 30; //5min in Sekunden
                    
                    var taster_virtu = getState(idTaster_virtu).val;
                    var helligkeit_grenze= getState(idGrenzwertHelligkeit).val;
                    var elevation_grenze = getState(idGrenzwertElevation).val;
                    
                    on(idLicht1, function(dp) {
                       licht1 = dp.state.val;
                    });
                    on(idLicht2, function(dp) {
                       licht2 = dp.state.val;
                    });
                    
                    //Licht durch Bewegungsmelder
                    on([idBewegung1, idBewegung2], function(dp) {
                        if (!taster_virtu && dp.state.val) {
                            if(!licht1) setState(idLicht1, true);
                            if(!licht2) setState(idLicht2, true);
                            if (!tasterWestSued) {     //Wandtaster
                                if(timer1) clearTimeout(timer1);
                                timer1 = setTimeout(function() {
                                    setState(idLicht1, false);
                                    timer1 = null;
                                }, 1000 * dauer);
                            }
                            if (!tasterWestNord) {     //Wandtaster
                                if(timer2) clearTimeout(timer2);
                                timer2 = setTimeout(function() {
                                    setState(idLicht2, false);
                                    timer2 = null;
                                }, 1000 * dauer);
                            }
                        }
                    });
                    
                    //Virtueller Taster an/aus
                    on(idTaster_virtu, function(dp) {
                        taster_virtu = dp.state.val;
                        if(timer1) {
                            clearTimeout(timer1);
                            timer1 = null;
                        }
                        if(timer2) {
                            clearTimeout(timer2);
                            timer2 = null;
                        }
                        if(!taster_virtu) {
                            if(licht1) setState(idLicht1, false);
                            if(licht2) setState(idLicht2, false);
                        } else {
                            var helligkeit = getState(idHelligkeit).val;
                            var elevation = getState(idElevation).val;
                            if (helligkeit < helligkeit_grenze || elevation <= elevation_grenze) {
                                if(!licht1) setState(idLicht1, true);
                                if(!licht2) setState(idLicht2, true);
                            }
                        }
                    });
                    
                    //Wandtaster WestSued
                    on({id: [idTaster1_1, idTaster1_2]}, function() {
                        if (licht1) setState(idTasterWestSued, false);
                        else setState(idTasterWestSued, true);
                        if(timer1) { // Timer läuft --> Licht bleibt an
                            clearTimeout(timer1);
                            timer1 = null;
                        } 
                        else setState(idLicht1, !licht1); // Toggle
                    });
                    
                    //Wandtaster WestNord
                    on({id: [idTaster2_1, idTaster2_2]}, function() {
                        if (licht2) setState(idTasterWestNord, false);
                        else setState(idTasterWestNord, true);
                        if(timer2) { // Timer läuft --> Licht bleibt an
                            clearTimeout(timer2);
                            timer2 = null;
                        } 
                        else setState(idLicht2, !licht2); // Toggle
                    });
                    

                    irgendwo hab ich nen Denkfehler drin. Wenn Bewegungsmelder ausgelöst hat und ich dann einen Wandtaster drücke, dann soll das Licht anbleiben und auch nicht nach der abgelaufenen Zeit aus dem Bewegungsmelder ausgehen. Das 2. Licht, wo der Taster nicht zugehört, soll entsprechend ausgehen.
                    2. Fall: wenn ein Licht über den Wandtaster an ist und der Bewegungsmelder löst aus, dann soll das eine Licht aber nicht ausgehen, wenn der Timer aus de Bewegungsmelder abläuft. macht er aber....

                    AsgothianA 1 Reply Last reply
                    0
                    • M mguenther

                      bekomme es nicht hin

                      //Lichtschaltung auf Westseite - Bedingung: Elevation <=Grenzwert oder Helligkeit <Grenzwert
                      //Möglichkeit 1: Bewegungsmelder 1 und/oder 2 für die Dauer von 5min
                      //Möglichkeit 2: virtueller Taster an/aus - hat Vorang gegenüber Bewegungsmelder
                      //Möglichkeit 3: Wandtaster an/aus - hat Vorang gegenüber Bewegungsmelder und virtueller Taster
                      const idBewegung1 = 'javascript.0.Bewegungsmelder.Bewegung_WestSued'/*Bewegung WestSued*/;
                      const idBewegung2 = 'javascript.0.Bewegungsmelder.Bewegung_WestNord'/*Bewegung WestNord*/;
                      const idLicht1 = 'hm-rpc.4.MEQ0064673.14.STATE'/*12 7 Rest:14 STATE*/;
                      const idLicht2 = 'hm-rpc.4.MEQ0064673.13.STATE'/*12 7 Rest:13 STATE*/;
                      const idTaster1_1 = 'hm-rpc.4.MEQ0064673.8.PRESS_LONG'/*12 7 Rest:08 PRESS LONG*/;
                      const idTaster1_2 = 'hm-rpc.4.MEQ0064673.8.PRESS_SHORT'/*12 7 Rest:08 PRESS SHORT*/;
                      const idTaster2_1 = 'hm-rpc.4.MEQ0064673.7.PRESS_LONG'/*12 7 Rest:07 PRESS LONG*/;
                      const idTaster2_2 = 'hm-rpc.4.MEQ0064673.7.PRESS_SHORT'/*12 7 Rest:07 PRESS SHORT*/;
                      const idTaster_virtu = 'javascript.0.Bewegungsmelder.Bewegung_West_virtu_Taster'/*Bewegung West virtu Taster*/;
                      const idHelligkeit = 'hm-rpc.0.NEQ1544423.1.BRIGHTNESS'/*Aussenlicht BW Nord:1 BRIGHTNESS*/;
                      const idElevation = 'javascript.0.Sonne.Elevation'/*Elevation*/;
                      const idGrenzwertHelligkeit = 'javascript.0.Bewegungsmelder.Grenzwert_Helligkeit'/*Grenzwert Helligkeit*/;
                      const idGrenzwertElevation = 'javascript.0.Bewegungsmelder.Grenzwert_Elevation'/*Grenzwert Elevation*/;
                      const idTasterWestSued = 'javascript.0.Bewegungsmelder.Bewegung_WestSued_Taster'/*Bewegung WestSued Taster*/;
                      const idTasterWestNord = 'javascript.0.Bewegungsmelder.Bewegung_WestNord_Taster'/*Bewegung WestNord Taster*/;
                      
                      var bewegung1 = getState(idBewegung1).val;
                      var bewegung2 = getState(idBewegung2).val;
                      var licht1 = getState(idLicht1).val;
                      var licht2 = getState(idLicht2).val;
                      var taster1_1 = getState(idTaster1_1).val;
                      var taster1_2 = getState(idTaster1_2).val;
                      var taster2_1 = getState(idTaster2_1).val;
                      var taster2_2 = getState(idTaster2_2).val;
                      var tasterWestSued= getState(idTasterWestSued).val;
                      var tasterWestNord= getState(idTasterWestNord).val;
                      var helligkeit = getState(idHelligkeit).val;
                      var elevation = getState(idElevation).val;
                      var timer1 = null;
                      var timer2 = null;
                      var dauer = 30; //5min in Sekunden
                      
                      var taster_virtu = getState(idTaster_virtu).val;
                      var helligkeit_grenze= getState(idGrenzwertHelligkeit).val;
                      var elevation_grenze = getState(idGrenzwertElevation).val;
                      
                      on(idLicht1, function(dp) {
                         licht1 = dp.state.val;
                      });
                      on(idLicht2, function(dp) {
                         licht2 = dp.state.val;
                      });
                      
                      //Licht durch Bewegungsmelder
                      on([idBewegung1, idBewegung2], function(dp) {
                          if (!taster_virtu && dp.state.val) {
                              if(!licht1) setState(idLicht1, true);
                              if(!licht2) setState(idLicht2, true);
                              if (!tasterWestSued) {     //Wandtaster
                                  if(timer1) clearTimeout(timer1);
                                  timer1 = setTimeout(function() {
                                      setState(idLicht1, false);
                                      timer1 = null;
                                  }, 1000 * dauer);
                              }
                              if (!tasterWestNord) {     //Wandtaster
                                  if(timer2) clearTimeout(timer2);
                                  timer2 = setTimeout(function() {
                                      setState(idLicht2, false);
                                      timer2 = null;
                                  }, 1000 * dauer);
                              }
                          }
                      });
                      
                      //Virtueller Taster an/aus
                      on(idTaster_virtu, function(dp) {
                          taster_virtu = dp.state.val;
                          if(timer1) {
                              clearTimeout(timer1);
                              timer1 = null;
                          }
                          if(timer2) {
                              clearTimeout(timer2);
                              timer2 = null;
                          }
                          if(!taster_virtu) {
                              if(licht1) setState(idLicht1, false);
                              if(licht2) setState(idLicht2, false);
                          } else {
                              var helligkeit = getState(idHelligkeit).val;
                              var elevation = getState(idElevation).val;
                              if (helligkeit < helligkeit_grenze || elevation <= elevation_grenze) {
                                  if(!licht1) setState(idLicht1, true);
                                  if(!licht2) setState(idLicht2, true);
                              }
                          }
                      });
                      
                      //Wandtaster WestSued
                      on({id: [idTaster1_1, idTaster1_2]}, function() {
                          if (licht1) setState(idTasterWestSued, false);
                          else setState(idTasterWestSued, true);
                          if(timer1) { // Timer läuft --> Licht bleibt an
                              clearTimeout(timer1);
                              timer1 = null;
                          } 
                          else setState(idLicht1, !licht1); // Toggle
                      });
                      
                      //Wandtaster WestNord
                      on({id: [idTaster2_1, idTaster2_2]}, function() {
                          if (licht2) setState(idTasterWestNord, false);
                          else setState(idTasterWestNord, true);
                          if(timer2) { // Timer läuft --> Licht bleibt an
                              clearTimeout(timer2);
                              timer2 = null;
                          } 
                          else setState(idLicht2, !licht2); // Toggle
                      });
                      

                      irgendwo hab ich nen Denkfehler drin. Wenn Bewegungsmelder ausgelöst hat und ich dann einen Wandtaster drücke, dann soll das Licht anbleiben und auch nicht nach der abgelaufenen Zeit aus dem Bewegungsmelder ausgehen. Das 2. Licht, wo der Taster nicht zugehört, soll entsprechend ausgehen.
                      2. Fall: wenn ein Licht über den Wandtaster an ist und der Bewegungsmelder löst aus, dann soll das eine Licht aber nicht ausgehen, wenn der Timer aus de Bewegungsmelder abläuft. macht er aber....

                      AsgothianA Offline
                      AsgothianA Offline
                      Asgothian
                      Developer
                      wrote on last edited by Asgothian
                      #18

                      ... nix zu sehen - @paul53,s Feld

                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                      M 1 Reply Last reply
                      0
                      • AsgothianA Asgothian

                        ... nix zu sehen - @paul53,s Feld

                        M Offline
                        M Offline
                        mguenther
                        wrote on last edited by
                        #19

                        @Asgothian sagte in Skript zur Steuerung Aussenlicht mit Bewegungsmelder und Tastern:

                        @mguenther Dumme Frage: kannst du die Taster betätigen ohne den BM auszulösen ? Wenn nein, dann setzt der BM den timer wieder nachdem du den Taster gedrückt hast.

                        wenn das so ist, brauchst du:
                        Pro Taster eine Variable “licht_mit_diesem_taster_eingeschaltet”
                        Die setzt du auf wahr wenn man mit dem Schalter das Licht an macht, und auf false wenn das Licht aus geht (entweder per Event am Licht oder im Schalter-Event.
                        Und im timer, bevor du das Licht ausschaltest fragst du sie ab.. bei true - nix tun.

                        A.
                        Ich bin gerade unterwegs und kann dir das nicht sauber in js en - ich hoffe der Hinweis reicht aber.

                        hab ich ja.

                        const idTasterWestSued = 'javascript.0.Bewegungsmelder.Bewegung_WestSued_Taster'/*Bewegung WestSued Taster*/;
                        const idTasterWestNord = 'javascript.0.Bewegungsmelder.Bewegung_WestNord_Taster'/*Bewegung WestNord Taster*/;
                        

                        werden entsprechend auf true/false gesetzt. Ich habe aber irgendwo oben nen Denkfehler drin bei dem Vorschlag von Paul

                        AsgothianA 2 Replies Last reply
                        0
                        • M mguenther

                          @Asgothian sagte in Skript zur Steuerung Aussenlicht mit Bewegungsmelder und Tastern:

                          @mguenther Dumme Frage: kannst du die Taster betätigen ohne den BM auszulösen ? Wenn nein, dann setzt der BM den timer wieder nachdem du den Taster gedrückt hast.

                          wenn das so ist, brauchst du:
                          Pro Taster eine Variable “licht_mit_diesem_taster_eingeschaltet”
                          Die setzt du auf wahr wenn man mit dem Schalter das Licht an macht, und auf false wenn das Licht aus geht (entweder per Event am Licht oder im Schalter-Event.
                          Und im timer, bevor du das Licht ausschaltest fragst du sie ab.. bei true - nix tun.

                          A.
                          Ich bin gerade unterwegs und kann dir das nicht sauber in js en - ich hoffe der Hinweis reicht aber.

                          hab ich ja.

                          const idTasterWestSued = 'javascript.0.Bewegungsmelder.Bewegung_WestSued_Taster'/*Bewegung WestSued Taster*/;
                          const idTasterWestNord = 'javascript.0.Bewegungsmelder.Bewegung_WestNord_Taster'/*Bewegung WestNord Taster*/;
                          

                          werden entsprechend auf true/false gesetzt. Ich habe aber irgendwo oben nen Denkfehler drin bei dem Vorschlag von Paul

                          AsgothianA Offline
                          AsgothianA Offline
                          Asgothian
                          Developer
                          wrote on last edited by Asgothian
                          #20

                          ... nix zu sehen - @paul53,s Feld

                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                          1 Reply Last reply
                          0
                          • M mguenther

                            @Asgothian sagte in Skript zur Steuerung Aussenlicht mit Bewegungsmelder und Tastern:

                            @mguenther Dumme Frage: kannst du die Taster betätigen ohne den BM auszulösen ? Wenn nein, dann setzt der BM den timer wieder nachdem du den Taster gedrückt hast.

                            wenn das so ist, brauchst du:
                            Pro Taster eine Variable “licht_mit_diesem_taster_eingeschaltet”
                            Die setzt du auf wahr wenn man mit dem Schalter das Licht an macht, und auf false wenn das Licht aus geht (entweder per Event am Licht oder im Schalter-Event.
                            Und im timer, bevor du das Licht ausschaltest fragst du sie ab.. bei true - nix tun.

                            A.
                            Ich bin gerade unterwegs und kann dir das nicht sauber in js en - ich hoffe der Hinweis reicht aber.

                            hab ich ja.

                            const idTasterWestSued = 'javascript.0.Bewegungsmelder.Bewegung_WestSued_Taster'/*Bewegung WestSued Taster*/;
                            const idTasterWestNord = 'javascript.0.Bewegungsmelder.Bewegung_WestNord_Taster'/*Bewegung WestNord Taster*/;
                            

                            werden entsprechend auf true/false gesetzt. Ich habe aber irgendwo oben nen Denkfehler drin bei dem Vorschlag von Paul

                            AsgothianA Offline
                            AsgothianA Offline
                            Asgothian
                            Developer
                            wrote on last edited by Asgothian
                            #21

                            ... nix zu sehen...

                            ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                            "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                            1 Reply Last reply
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              wrote on last edited by paul53
                              #22

                              Bitte nicht wild rumprobieren !

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              M 1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                mguenther
                                wrote on last edited by
                                #23

                                habs - danke an Asgothian

                                //Licht durch Bewegungsmelder
                                on([idBewegung1, idBewegung2], function(dp) {
                                    tasterWestNord=getState(idTasterWestNord).val;
                                    tasterWestSued=getState(idTasterWestSued).val;
                                    if (!taster_virtu && dp.state.val) {
                                        if(!licht1) setState(idLicht1, true);
                                        if(!licht2) setState(idLicht2, true);
                                        if(timer1) clearTimeout(timer1);
                                        timer1 = setTimeout(function() {
                                            if (!tasterWestSued) setState(idLicht1, false);    //Wandtaster
                                            timer1 = null;
                                        }, 1000 * dauer);
                                        if(timer2) clearTimeout(timer2);
                                        timer2 = setTimeout(function() {
                                            if (!tasterWestNord) setState(idLicht2, false);   //Wandtaster
                                            timer2 = null;
                                        }, 1000 * dauer);
                                    }
                                });
                                
                                AsgothianA 1 Reply Last reply
                                0
                                • M mguenther

                                  habs - danke an Asgothian

                                  //Licht durch Bewegungsmelder
                                  on([idBewegung1, idBewegung2], function(dp) {
                                      tasterWestNord=getState(idTasterWestNord).val;
                                      tasterWestSued=getState(idTasterWestSued).val;
                                      if (!taster_virtu && dp.state.val) {
                                          if(!licht1) setState(idLicht1, true);
                                          if(!licht2) setState(idLicht2, true);
                                          if(timer1) clearTimeout(timer1);
                                          timer1 = setTimeout(function() {
                                              if (!tasterWestSued) setState(idLicht1, false);    //Wandtaster
                                              timer1 = null;
                                          }, 1000 * dauer);
                                          if(timer2) clearTimeout(timer2);
                                          timer2 = setTimeout(function() {
                                              if (!tasterWestNord) setState(idLicht2, false);   //Wandtaster
                                              timer2 = null;
                                          }, 1000 * dauer);
                                      }
                                  });
                                  
                                  AsgothianA Offline
                                  AsgothianA Offline
                                  Asgothian
                                  Developer
                                  wrote on last edited by
                                  #24

                                  @mguenther
                                  Fein. Sorry für die gelöschten Posts, ich wollte Paul nicht auf ie Füße treten.

                                  ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                  "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                  1 Reply Last reply
                                  0
                                  • paul53P paul53

                                    Bitte nicht wild rumprobieren !

                                    M Offline
                                    M Offline
                                    mguenther
                                    wrote on last edited by
                                    #25

                                    @paul53 sagte in Skript zur Steuerung Aussenlicht mit Bewegungsmelder und Tastern:

                                    Bitte nicht wild rumprobieren !

                                    Paul, ich habe mir 2 Variablen gesetzt, um die Betätigung des Wandtasters abzufangen.
                                    Hatte die beiden nur falsch eingesetzt.

                                    Danke euch beiden an der Stelle!

                                    1 Reply Last reply
                                    0
                                    • paul53P Offline
                                      paul53P Offline
                                      paul53
                                      wrote on last edited by paul53
                                      #26
                                      //Wandtaster WestNord
                                          on({id: [idTaster2_1, idTaster2_2]}, function() {
                                              if (licht2) tasterWestNord = false;
                                              else tasterWestNord = true;
                                              if(timer2) { // Timer läuft --> Licht bleibt an
                                                  tasterWestNord = true;
                                                  clearTimeout(timer2);
                                                  timer2 = null;
                                              } 
                                              else setState(idLicht2, !licht2); // Toggle
                                          });
                                      

                                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                      1 Reply Last reply
                                      0
                                      • M Offline
                                        M Offline
                                        mguenther
                                        wrote on last edited by mguenther
                                        #27

                                        @paul53, habe ich nochmal angepasst

                                        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

                                        563

                                        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