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. Blockly
  5. Bewegungsmelder Skript für Raum mit schaltbarem Licht

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Bewegungsmelder Skript für Raum mit schaltbarem Licht

Geplant Angeheftet Gesperrt Verschoben Blockly
7 Beiträge 4 Kommentatoren 914 Aufrufe 3 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.
  • B Offline
    B Offline
    Benda
    schrieb am zuletzt editiert von
    #1

    Hi Leute,

    Ich habe folgendes im Sinn:

    Im Wohnzimmer befinden sich ein paar Hue Leuchten und ein Motion Sensor. Die Lichter können wie gewohnt geschaltet werden.
    Ab Sonnenuntergang soll folgendes passieren:

    Skript #1
    Anwendungsfall: Es ist dunkel, man betritt den Raum, schalte das Licht ein

    Der Bewegungssensor soll die Nachtlicht Szene schalten, sofern:

    • Bewegung erkannt
    • Keine Lampe an ist
    • Astro zwischen Untergang und Aufgang

    Nach 5 Minuten soll er das Licht wieder ausschalten, aber nur sofern man das Licht nicht zwischenzeitig schon angeschaltet hat

    Skript #2
    Anwendungsfall: Man befindet sich im Wohnzimmer und schaltet das Licht aus, nun soll automatisch und ohne Bewegunserkennung noch 5 Minuten das Nachtlicht an bleiben

    Schalte Nachtlicht Szene ein falls:

    • Astro zwischen Untergang und Aufgang
    • Licht wurde ausgeschaltet

    Dadurch dass Skript #1 ja am Ende das "Licht ausschaltet" würde hier erstmal Skript #2 gestartet werden (nachtlicht)

    Damit Skript #2 nur startet wenn händisch das Licht ausgeschaltet wird, habe ich einen Datenpunkt Wohnzimmer_Nachtlicht_aktiv angelegt. Sofern dieser true ist und das licht ausgeschaltet wird, soll nicht wieder das Nachtlicht aktiviert werden

    Erste Testversuche zeigen, dass das Script soweit funktioniert, allerdings hatte ich heute früh scheinbar einen infinite loop im iobroker, den ich nur durch iobroker del javascript deaktivieren konnte.

    Eine mögliche Fehlerquelle ist natürlich das Polling des Hue Adapters, welches ich derzeit auf 10 Sekunden gestellt habe.

    Daher meine Frage, seht ihr hier Optimierungsbedarf, kann man hier ggf. vereinfachen?
    Anbei mein derzeitiges Blockly Script.

    Vielen Dank für euren Input!

    Bildschirmfoto 2021-01-18 um 14.13.34.png
    Bildschirmfoto 2021-01-18 um 14.13.20.png

    AsgothianA paul53P 2 Antworten Letzte Antwort
    0
    • B Benda

      Hi Leute,

      Ich habe folgendes im Sinn:

      Im Wohnzimmer befinden sich ein paar Hue Leuchten und ein Motion Sensor. Die Lichter können wie gewohnt geschaltet werden.
      Ab Sonnenuntergang soll folgendes passieren:

      Skript #1
      Anwendungsfall: Es ist dunkel, man betritt den Raum, schalte das Licht ein

      Der Bewegungssensor soll die Nachtlicht Szene schalten, sofern:

      • Bewegung erkannt
      • Keine Lampe an ist
      • Astro zwischen Untergang und Aufgang

      Nach 5 Minuten soll er das Licht wieder ausschalten, aber nur sofern man das Licht nicht zwischenzeitig schon angeschaltet hat

      Skript #2
      Anwendungsfall: Man befindet sich im Wohnzimmer und schaltet das Licht aus, nun soll automatisch und ohne Bewegunserkennung noch 5 Minuten das Nachtlicht an bleiben

      Schalte Nachtlicht Szene ein falls:

      • Astro zwischen Untergang und Aufgang
      • Licht wurde ausgeschaltet

      Dadurch dass Skript #1 ja am Ende das "Licht ausschaltet" würde hier erstmal Skript #2 gestartet werden (nachtlicht)

      Damit Skript #2 nur startet wenn händisch das Licht ausgeschaltet wird, habe ich einen Datenpunkt Wohnzimmer_Nachtlicht_aktiv angelegt. Sofern dieser true ist und das licht ausgeschaltet wird, soll nicht wieder das Nachtlicht aktiviert werden

      Erste Testversuche zeigen, dass das Script soweit funktioniert, allerdings hatte ich heute früh scheinbar einen infinite loop im iobroker, den ich nur durch iobroker del javascript deaktivieren konnte.

      Eine mögliche Fehlerquelle ist natürlich das Polling des Hue Adapters, welches ich derzeit auf 10 Sekunden gestellt habe.

      Daher meine Frage, seht ihr hier Optimierungsbedarf, kann man hier ggf. vereinfachen?
      Anbei mein derzeitiges Blockly Script.

      Vielen Dank für euren Input!

      Bildschirmfoto 2021-01-18 um 14.13.34.png
      Bildschirmfoto 2021-01-18 um 14.13.20.png

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      @benda

      Optimierungsvorschläge:

      1. Skript
      • vor den "Ausführen lichtAusschalten2" Baustein noch ein stop lichtAusschalten2.
      • An Stelle von "pause 15 sek" beim "Steuere Wohnzimmer_Nachtlicht_aktiv" die Einstellungen "Mit Verzögerung 15 Sekunden" und "löschen falls läuft" aktivieren
      1. Skript:
      • Im Bereich "System" gibt es zwischen den "falls Objekt" Bausteinen einen der mit"Objekt ID" vordefiniert ist. Dieser Baustein kann auf "wert" umgestellt werden und innerhalb des Triggers den Baustein "wert vom Objekt ID Motion Sensor presence" ersetzen.
      • Alternativ dazu kann statt auf "wurde geändert" auf "ist grösser als vorher" getriggert werden, dann kann im Falls die Abfrage "wert vom Objekt ID Motion Sensor presence = wahr" entfallen. (in JS gilt: Wahr > Falsch)

      In beiden Skripten fragst Du mehrfach den "wert vom Objekt ID Wohnzimmer.level" ab. Ich würde das generell so lösen:

      • eine Variable "RaumHelligkeit" anlegen
      • ein "Falls Objekt ID Wohnzimmer.level" wurde geändert machen, darin ein "setze RaumHelligkeit auf wert" (den Baustein im 1. Vorschlag am 2. Skript) nutzen
      • In beiden Skriptteilen jedes auftreten von wert vom "Objekt ID Wohnzimmer.level" durch "RaumHelligkeit" ersetzen

      A.

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

      B 1 Antwort Letzte Antwort
      0
      • AsgothianA Asgothian

        @benda

        Optimierungsvorschläge:

        1. Skript
        • vor den "Ausführen lichtAusschalten2" Baustein noch ein stop lichtAusschalten2.
        • An Stelle von "pause 15 sek" beim "Steuere Wohnzimmer_Nachtlicht_aktiv" die Einstellungen "Mit Verzögerung 15 Sekunden" und "löschen falls läuft" aktivieren
        1. Skript:
        • Im Bereich "System" gibt es zwischen den "falls Objekt" Bausteinen einen der mit"Objekt ID" vordefiniert ist. Dieser Baustein kann auf "wert" umgestellt werden und innerhalb des Triggers den Baustein "wert vom Objekt ID Motion Sensor presence" ersetzen.
        • Alternativ dazu kann statt auf "wurde geändert" auf "ist grösser als vorher" getriggert werden, dann kann im Falls die Abfrage "wert vom Objekt ID Motion Sensor presence = wahr" entfallen. (in JS gilt: Wahr > Falsch)

        In beiden Skripten fragst Du mehrfach den "wert vom Objekt ID Wohnzimmer.level" ab. Ich würde das generell so lösen:

        • eine Variable "RaumHelligkeit" anlegen
        • ein "Falls Objekt ID Wohnzimmer.level" wurde geändert machen, darin ein "setze RaumHelligkeit auf wert" (den Baustein im 1. Vorschlag am 2. Skript) nutzen
        • In beiden Skriptteilen jedes auftreten von wert vom "Objekt ID Wohnzimmer.level" durch "RaumHelligkeit" ersetzen

        A.

        B Offline
        B Offline
        Benda
        schrieb am zuletzt editiert von
        #3

        Hey Asgothian,
        danke für deine Anregungen.

        @asgothian said in Bewegungsmelder Skript für Raum mit schaltbarem Licht:

        An Stelle von "pause 15 sek" beim "Steuere Wohnzimmer_Nachtlicht_aktiv" die Einstellungen "Mit Verzögerung 15 Sekunden" und "löschen falls läuft" aktivieren

        Was bedeutet die Checkbox "löschen falls läuft"?

        eine Variable "RaumHelligkeit" anlegen
        ein "Falls Objekt ID Wohnzimmer.level" wurde geändert machen, darin ein "setze RaumHelligkeit auf wert" (den Baustein im 1. Vorschlag am 2. Skript) nutzen
        In beiden Skriptteilen jedes auftreten von wert vom "Objekt ID Wohnzimmer.level" durch "RaumHelligkeit" ersetzen

        Also ein separater Block mit einem trigger auf Wohnzimmer.level?
        Ich sehe hier eine race condition, dass das Skript 1 oder 2 durchläuft bevor der callback dieses event triggers die lokale variable angepasst hat, oder habe ich einen Verständnisfehler?

        Ich habe das Timeout fürs zurücksetzen der Wohnzimmer_Nachtlicht_aktiv variable nun auf 20 sekunden gesetzt.

        Irgendwo scheint noch ein Wurm im Skript zu sein, da ich eben wieder ein CPU 100% problem hatte..

        paul53P 1 Antwort Letzte Antwort
        0
        • B Benda

          Hi Leute,

          Ich habe folgendes im Sinn:

          Im Wohnzimmer befinden sich ein paar Hue Leuchten und ein Motion Sensor. Die Lichter können wie gewohnt geschaltet werden.
          Ab Sonnenuntergang soll folgendes passieren:

          Skript #1
          Anwendungsfall: Es ist dunkel, man betritt den Raum, schalte das Licht ein

          Der Bewegungssensor soll die Nachtlicht Szene schalten, sofern:

          • Bewegung erkannt
          • Keine Lampe an ist
          • Astro zwischen Untergang und Aufgang

          Nach 5 Minuten soll er das Licht wieder ausschalten, aber nur sofern man das Licht nicht zwischenzeitig schon angeschaltet hat

          Skript #2
          Anwendungsfall: Man befindet sich im Wohnzimmer und schaltet das Licht aus, nun soll automatisch und ohne Bewegunserkennung noch 5 Minuten das Nachtlicht an bleiben

          Schalte Nachtlicht Szene ein falls:

          • Astro zwischen Untergang und Aufgang
          • Licht wurde ausgeschaltet

          Dadurch dass Skript #1 ja am Ende das "Licht ausschaltet" würde hier erstmal Skript #2 gestartet werden (nachtlicht)

          Damit Skript #2 nur startet wenn händisch das Licht ausgeschaltet wird, habe ich einen Datenpunkt Wohnzimmer_Nachtlicht_aktiv angelegt. Sofern dieser true ist und das licht ausgeschaltet wird, soll nicht wieder das Nachtlicht aktiviert werden

          Erste Testversuche zeigen, dass das Script soweit funktioniert, allerdings hatte ich heute früh scheinbar einen infinite loop im iobroker, den ich nur durch iobroker del javascript deaktivieren konnte.

          Eine mögliche Fehlerquelle ist natürlich das Polling des Hue Adapters, welches ich derzeit auf 10 Sekunden gestellt habe.

          Daher meine Frage, seht ihr hier Optimierungsbedarf, kann man hier ggf. vereinfachen?
          Anbei mein derzeitiges Blockly Script.

          Vielen Dank für euren Input!

          Bildschirmfoto 2021-01-18 um 14.13.34.png
          Bildschirmfoto 2021-01-18 um 14.13.20.png

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

          @benda sagte: seht ihr hier Optimierungsbedarf, kann man hier ggf. vereinfachen?

          Gleiche Abfragen (nachts) und Abläufe packt man in eine Funktion. Dann benötigt man auch nur einen Ausschalt-Timeout.

          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 Antwort Letzte Antwort
          0
          • B Benda

            Hey Asgothian,
            danke für deine Anregungen.

            @asgothian said in Bewegungsmelder Skript für Raum mit schaltbarem Licht:

            An Stelle von "pause 15 sek" beim "Steuere Wohnzimmer_Nachtlicht_aktiv" die Einstellungen "Mit Verzögerung 15 Sekunden" und "löschen falls läuft" aktivieren

            Was bedeutet die Checkbox "löschen falls läuft"?

            eine Variable "RaumHelligkeit" anlegen
            ein "Falls Objekt ID Wohnzimmer.level" wurde geändert machen, darin ein "setze RaumHelligkeit auf wert" (den Baustein im 1. Vorschlag am 2. Skript) nutzen
            In beiden Skriptteilen jedes auftreten von wert vom "Objekt ID Wohnzimmer.level" durch "RaumHelligkeit" ersetzen

            Also ein separater Block mit einem trigger auf Wohnzimmer.level?
            Ich sehe hier eine race condition, dass das Skript 1 oder 2 durchläuft bevor der callback dieses event triggers die lokale variable angepasst hat, oder habe ich einen Verständnisfehler?

            Ich habe das Timeout fürs zurücksetzen der Wohnzimmer_Nachtlicht_aktiv variable nun auf 20 sekunden gesetzt.

            Irgendwo scheint noch ein Wurm im Skript zu sein, da ich eben wieder ein CPU 100% problem hatte..

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

            @benda sagte:

            wieder ein CPU 100% problem hatte..

            Der Trigger "Wohnzimmer.anyOn" mit "ist unwahr" wird anscheinend indirekt vom Script selbst ausgelöst und erzeugt so eine Endlosschleife. Ändere den Trigger auf "ist kleiner als letztes".

            Besser: Packe beides in ein Script, verwende anstelle des Datenpunktes "Wohnzimmer_Nachtlicht_aktiv" eine Variable und nimm für den gemeinsamen Teil eine Funktion.

            EDIT: Etwa so:

            Bild_2021-01-18_165211.png

            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

            B 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @benda sagte:

              wieder ein CPU 100% problem hatte..

              Der Trigger "Wohnzimmer.anyOn" mit "ist unwahr" wird anscheinend indirekt vom Script selbst ausgelöst und erzeugt so eine Endlosschleife. Ändere den Trigger auf "ist kleiner als letztes".

              Besser: Packe beides in ein Script, verwende anstelle des Datenpunktes "Wohnzimmer_Nachtlicht_aktiv" eine Variable und nimm für den gemeinsamen Teil eine Funktion.

              EDIT: Etwa so:

              Bild_2021-01-18_165211.png

              B Offline
              B Offline
              Benda
              schrieb am zuletzt editiert von
              #6

              Vielen Dank für eure Anregungen, hab einiges gelernt :)
              Das Script funktioniert nun auch super, ich werde meine finale Version nochmal zur Referenz posten.

              Tatsächlich kam die Endlosschleife durch ein anderes Script zu Stande, welches auf diverse Alexa Routinen triggert (mit ist wahr). Diese Trigger gingen aber scheinbar auch so los, da die Alexa Routinen auf True blieben..

              Ich denke ein Trigger mit > oder < oder wurde geändert gefolgt von einem falls mit Wertüberprüfung ist die sichere Variante

              R 1 Antwort Letzte Antwort
              0
              • B Benda

                Vielen Dank für eure Anregungen, hab einiges gelernt :)
                Das Script funktioniert nun auch super, ich werde meine finale Version nochmal zur Referenz posten.

                Tatsächlich kam die Endlosschleife durch ein anderes Script zu Stande, welches auf diverse Alexa Routinen triggert (mit ist wahr). Diese Trigger gingen aber scheinbar auch so los, da die Alexa Routinen auf True blieben..

                Ich denke ein Trigger mit > oder < oder wurde geändert gefolgt von einem falls mit Wertüberprüfung ist die sichere Variante

                R Offline
                R Offline
                rj45
                schrieb am zuletzt editiert von
                #7

                @benda und finale Version. thx

                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

                698

                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