Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Tutorial] Xiaomi BWM HW Hack / 120s -> 5s Takt

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Tutorial] Xiaomi BWM HW Hack / 120s -> 5s Takt

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

      Eben meine 2 Sensoren optimiert und er triggert wie versprochen alle 5 Sekunden!
      Perfekt, so kann ich mein Licht in der Küche und Flur optimal auf Bewegungen steuern.
      So ist der Sensor für sein Geld mehr als unschlagbar!

      1 Reply Last reply Reply Quote 0
      • MartinK.
        MartinK. @ide10 last edited by

        @ide10 Hallo, ich habe noch eine kurze Frage... kann ich auch den Wert "Presense" anstatt "LastMotion" nutzen in dem Skript? Last Motion wird mir beim Aquara leider mit dem deConz Adapter nicht angezeigt 😉

        Opera Momentaufnahme_2019-11-20_122110_192.168.1.100.png

        1 Reply Last reply Reply Quote 0
        • I
          ide10 last edited by ide10

          @TDCroPower sagte in [Tutorial] Xiaomi BWM HW Hack / 120s -> 5s Takt:

          Eben meine 2 Sensoren optimiert und er triggert wie versprochen alle 5 Sekunden!
          Perfekt, so kann ich mein Licht in der Küche und Flur optimal auf Bewegungen steuern.
          So ist der Sensor für sein Geld mehr als unschlagbar!

          Der Hack funktionierte bei mir auch tadellos. Bin jetzt aber auf ein cc2531 zigbee2mqtt mit dem Zigbee ioBroker Adapter umgestiegen. So bin ich auch sicher wenn das Wlan mal nicht präsent sein sollte. Triggert dort auch im 5sek Takt.
          Und ja, die Motion Sensoren sind für Ihren Preis, sollte man sie um 10€ erworben haben, echt klasse.

          @MartinK sagte in [Tutorial] Xiaomi BWM HW Hack / 120s -> 5s Takt:

          @ide10 Hallo, ich habe noch eine kurze Frage... kann ich auch den Wert "Presense" anstatt "LastMotion" nutzen in dem Skript? Last Motion wird mir beim Aquara leider mit dem deConz Adapter nicht angezeigt 😉

          Opera Momentaufnahme_2019-11-20_122110_192.168.1.100.png

          Da ich kein deConz nutze kann ich nicht sagen welcher Datenpunkt bei der Bewegungserkennung aktualisiert wird. Aber sollte es "presense" sein, kann "LastMotion" einfach durch diesen ausgetauscht werden.

          1 Reply Last reply Reply Quote 0
          • T
            TDCroPower last edited by TDCroPower

            Ich konnte soeben ebenfalls meine erste Skriptlogik mit dem Bewegungssensor erstellen.
            Der Bewegungssensor hängt in der Küche und steuert einen Xiaomi Yeelight Strip der als Passivbeleuchtung unter den Hängeschränken befestigt wurde.
            Die Steuerung des Bewegungslicht (Helligkeit auf 20%) soll nur ausgeführt werden falls der Sensor einen true wert hat UND der Nachtcheck (Skript ändert ein Datenpunkt auf true/false falls es Nacht ist).
            Falls der Sensor ODER der Nachtcheck auf false stehen wird das Licht ausgeschaltet oder bleibt bei false.
            Zusätzlich wird geprüft, ob das Licht über den Taster eingeschaltet wurde mit der Helligkeit 60% dann soll das Skript nichts verändern da dies vom Benutzer selbst gesteuert werden soll.
            Einen Timeout benötige ich nicht, da der Sensor erst nach ca. 60 Sekunden auf false stellt und dies wäre auch meine Timeout Zeit gewesen.

            blockyscript.png

            Blocky export

            <xml xmlns="http://www.w3.org/1999/xhtml">
             <block type="on" id="u;;D50`#m*Z;%2.Ey?nD" x="63" y="-112">
               <field name="OID">zigbee.0.00158d00027186b5.occupancy</field>
               <field name="CONDITION">ne</field>
               <field name="ACK_CONDITION"></field>
               <statement name="STATEMENT">
                 <block type="comment" id="0Uq*WE2I^QkX5J[9Tk^e">
                   <field name="COMMENT">Yeelight ausschalten</field>
                   <next>
                     <block type="controls_if" id="_@z*T/e|S/KN!,KJn=LU">
                       <value name="IF0">
                         <block type="logic_operation" id="es4%P{bZFp0oBj^(RT](" inline="false">
                           <field name="OP">AND</field>
                           <value name="A">
                             <block type="logic_operation" id="J()`x(SC,p.1Sif=:8r2" inline="false">
                               <field name="OP">OR</field>
                               <value name="A">
                                 <block type="logic_compare" id="vt:?LC/_@%@`1=uB$ZGr">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="get_value" id=";%cDPA;(uQab3M53HUq4">
                                       <field name="ATTR">val</field>
                                       <field name="OID">zigbee.0.00158d00027186b5.occupancy</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="logic_boolean" id="L5pF[:L)sNE4De5a?RUf">
                                       <field name="BOOL">FALSE</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <value name="B">
                                 <block type="logic_compare" id="P}`JBjN3xcW:G+q`SpPl">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="get_value" id="lcJiDjY*!,[81k0A9S*%">
                                       <field name="ATTR">val</field>
                                       <field name="OID">javascript.0.Nachtcheck</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="logic_boolean" id="7,F}%3uG#Bi:uD%p]%}o">
                                       <field name="BOOL">FALSE</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <value name="B">
                             <block type="logic_operation" id="5R;-_E0qbF{-P:fsEle|" inline="false">
                               <field name="OP">AND</field>
                               <value name="A">
                                 <block type="logic_compare" id="a?%csg{Q=HCYTj`Pz8bI">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="get_value" id="/h=FO?g#/F?[bBf.L)(|">
                                       <field name="ATTR">val</field>
                                       <field name="OID">yeelight-2.0.Yeelight_Strip2.control.power</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="logic_boolean" id="BxK3s@LjWX^y]`G:veh/">
                                       <field name="BOOL">TRUE</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <value name="B">
                                 <block type="logic_compare" id="Tz:Ik|BQ0SgGPHR[638x">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="get_value" id="X~P]s}bpE7zddhl8:jZs">
                                       <field name="ATTR">val</field>
                                       <field name="OID">yeelight-2.0.Yeelight_Strip2.control.active_bright</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="math_number" id="~jcDT5mM?PqnP6)I?nYL">
                                       <field name="NUM">20</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </value>
                       <statement name="DO0">
                         <block type="control" id="7Y;9Y2Z_rMOf1sdc}10y">
                           <mutation delay_input="true"></mutation>
                           <field name="OID">yeelight-2.0.Yeelight_Strip2.control.power</field>
                           <field name="WITH_DELAY">TRUE</field>
                           <field name="DELAY_MS">2</field>
                           <field name="UNIT">ms</field>
                           <field name="CLEAR_RUNNING">FALSE</field>
                           <value name="VALUE">
                             <block type="logic_boolean" id="ZEePuUdX9,I0rWdANKfB">
                               <field name="BOOL">FALSE</field>
                             </block>
                           </value>
                           <next>
                             <block type="control" id="V4D*HfMu)AjqJ/h;e+O`">
                               <mutation delay_input="true"></mutation>
                               <field name="OID">yeelight-2.0.Yeelight_Strip2.control.active_bright</field>
                               <field name="WITH_DELAY">TRUE</field>
                               <field name="DELAY_MS">2</field>
                               <field name="UNIT">ms</field>
                               <field name="CLEAR_RUNNING">FALSE</field>
                               <value name="VALUE">
                                 <block type="math_number" id="c)K.DF3w5!OUe)Xi/[Qf">
                                   <field name="NUM">60</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="control" id="/*XempP2[b*B;ijyl{Jf">
                                   <mutation delay_input="false"></mutation>
                                   <field name="OID">yeelight-2.0.Yeelight_Strip2.control.ct</field>
                                   <field name="WITH_DELAY">FALSE</field>
                                   <value name="VALUE">
                                     <block type="math_number" id="J7+GMogy]k3nL!k_)IuD">
                                       <field name="NUM">5000</field>
                                     </block>
                                   </value>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </statement>
                       <next>
                         <block type="comment" id="Og0Rb,EQwNceqy4aW0AW">
                           <field name="COMMENT">Yeelight einschalten</field>
                           <next>
                             <block type="controls_if" id="%U{[fwxDo~MPOY2evjWi">
                               <value name="IF0">
                                 <block type="logic_operation" id="Z@|`xW,SsI[KtM/aw=6Y" inline="false">
                                   <field name="OP">AND</field>
                                   <value name="A">
                                     <block type="logic_operation" id="Kxn,vc`D0%7jZ29rkZwT" inline="false">
                                       <field name="OP">AND</field>
                                       <value name="A">
                                         <block type="logic_compare" id="#T4*}x8:1E^hSL/ZmV}D">
                                           <field name="OP">EQ</field>
                                           <value name="A">
                                             <block type="get_value" id="HSwI@KStQ==u;ZT1?:eb">
                                               <field name="ATTR">val</field>
                                               <field name="OID">zigbee.0.00158d00027186b5.occupancy</field>
                                             </block>
                                           </value>
                                           <value name="B">
                                             <block type="logic_boolean" id="q!L~mGG^;,8huasfu6na">
                                               <field name="BOOL">TRUE</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <value name="B">
                                         <block type="logic_compare" id="IiRd`UdKQmR!0WjiBF:4">
                                           <field name="OP">EQ</field>
                                           <value name="A">
                                             <block type="get_value" id="?=8cgZPIF6Mp|btvHoKz">
                                               <field name="ATTR">val</field>
                                               <field name="OID">javascript.0.Nachtcheck</field>
                                             </block>
                                           </value>
                                           <value name="B">
                                             <block type="logic_boolean" id="LnM1Ey)v6`ib{7v~QqIw">
                                               <field name="BOOL">TRUE</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="logic_operation" id="3;s6Tvupap:NWIh9MRU!" inline="false">
                                       <field name="OP">AND</field>
                                       <value name="A">
                                         <block type="logic_compare" id="plJASNU^4lRK+240KtxF">
                                           <field name="OP">EQ</field>
                                           <value name="A">
                                             <block type="get_value" id="X`K6a#5RiI@EnHQ(JNM{">
                                               <field name="ATTR">val</field>
                                               <field name="OID">yeelight-2.0.Yeelight_Strip2.control.power</field>
                                             </block>
                                           </value>
                                           <value name="B">
                                             <block type="logic_boolean" id="pY$lNcCL)FS0NZXwq(Pp">
                                               <field name="BOOL">FALSE</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <value name="B">
                                         <block type="logic_compare" id="B9$Kr,`P+6-v(+9=8{Iz">
                                           <field name="OP">EQ</field>
                                           <value name="A">
                                             <block type="get_value" id="S7gMpMD%,Jp@zDC_x!Fx">
                                               <field name="ATTR">val</field>
                                               <field name="OID">yeelight-2.0.Yeelight_Strip2.control.active_bright</field>
                                             </block>
                                           </value>
                                           <value name="B">
                                             <block type="math_number" id="6XC1n`/[5U.p{4?yyrFC">
                                               <field name="NUM">60</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <statement name="DO0">
                                 <block type="control" id="}s*jh]Jc8(CiJ#n:lFns">
                                   <mutation delay_input="true"></mutation>
                                   <field name="OID">yeelight-2.0.Yeelight_Strip2.control.active_bright</field>
                                   <field name="WITH_DELAY">TRUE</field>
                                   <field name="DELAY_MS">2</field>
                                   <field name="UNIT">ms</field>
                                   <field name="CLEAR_RUNNING">FALSE</field>
                                   <value name="VALUE">
                                     <block type="math_number" id="B8vYU|zEyn1:C{%@%Afw">
                                       <field name="NUM">20</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="control" id="|?c-#]GeF!Q%9v5(:`z;">
                                       <mutation delay_input="true"></mutation>
                                       <field name="OID">yeelight-2.0.Yeelight_Strip2.control.ct</field>
                                       <field name="WITH_DELAY">TRUE</field>
                                       <field name="DELAY_MS">2</field>
                                       <field name="UNIT">ms</field>
                                       <field name="CLEAR_RUNNING">FALSE</field>
                                       <value name="VALUE">
                                         <block type="math_number" id="`j%8(D7V5e(Xi/5!O4jm">
                                           <field name="NUM">5000</field>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="control" id="84Gc(]CVJMbIJ?wZ![a/">
                                           <mutation delay_input="false"></mutation>
                                           <field name="OID">yeelight-2.0.Yeelight_Strip2.control.power</field>
                                           <field name="WITH_DELAY">FALSE</field>
                                           <value name="VALUE">
                                             <block type="logic_boolean" id="LmB+bfCyl5B)M0BX)v?#">
                                               <field name="BOOL">TRUE</field>
                                             </block>
                                           </value>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </statement>
             </block>
            </xml>
            

            Hier noch Screenshots der Objekte um das Verhalten besser zu verstehen...
            Yeelight LED Strip
            yeelightstrip_objekte.png

            Xiaomi Bewegungssensor
            bewegungssensor_objekte.png

            1 Reply Last reply Reply Quote 0
            • H
              hene42 last edited by hene42

              Hallo, ich habe vor einiger Zeit einen BM umgebaut dieser funktioniert so super, jetzt habe ich noch zwei versucht umzubauen, die senden jetzt alle 5 Sekunden ohne Unterbrechung auch wenn keine Bewegung stattfindet.
              Habe ich jetzt etwas verkehrt gemacht oder geht das mit neueren Sensoren nicht mehr?

              Danke
              Henri

              P.S.: hat sich wahrscheinlich erledigt, nach einigen Minuten hat es aufgehört.... seltsam....

              1 Reply Last reply Reply Quote 0
              • haselchen
                haselchen Most Active last edited by haselchen

                Ist dieser Hack nur Hardwareseitig möglich?
                Kann man keinen z.B. curl Befehl absetzen um den Intervall herunterzusetzen?
                Beim Vibrationssensor von Xiaomi kann man feste Werte per Curl Befehl ändern.
                Hintergrund der Frage ist, dass ich nicht löten kann und in meiner Umgebung auch niemanden habe.

                Neuschwansteini 1 Reply Last reply Reply Quote 0
                • MartinK.
                  MartinK. last edited by MartinK.

                  Was auch noch ganz interessant wäre zu wissen, wie sich das 5 Sek. triggern auf die Standzeit der Batterie auswirkt ? 😉 ... Aber sonst finde ich das Projekt prima ! 🙂 👍

                  1 Reply Last reply Reply Quote 0
                  • Neuschwansteini
                    Neuschwansteini @haselchen last edited by

                    @haselchen welcher Curl Befehl ist das denn? (vibrationssensor)
                    Den kann man ja auch in der App mit der Empfindlichkeit einstellen.

                    Für den Motion wäre das natürlich super. Brauch da keine 5 sek - das ist schon zu oft. Aber 180 sind zuviel 🙂

                    haselchen 1 Reply Last reply Reply Quote 0
                    • haselchen
                      haselchen Most Active @Neuschwansteini last edited by haselchen

                      @ilovegym

                      Warte . Such dir den Thread mal raus.
                      https://forum.iobroker.net/topic/26118/conbee-2-kompatibilität/18

                      Da habe ich es beschrieben.

                      1 Reply Last reply Reply Quote 0
                      • C
                        CruziX last edited by

                        Habe das auch mit dem BWM in der Küche gemacht. Wobei ich deinen ersten timeout nicht verstehe ^^

                        Bei mir kann der BWM auch nach 5 Sek wieder Bewegung erkennen, aber man muss doch nur dern DP auf aktualisiert und ist wahr prüfen, wenn er dann auf false gesetzt wird, sollte das ja nicht triggern. Bzw. ich mache das so:
                        Ich setze dann abhängig von anderen Bedingungen einen variablen timeout und setze beim Ablauf den DP selbst auf false. So kann ich selbst steuern, wann Bewegung wieder erkannt wird. Wenn der BWM es selbst macht ist das auch in Ordnung. Ging mir an sich auch nur darum, dass nicht alle 5 Sek der Trigger durchlaufen wird

                        F 1 Reply Last reply Reply Quote 0
                        • F
                          funboxbolzer @CruziX last edited by

                          Bei mir kann der BWM auch nach 5 Sek wieder Bewegung erkennen, aber man muss doch nur dern DP auf aktualisiert und ist wahr prüfen, wenn er dann auf false gesetzt wird, sollte das ja nicht triggern. Bzw. ich mache das so:
                          Ich setze dann abhängig von anderen Bedingungen einen variablen timeout und setze beim Ablauf den DP selbst auf false. So kann ich selbst steuern, wann Bewegung wieder erkannt wird. Wenn der BWM es selbst macht ist das auch in Ordnung. Ging mir an sich auch nur darum, dass nicht alle 5 Sek der Trigger durchlaufen wird

                          Welchen datenpunkt setzt du wie zurück?
                          Bin auch gerade am Bewegungsmelder einstellen 😉
                          Gruß Klaus

                          C 1 Reply Last reply Reply Quote 0
                          • C
                            CruziX @funboxbolzer last edited by CruziX

                            @agent2408icloud-com Ich habe im adpter ordner von deconz das Objekt presence beschreibbar gemacht.
                            Wenn nun das Objekt auf true wechselt mache ich was und lasse nach einem Timeout (z.B. 30 Sekunden) den Datenpunkt wieder auf false setzen um den Trigger sozusagen wieder scharf zu schalten.

                            haselchen 1 Reply Last reply Reply Quote 0
                            • haselchen
                              haselchen Most Active @CruziX last edited by haselchen

                              @CruziX
                              @agent2408icloud-com

                              Nicht das manche es falsch verstehen.
                              Der Datenpunkt wird nach Zeit X wieder auf false (manuell) gestellt.
                              Bewegung wird trotzdem erst nach 60/90Sek wieder erkannt.

                              F C 2 Replies Last reply Reply Quote 1
                              • F
                                funboxbolzer @haselchen last edited by

                                @haselchen
                                vielen Dank. Diese Info hilft mir doch enorm weiter. Da kann ich meine Schaltzeiten dementsprechend anpassen.
                                Vielen Dank.
                                Gruß Klaus

                                1 Reply Last reply Reply Quote 0
                                • C
                                  CruziX @haselchen last edited by

                                  @haselchen die Bewegung wird bereits nach 5 Sekunden wieder erkannt. Nur dass ich mit einem eigenen Timer erst nach 30 Sekunden wieder darauf reagiere

                                  haselchen 1 Reply Last reply Reply Quote 0
                                  • haselchen
                                    haselchen Most Active @CruziX last edited by

                                    @CruziX

                                    Der Aqara Bewegungsmelder?
                                    In den ersten 2 Stunden reagiert er sofort auf Bewegung nach dem Anlernen.
                                    Danach steigert sich die Zeit auf 60bis90 Sekunden bis er wieder auf true geht.

                                    C 1 Reply Last reply Reply Quote 0
                                    • C
                                      CruziX @haselchen last edited by

                                      @haselchen bin ein wenig verwirrt. Dafür ist doch dieser "Hack"? Nachdem man den so durchgeführt hat, wird nach 5 sekunden bereits wieder bewegung erkannt.
                                      In phoscon sieht man es allerdings nicht, da hardwaretechnisch nach ~60 sek. false zurückgemeldet wird. In iobroker sieht man aber, dass ich nach 5 sek. der Wert bei Bewegung wieder mit true aktualisiert. Deswegen setzte ich den Wert selber auf false um besser darauf triggern zu können

                                      haselchen 1 Reply Last reply Reply Quote 0
                                      • haselchen
                                        haselchen Most Active @CruziX last edited by

                                        @CruziX

                                        Ach so. Das meinst Du. Ja, der Hardware Hack ändert das.
                                        Sorry. Bin gedanklich falsch abgebogen.

                                        1 Reply Last reply Reply Quote 0
                                        • V
                                          vikk88 last edited by

                                          Vielen Dank für diese Anleitung. Es hat mich so genervt, dass ich unser Flurlicht nachts immer 60 Sekunden lang brennen lassen musste. Habe mein BM jetzt gelötet und hoffe das es soweit geklappt hat✊

                                          1 Reply Last reply Reply Quote 0
                                          • J
                                            JensLangen last edited by

                                            Funktioniert prima.
                                            Eine kleine Ergänzung bei der Verwendung des ZigBee-Adapters:
                                            Hier muss - zumindest bei mir der Wert unter zigbee.x......occupancy_timeout auch auf 5 gesetzt werden. Dann klappt es.

                                            T 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            750
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter aqara bewegungsmelder hardware hack xiaomi
                                            36
                                            158
                                            23686
                                            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