Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. BWM Lichtsteuerung mit Helligkeitserkennung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    BWM Lichtsteuerung mit Helligkeitserkennung

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

      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

      Asgothian J 2 Replies Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @chrbo80 last edited by Asgothian

        @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.

        1 Reply Last reply Reply Quote 0
        • J
          Jan1 @chrbo80 last edited by 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

          Asgothian 1 Reply Last reply Reply Quote 1
          • Asgothian
            Asgothian Developer @Jan1 last edited by

            @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 1 Reply Last reply Reply Quote 0
            • J
              Jan1 @Asgothian last edited by

              @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 Reply Quote 0
              • T
                ticaki Developer @Jan1 last edited by 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 1 Reply Last reply Reply Quote 0
                • J
                  Jan1 @ticaki last edited by

                  @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.

                  dslraser 1 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active @Jan1 last edited by

                    @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 Reply Quote 0
                    • J
                      Jan1 @dslraser last edited by

                      @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 😉

                      dslraser 1 Reply Last reply Reply Quote 0
                      • dslraser
                        dslraser Forum Testing Most Active @Jan1 last edited by

                        @Jan1
                        genau

                        J 1 Reply Last reply Reply Quote 0
                        • J
                          Jan1 @dslraser last edited by

                          @dslraser
                          Wenn das keine Rolle spielt und gewünscht ist, passt das 🙂

                          T 1 Reply Last reply Reply Quote 0
                          • T
                            ticaki Developer @Jan1 last edited by 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 1 Reply Last reply Reply Quote 0
                            • J
                              Jan1 @ticaki last edited by

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

                                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 Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                794
                                Online

                                31.8k
                                Users

                                80.0k
                                Topics

                                1.3m
                                Posts

                                blockly
                                5
                                14
                                448
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo