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. BWM Lichtsteuerung mit Helligkeitserkennung

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    621

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

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

BWM Lichtsteuerung mit Helligkeitserkennung

Scheduled Pinned Locked Moved Skripten / Logik
blockly
14 Posts 5 Posters 541 Views 5 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.
  • C chrbo80

    Hallo,

    ich habe bei mir im Treppenhaus 2 BWM von Xiaomi - einen oben an der Treppe, einen unten.

    Folgendes Blockly soll mir das Licht schalten:

    Bildschirmfoto 2020-04-20 um 20.47.13.png

    Erklärung: Ich lasse bei Aktualisierung erstmal einen 100ms timeout laufen, um die Helligkeit zu aktualisieren.

    Wenn dann entweder oben Bewegung und oben der Helligkeitswert unterschritten ist oder das ganze unten, schaltet er das Licht ein und startet einen 20sek-timeout zum Ausschalten. Klappt soweit.

    Nun soll er ja, wenn noch einer (zb meine Tochter), durch einen BWM läuft, den 2. timeout stoppen und neu starten.

    Hier ist vermutlich mein Denkfehler. Ich verstehe, dass das daran liegt, dass er ja erneut die Helligkeit prüft und die größer als der Helligkeitswert der Bedinung (in dem Fall 20) ist. Klar - Licht ist ja an.

    ABER: Was mache ich hier schlauerweise, damit das wie gewollt funktioniert?

    Danke und VG

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

    @chrbo80
    Da gibt es eine einfache Lösung. Da ich im Büro bin nur als "pseudocode".

    Du hast oben

    Falls (((BWM oben ausgelöst = wahr) und (BWM oben dunkel)) oder 
                 ((BWM unten ausgelöst) und (BWM unten dunkel))) mache
      stop timeout2
      steuere Lampe an
      ausführen timeout2 in 20 Sekunden
        steuere Lampe aus
      ende timeout2
    ende Falls
    

    Daraus wird:

    Falls (BWM oben ausgelöst = wahr) oder (BWM unten ausgelöst = wahr) mache
      Falls (BWM oben dunkel oder BWM unten dunkel) mache
        steuere Lampe an
      ende Falls
      stop timeout2
      ausführen timeout2 in 20 sekunden
        steuere Lampe aus
      ende timeout2
    ende Falls
    

    Entscheidend ist das immer wenn die BWM auslösen der innere Bereich abgearbeitet und im Zweifelsfall auch der Timeout verlängert wird. Nur wenn es auch dunkel ist wird die Lampe eingeschaltet.

    Was passieren kann ist das die Lampe öfter mal einen "aus" Befehl bekommt, ohne das sie vorher eingeschaltet wurde. Das sollte aber (hoffentlich) nicht das Problem sein.

    Ich hoffe das ist verständlich so.

    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
    • C chrbo80

      Hallo,

      ich habe bei mir im Treppenhaus 2 BWM von Xiaomi - einen oben an der Treppe, einen unten.

      Folgendes Blockly soll mir das Licht schalten:

      Bildschirmfoto 2020-04-20 um 20.47.13.png

      Erklärung: Ich lasse bei Aktualisierung erstmal einen 100ms timeout laufen, um die Helligkeit zu aktualisieren.

      Wenn dann entweder oben Bewegung und oben der Helligkeitswert unterschritten ist oder das ganze unten, schaltet er das Licht ein und startet einen 20sek-timeout zum Ausschalten. Klappt soweit.

      Nun soll er ja, wenn noch einer (zb meine Tochter), durch einen BWM läuft, den 2. timeout stoppen und neu starten.

      Hier ist vermutlich mein Denkfehler. Ich verstehe, dass das daran liegt, dass er ja erneut die Helligkeit prüft und die größer als der Helligkeitswert der Bedinung (in dem Fall 20) ist. Klar - Licht ist ja an.

      ABER: Was mache ich hier schlauerweise, damit das wie gewollt funktioniert?

      Danke und VG

      J Offline
      J Offline
      Jan1
      wrote on last edited by Jan1
      #3

      @chrbo80
      Da fehlt ein stop timeout direkt vor dem ersten timeout, dann kannst Dir in der ODER dir erneute Abfrage der beiden Trigger sparen, wird ja bereits im Trigger erledigt.

      Den Timeout zur Erkennung dr Helligkeit kannst eigentlich komplett weglassen, da ich die Dinger auch habe und die Erkennung so schnell geht, dass es nicht wirklich nötig ist. Dann haben die Dinger auch eine Verzögerung von 10 Sekunden drin, in der sie keine neue Bewegung erkennen. Die erkannte Bewegung musst auch mit einer Angabe in den DPs wiedr nach einer gewissen Zeit zurück setzten, sonst bleibt das auf true und es funktioniert nur ein mal.

      Hier der DP in rot:
      56c3b68e-4d19-44ec-b095-a470ff8d8e40-grafik.png

      AsgothianA 1 Reply Last reply
      1
      • J Jan1

        @chrbo80
        Da fehlt ein stop timeout direkt vor dem ersten timeout, dann kannst Dir in der ODER dir erneute Abfrage der beiden Trigger sparen, wird ja bereits im Trigger erledigt.

        Den Timeout zur Erkennung dr Helligkeit kannst eigentlich komplett weglassen, da ich die Dinger auch habe und die Erkennung so schnell geht, dass es nicht wirklich nötig ist. Dann haben die Dinger auch eine Verzögerung von 10 Sekunden drin, in der sie keine neue Bewegung erkennen. Die erkannte Bewegung musst auch mit einer Angabe in den DPs wiedr nach einer gewissen Zeit zurück setzten, sonst bleibt das auf true und es funktioniert nur ein mal.

        Hier der DP in rot:
        56c3b68e-4d19-44ec-b095-a470ff8d8e40-grafik.png

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

        @Jan1 sagte in BWM Lichtsteuerung mit Helligkeitserkennung:

        @chrbo80
        Da fehlt ein stop timeout direkt vor dem ersten timeout, dann kannst Dir in der ODER dir erneute Abfrage der beiden Trigger sparen, wird ja bereits im Trigger erledigt.

        Das stimmt so nicht. Die Abfrage der BWM im Falls kann nicht entfallen, da ja auf "ändern" des Datenpunktes getriggert wird, also auch wenn ein BWM von "occupied" auf "unoccupied" geht. Man kann das vereinfachen in dem direkt mit dem "wert" Baustein (Zu finden bei den Trigger Bausteinen, in der Auswahlliste steht meines Wissens "object ID" drin, denn kann man auf "wert" umstellen) der Wert des BWM genommen wird der ausgelöst hat - das ist aber weniger einfach erklärt.
        Ein "stop timeout" ist nicht unbedingt notwendig, da

        • ein einzelner BWM nicht 2 mal innerhalb von 100 ms auslösen kann
        • es unwahrscheinlich ist, das beide BWM innerhalb von 100 ms auslösen. Und selbst wenn das passiert wird schlimmstenfalls die Lampe doppelt eingeschaltet.

        Es ist allerdings guter Stil, grundsätzlich den Timeout zu löschen bevor man den startet.

        Den Timeout zur Erkennung dr Helligkeit kannst eigentlich komplett weglassen, da ich die Dinger auch habe und die Erkennung so schnell geht, dass es nicht wirklich nötig ist. Dann haben die Dinger auch eine Verzögerung von 10 Sekunden drin, in der sie keine neue Bewegung erkennen. Die erkannte Bewegung musst auch mit einer Angabe in den DPs wiedr nach einer gewissen Zeit zurück setzten, sonst bleibt das auf true und es funktioniert nur ein mal.

        Hier der DP in rot:
        56c3b68e-4d19-44ec-b095-a470ff8d8e40-grafik.png

        Das gilt so nur wenn die BWM am Zigbee-Stick hängen. Ist aber aus dem Script oben nicht zu ersehen. Sie können auch am Xiaomi Gateway oder Deconz Gateway hängen. Die Verzögerung bei der Erkennung ist je nach dem wie sie eingebunden sind unterschiedlich - aber immer vorhanden. Ob da die 20 Sekunden ausreichen damit das Licht an bleibt wenn jemand sich im Treppenhaus bewegt weiss ich nicht.

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

        J 1 Reply Last reply
        0
        • AsgothianA Asgothian

          @Jan1 sagte in BWM Lichtsteuerung mit Helligkeitserkennung:

          @chrbo80
          Da fehlt ein stop timeout direkt vor dem ersten timeout, dann kannst Dir in der ODER dir erneute Abfrage der beiden Trigger sparen, wird ja bereits im Trigger erledigt.

          Das stimmt so nicht. Die Abfrage der BWM im Falls kann nicht entfallen, da ja auf "ändern" des Datenpunktes getriggert wird, also auch wenn ein BWM von "occupied" auf "unoccupied" geht. Man kann das vereinfachen in dem direkt mit dem "wert" Baustein (Zu finden bei den Trigger Bausteinen, in der Auswahlliste steht meines Wissens "object ID" drin, denn kann man auf "wert" umstellen) der Wert des BWM genommen wird der ausgelöst hat - das ist aber weniger einfach erklärt.
          Ein "stop timeout" ist nicht unbedingt notwendig, da

          • ein einzelner BWM nicht 2 mal innerhalb von 100 ms auslösen kann
          • es unwahrscheinlich ist, das beide BWM innerhalb von 100 ms auslösen. Und selbst wenn das passiert wird schlimmstenfalls die Lampe doppelt eingeschaltet.

          Es ist allerdings guter Stil, grundsätzlich den Timeout zu löschen bevor man den startet.

          Den Timeout zur Erkennung dr Helligkeit kannst eigentlich komplett weglassen, da ich die Dinger auch habe und die Erkennung so schnell geht, dass es nicht wirklich nötig ist. Dann haben die Dinger auch eine Verzögerung von 10 Sekunden drin, in der sie keine neue Bewegung erkennen. Die erkannte Bewegung musst auch mit einer Angabe in den DPs wiedr nach einer gewissen Zeit zurück setzten, sonst bleibt das auf true und es funktioniert nur ein mal.

          Hier der DP in rot:
          56c3b68e-4d19-44ec-b095-a470ff8d8e40-grafik.png

          Das gilt so nur wenn die BWM am Zigbee-Stick hängen. Ist aber aus dem Script oben nicht zu ersehen. Sie können auch am Xiaomi Gateway oder Deconz Gateway hängen. Die Verzögerung bei der Erkennung ist je nach dem wie sie eingebunden sind unterschiedlich - aber immer vorhanden. Ob da die 20 Sekunden ausreichen damit das Licht an bleibt wenn jemand sich im Treppenhaus bewegt weiss ich nicht.

          J Offline
          J Offline
          Jan1
          wrote on last edited by
          #5

          @Asgothian
          Das mit Wert aus dem Trigger funktioniert doch nur bei einem Trigger, der ein Objekt enthält, ober bezieht sich dann Wert auf jedes Objekt im Trigger? Wobei ich einige Scripte laufen habe, bei denen ich von dem ausgehe was ich oben schon geschrieben habe und der Trigger eben die ODER Auswertung übernimmt. Das läuft bei mir wie gewünscht.
          Der Einwand zum timeout ist gerechtfertigt, es ist sehr unwahrscheinlich, dass der doppelt läuft. Wobei Du ja auch gleich mein Hintergedanken mit in Deiner Antwort drin hast und man sich das am besten einfach so angewöhnt.

          Ja der TE schreibt nicht wie er eingebunden hat, da die verwendeten DP allerdings den entsprechen die ich über Zigbee habe, liegt der Verdacht nahe ;-)

          T 1 Reply Last reply
          0
          • J Jan1

            @Asgothian
            Das mit Wert aus dem Trigger funktioniert doch nur bei einem Trigger, der ein Objekt enthält, ober bezieht sich dann Wert auf jedes Objekt im Trigger? Wobei ich einige Scripte laufen habe, bei denen ich von dem ausgehe was ich oben schon geschrieben habe und der Trigger eben die ODER Auswertung übernimmt. Das läuft bei mir wie gewünscht.
            Der Einwand zum timeout ist gerechtfertigt, es ist sehr unwahrscheinlich, dass der doppelt läuft. Wobei Du ja auch gleich mein Hintergedanken mit in Deiner Antwort drin hast und man sich das am besten einfach so angewöhnt.

            Ja der TE schreibt nicht wie er eingebunden hat, da die verwendeten DP allerdings den entsprechen die ich über Zigbee habe, liegt der Verdacht nahe ;-)

            T Do not disturb
            T Do not disturb
            ticaki
            wrote on last edited by ticaki
            #6

            @Jan1 sagte in BWM Lichtsteuerung mit Helligkeitserkennung:

            @Asgothian
            Das mit Wert aus dem Trigger funktioniert doch nur bei einem Trigger, der ein Objekt enthält, ober bezieht sich dann Wert auf jedes Objekt im Trigger?

            Der Trigger übergibt ein Objekt das zu einem Triggerereignisse die entsprechende ID und die ganzen restlichen Informationen enthält. Also Wert enthält immer den Wert des auslösenden Objektes.

            EDIT: Wert ist keine Verknüpfung der benannten Objekte.

            Zu der Aussage mit den 100ms sag ich nur Murphy :)

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            J 1 Reply Last reply
            0
            • T ticaki

              @Jan1 sagte in BWM Lichtsteuerung mit Helligkeitserkennung:

              @Asgothian
              Das mit Wert aus dem Trigger funktioniert doch nur bei einem Trigger, der ein Objekt enthält, ober bezieht sich dann Wert auf jedes Objekt im Trigger?

              Der Trigger übergibt ein Objekt das zu einem Triggerereignisse die entsprechende ID und die ganzen restlichen Informationen enthält. Also Wert enthält immer den Wert des auslösenden Objektes.

              EDIT: Wert ist keine Verknüpfung der benannten Objekte.

              Zu der Aussage mit den 100ms sag ich nur Murphy :)

              J Offline
              J Offline
              Jan1
              wrote on last edited by
              #7

              @ticaki
              Sehr gute Erklärung und da kann ich doch glatt einige Scripte gleich mal optimieren. Da war ich mir nie sicher, auf welches Objekt (bei mehrfach Trigger), sich nun der Wert bezieht.

              dslraserD 1 Reply Last reply
              0
              • J Jan1

                @ticaki
                Sehr gute Erklärung und da kann ich doch glatt einige Scripte gleich mal optimieren. Da war ich mir nie sicher, auf welches Objekt (bei mehrfach Trigger), sich nun der Wert bezieht.

                dslraserD Offline
                dslraserD Offline
                dslraser
                Forum Testing Most Active
                wrote on last edited by
                #8

                @Jan1 sagte in BWM Lichtsteuerung mit Helligkeitserkennung:

                Da war ich mir nie sicher, auf welches Objekt (bei mehrfach Trigger), sich nun der Wert bezieht.

                Ich dachte auch immer das bei mehreren Triggern "Wert" so nicht funktioniert, jedenfalls wurde das hier im Forum oft so geschrieben. Probiert und geht. Ich habe mal 3 Steckdosen als Trigger genommen und dann nur eine davon eingeschaltet. Wieder was gelernt....

                Bildschirmfoto 2020-04-21 um 10.52.00.png

                21.4.2020, 10:51:07.425	[info ]: javascript.0 (4218) Start javascript script.js.18_Test.Wert
                21.4.2020, 10:51:07.434	[info ]: javascript.0 (4218) script.js.18_Test.Wert: registered 1 subscription and 0 schedules
                21.4.2020, 10:51:23.956	[info ]: javascript.0 (4218) script.js.18_Test.Wert: Name: Tischdeko.STATE Wert: true
                
                J 1 Reply Last reply
                0
                • dslraserD dslraser

                  @Jan1 sagte in BWM Lichtsteuerung mit Helligkeitserkennung:

                  Da war ich mir nie sicher, auf welches Objekt (bei mehrfach Trigger), sich nun der Wert bezieht.

                  Ich dachte auch immer das bei mehreren Triggern "Wert" so nicht funktioniert, jedenfalls wurde das hier im Forum oft so geschrieben. Probiert und geht. Ich habe mal 3 Steckdosen als Trigger genommen und dann nur eine davon eingeschaltet. Wieder was gelernt....

                  Bildschirmfoto 2020-04-21 um 10.52.00.png

                  21.4.2020, 10:51:07.425	[info ]: javascript.0 (4218) Start javascript script.js.18_Test.Wert
                  21.4.2020, 10:51:07.434	[info ]: javascript.0 (4218) script.js.18_Test.Wert: registered 1 subscription and 0 schedules
                  21.4.2020, 10:51:23.956	[info ]: javascript.0 (4218) script.js.18_Test.Wert: Name: Tischdeko.STATE Wert: true
                  
                  J Offline
                  J Offline
                  Jan1
                  wrote on last edited by
                  #9

                  @dslraser
                  Bisschen aufpassen muss man aber schon, da wenn eine andere ausgeht, wird alles ausgeschaltet, da nur der geänderte Wert der Trigger ist und wenn die andern noch auf true stehen, wird eben trotzdem ausgeschaltet. Ist doch nicht ganz so einfach und wie oben schon geschrieben wurde, ist der Trigger an sich nicht wirklich eine ODER Funktion, da der Rest nicht berücksichtigt wird, sondern eben nur das Objekt welches sich ändert ;-)

                  dslraserD 1 Reply Last reply
                  0
                  • J Jan1

                    @dslraser
                    Bisschen aufpassen muss man aber schon, da wenn eine andere ausgeht, wird alles ausgeschaltet, da nur der geänderte Wert der Trigger ist und wenn die andern noch auf true stehen, wird eben trotzdem ausgeschaltet. Ist doch nicht ganz so einfach und wie oben schon geschrieben wurde, ist der Trigger an sich nicht wirklich eine ODER Funktion, da der Rest nicht berücksichtigt wird, sondern eben nur das Objekt welches sich ändert ;-)

                    dslraserD Offline
                    dslraserD Offline
                    dslraser
                    Forum Testing Most Active
                    wrote on last edited by
                    #10

                    @Jan1
                    genau

                    J 1 Reply Last reply
                    0
                    • dslraserD dslraser

                      @Jan1
                      genau

                      J Offline
                      J Offline
                      Jan1
                      wrote on last edited by
                      #11

                      @dslraser
                      Wenn das keine Rolle spielt und gewünscht ist, passt das :-)

                      T 1 Reply Last reply
                      0
                      • J Jan1

                        @dslraser
                        Wenn das keine Rolle spielt und gewünscht ist, passt das :-)

                        T Do not disturb
                        T Do not disturb
                        ticaki
                        wrote on last edited by ticaki
                        #12

                        @Jan1
                        Eine ODER/UND Verknüpfung zu erzeugen ist relativ einfach möglich. Einen Zähler der beim Start initialisiert wird in dem jedes True eines Datenpunktes den Zähler erhöht und im Falls Block (geändert) wird dieser Zähler erhöht oder verringert wenn sie eine Objekt verändert.
                        Zähler > 0 -> ODER
                        Zähler == Anzahl Objekte -> UND

                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                        Spenden

                        J 1 Reply Last reply
                        0
                        • T ticaki

                          @Jan1
                          Eine ODER/UND Verknüpfung zu erzeugen ist relativ einfach möglich. Einen Zähler der beim Start initialisiert wird in dem jedes True eines Datenpunktes den Zähler erhöht und im Falls Block (geändert) wird dieser Zähler erhöht oder verringert wenn sie eine Objekt verändert.
                          Zähler > 0 -> ODER
                          Zähler == Anzahl Objekte -> UND

                          J Offline
                          J Offline
                          Jan1
                          wrote on last edited by
                          #13

                          @ticaki
                          Ja, aber noch einfacher ist es eben ein FALLS mit UND/ODER Block dran zu hängen. Es ging jetzt etwas OT um die genaue Funktionsweise des "multi" Trigger und das ist nun geklärt.

                          1 Reply Last reply
                          0
                          • C Offline
                            C Offline
                            chrbo80
                            wrote on last edited by
                            #14

                            hi, Danke für Eure Hilfe. Ich komme klar :-) Zu Eurer Info: Ich habe die BWM über zigbee eingebunden, sie sind gelötet und stehen auf "occupancy timeout: 5 sek". Das klappt auch, heißt nach 5 Sekunden ist true wieder auf false...

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            302

                            Online

                            32.7k

                            Users

                            82.6k

                            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