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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. PIR und LED Licht: Wo ist mein Fehler

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

PIR und LED Licht: Wo ist mein Fehler

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
blocklyjavascript
5 Beiträge 2 Kommentatoren 412 Aufrufe 1 Watching
  • Ä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.
  • J Offline
    J Offline
    jhuebner1
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich will eine Badbeleuchtung haben über einen Zigbee LED Streifen, der angeht, wenn Bewegung festgestellt wird.
    habe dazu einen IKEA PIR Sensor im Einsatz.
    (den Anwesenheitssensor will ich nicht, der geht ja auch durch Wände und hinter dem Bad liegt die Küche und der Flur, deswegen nur PIR).

    Ich will, das das Licht auch nur bei gewissem LUX Wert angeht.
    Der eigene IKEA Sensor hat zwar auch LUX, der spinnt aber manchmal, deswegen habe ich noch eine andere Quelle in das Script aufgenommen.

    ich habe auch noch eine andere Lampe, die genutzt wird zum Duschen, deswegen der Abgleich mit Lampe 2.

    Es klappt jetzt auch alles soweit ganz gut.

    Aaaaber:
    Irgendwie klappt das nicht. Also es klappt schon, das Erstauslösen funktioniert gut.
    Aber wenn man zB Zähne putzt und länger als die Zeit braucht, dann geht es nicht mehr an.
    Oder man hampelt rum, manchmal klappt es, manchmal nicht.

    Jetzt die Frage:
    Liegt das an meinem Script?
    Oder kommt das vom IKEA Sensor, das er ein gewisses Zeitintervall hat und deswegen nur alle zB 20 Sekunden checkt?
    Und mein script überlapt sich dann dann ggf und deswegen keine erneute Aktivierung?

    on({ id: [].concat(['deconz.0.Sensors.12.presence']), change: 'ne' }, async (obj) => {
      let value = obj.state.val;
      let oldValue = obj.oldState.val;
      if ((getState('deconz.0.Sensors.12.presence').val == true) && (getState('javascript.0.Anwesenheitserkennung.Bad').val == false) && (compareTime('06:00', '07:00', 'between') || compareTime('21:30', '22:45', 'between')) && ((getState('deconz.0.Sensors.13.lux').val <= 30) || (getState('deconz.0.Sensors.3.lux').val <= 30))) {
        setState('deconz.0.Lights.13.level' /* Ledvance Lichtstreifen Bad level */, 100);
        setState('deconz.0.Lights.13.on' /* Ledvance Lichtstreifen Bad on */, true);
        setStateDelayed('deconz.0.Lights.13.on' /* Ledvance Lichtstreifen Bad on */, false, 180000, false);
      } else if ((getState('deconz.0.Sensors.12.presence').val == true) && (getState('javascript.0.Anwesenheitserkennung.Bad').val == false) && (compareTime('06:00', '07:00', 'not between') || compareTime('21:30', '22:45', 'not between')) && ((getState('deconz.0.Sensors.13.lux').val <= 30) || (getState('deconz.0.Sensors.3.lux').val <= 30))) {
        setState('deconz.0.Lights.13.level' /* Ledvance Lichtstreifen Bad level */, 100);
        setState('deconz.0.Lights.13.on' /* Ledvance Lichtstreifen Bad on */, true);
        setStateDelayed('deconz.0.Lights.13.on' /* Ledvance Lichtstreifen Bad on */, false, 45000, false);
      }
    });
    

    Das ganze als Blockly:
    Screenshot 2024-10-07 100610.png

    paul53P 1 Antwort Letzte Antwort
    0
    • J jhuebner1

      Hallo,

      ich will eine Badbeleuchtung haben über einen Zigbee LED Streifen, der angeht, wenn Bewegung festgestellt wird.
      habe dazu einen IKEA PIR Sensor im Einsatz.
      (den Anwesenheitssensor will ich nicht, der geht ja auch durch Wände und hinter dem Bad liegt die Küche und der Flur, deswegen nur PIR).

      Ich will, das das Licht auch nur bei gewissem LUX Wert angeht.
      Der eigene IKEA Sensor hat zwar auch LUX, der spinnt aber manchmal, deswegen habe ich noch eine andere Quelle in das Script aufgenommen.

      ich habe auch noch eine andere Lampe, die genutzt wird zum Duschen, deswegen der Abgleich mit Lampe 2.

      Es klappt jetzt auch alles soweit ganz gut.

      Aaaaber:
      Irgendwie klappt das nicht. Also es klappt schon, das Erstauslösen funktioniert gut.
      Aber wenn man zB Zähne putzt und länger als die Zeit braucht, dann geht es nicht mehr an.
      Oder man hampelt rum, manchmal klappt es, manchmal nicht.

      Jetzt die Frage:
      Liegt das an meinem Script?
      Oder kommt das vom IKEA Sensor, das er ein gewisses Zeitintervall hat und deswegen nur alle zB 20 Sekunden checkt?
      Und mein script überlapt sich dann dann ggf und deswegen keine erneute Aktivierung?

      on({ id: [].concat(['deconz.0.Sensors.12.presence']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if ((getState('deconz.0.Sensors.12.presence').val == true) && (getState('javascript.0.Anwesenheitserkennung.Bad').val == false) && (compareTime('06:00', '07:00', 'between') || compareTime('21:30', '22:45', 'between')) && ((getState('deconz.0.Sensors.13.lux').val <= 30) || (getState('deconz.0.Sensors.3.lux').val <= 30))) {
          setState('deconz.0.Lights.13.level' /* Ledvance Lichtstreifen Bad level */, 100);
          setState('deconz.0.Lights.13.on' /* Ledvance Lichtstreifen Bad on */, true);
          setStateDelayed('deconz.0.Lights.13.on' /* Ledvance Lichtstreifen Bad on */, false, 180000, false);
        } else if ((getState('deconz.0.Sensors.12.presence').val == true) && (getState('javascript.0.Anwesenheitserkennung.Bad').val == false) && (compareTime('06:00', '07:00', 'not between') || compareTime('21:30', '22:45', 'not between')) && ((getState('deconz.0.Sensors.13.lux').val <= 30) || (getState('deconz.0.Sensors.3.lux').val <= 30))) {
          setState('deconz.0.Lights.13.level' /* Ledvance Lichtstreifen Bad level */, 100);
          setState('deconz.0.Lights.13.on' /* Ledvance Lichtstreifen Bad on */, true);
          setStateDelayed('deconz.0.Lights.13.on' /* Ledvance Lichtstreifen Bad on */, false, 45000, false);
        }
      });
      

      Das ganze als Blockly:
      Screenshot 2024-10-07 100610.png

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @jhuebner1 sagte: Liegt das an meinem Script?

      Ja, das Licht wird nach der Verzögerungszeit von 3 min bzw. 45 s zwangsweise ausgeschaltet, da die Timer bei erneuter Bewegungserkennung nicht gestoppt werden.
      Vorschlag:

      Blockly_temp.JPG

      Was hat es mit dem DP "javascript.0.Anwesenheitserkennung.Bad" auf sich?

      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

      J 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @jhuebner1 sagte: Liegt das an meinem Script?

        Ja, das Licht wird nach der Verzögerungszeit von 3 min bzw. 45 s zwangsweise ausgeschaltet, da die Timer bei erneuter Bewegungserkennung nicht gestoppt werden.
        Vorschlag:

        Blockly_temp.JPG

        Was hat es mit dem DP "javascript.0.Anwesenheitserkennung.Bad" auf sich?

        J Offline
        J Offline
        jhuebner1
        schrieb am zuletzt editiert von
        #3

        @paul53
        Danke, schau ich mir an und versuche es nachzubauen.

        Das javascript.0.Anwesenheitserkennung.Bad ist genau mein "Duschszenario".
        Ich weiß, hat mit Anwesenheit nix zu tun, aber so hab ich angefangen und lass das alles im gleichen verzeichnis liegen.....

        paul53P 1 Antwort Letzte Antwort
        0
        • J jhuebner1

          @paul53
          Danke, schau ich mir an und versuche es nachzubauen.

          Das javascript.0.Anwesenheitserkennung.Bad ist genau mein "Duschszenario".
          Ich weiß, hat mit Anwesenheit nix zu tun, aber so hab ich angefangen und lass das alles im gleichen verzeichnis liegen.....

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @jhuebner1 sagte: javascript.0.Anwesenheitserkennung.Bad ist genau mein "Duschszenario".

          Ich habe es in der Version mit nur einem Timeout als "Duschlicht" bezeichnet:

          Blockly_temp.JPG

          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

          J 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @jhuebner1 sagte: javascript.0.Anwesenheitserkennung.Bad ist genau mein "Duschszenario".

            Ich habe es in der Version mit nur einem Timeout als "Duschlicht" bezeichnet:

            Blockly_temp.JPG

            J Offline
            J Offline
            jhuebner1
            schrieb am zuletzt editiert von
            #5

            @paul53
            Irgendwas hat da bei mir nicht geklappt.
            Mal ging es, mal ging es nicht....

            Ich hab das jetzt mal durch ChatGPD gejagd und das kam dabei rum:

            var timeout, timeout2;
            
            function clearPreviousTimeouts() {
              if (timeout) { clearTimeout(timeout); timeout = null; }
              if (timeout2) { clearTimeout(timeout2); timeout2 = null; }
            }
            
            on({ id: [].concat(['deconz.0.Sensors.12.presence']), change: 'ne' }, (obj) => {
              let value = obj.state.val;
              let oldValue = obj.oldState.val;
              
              // Prüfen, ob der Sensor auf Anwesenheit schaltet und Lichtsteuerungsbedingungen erfüllt sind
              if (value && !getState('javascript.0.Anwesenheitserkennung.Bad').val && 
                  (getState('deconz.0.Sensors.13.lux').val <= 20 || getState('deconz.0.Sensors.3.lux').val <= 30)) {
                  
                // Wenn innerhalb der Zeitbereiche
                if (compareTime('06:00', '07:00', 'between') || compareTime('21:30', '22:45', 'between')) {
                  clearPreviousTimeouts();
                  
                  setState('deconz.0.Lights.13.level', 100); // Setze Lichtlevel auf 100%
                  setState('deconz.0.Lights.13.on', true);   // Schalte das Licht ein
                  
                  // Timeout nach 3 Minuten
                  timeout = setTimeout(() => {
                    timeout = null;
                    setState('deconz.0.Lights.13.on', false);  // Schalte das Licht aus
                  }, 180000);
                  
                } else {
                  clearPreviousTimeouts();
                  
                  setState('deconz.0.Lights.13.level', 100);
                  setState('deconz.0.Lights.13.on', true);
                  
                  // Timeout nach 1 Minute
                  timeout2 = setTimeout(() => {
                    timeout2 = null;
                    setState('deconz.0.Lights.13.on', false);  // Schalte das Licht aus
                  }, 60000);
                }
              }
            });
            
            
            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

            710

            Online

            32.6k

            Benutzer

            82.2k

            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