Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly: Garagentor automatisch schließen lassen

    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

    Blockly: Garagentor automatisch schließen lassen

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

      Hallo!

      Ich steige gerade erst wieder in ioBroker ein und versuche mich an einem Blockly Script welches mein Garagentor nach einer Zeit X schließt, wenn man (Frau) es selbst vergessen hat.

      Hierzu habe ich einen Homematic Garagentorantrieb mit Lichtschranke und einen Bewegungsmelder. Meine bisherige Logik war wie folgt: Sobald eine Statusänderung am Bewegungsmelder erfolgt wird geprüft: 1. Ist der Dummyschalter für die Schließautomatik an, 2. Ist das Garagentor nicht geschlossen, 3. Ist in der Garage keiner anwesend (keine Bewegung).

      Wenn das eintritt und sich binnen 4 Minuten nichts ändert, soll das Tor geschlossen werden.

      Jetzt ist es aber so, dass wenn alle Bedingungen erfüllt sind zwar der Impuls kommt das Tor zu schließen. Wenn allerdings innerhalb dieser 4 Minuten doch jemand wieder die Garage betritt, wird der Timer nicht zurück gesetzt sondern trotzdem das Tor runtergefahren, zumindest für 10% und stoppt dann.
      Wo ist mein Fehler? Danke euch vorab!!

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable type="timeout" id="timeout">timeout</variable>
        </variables>
        <block type="on_ext" id="Rc,RDdc5.6wG*^S365kb" x="63" y="213">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">any</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="8hnUfm/?(yNLdqZYZioq">
              <field name="oid">hm-rpc.1.000920C99B440F.1.MOTION</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="Mn:.=S/[gc[Thv5A|uXj">
              <value name="IF0">
                <block type="logic_multi_and" id="bfL7b$l[:-;i~hIrK|wL">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" items="3"></mutation>
                  <value name="AND0">
                    <block type="logic_compare" id="*W{+nK5#|V!oF:.8L*s+">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="get_value" id="[r~|BdaEIVXhiu6{JM5X">
                          <field name="ATTR">val</field>
                          <field name="OID">0_userdata.0.Garage_Autoclose</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_boolean" id="q=1%9$-8B}Z0U8%28k#)">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <value name="AND1">
                    <block type="logic_compare" id="Qq5B,Q|db2el8:aKjBWq">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="get_value" id="nx62AQcvUCmy#c@$Asax">
                          <field name="ATTR">val</field>
                          <field name="OID">hm-rpc.1.000920C99B440F.1.MOTION</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_boolean" id="e1x]U3dj#0ZIAq`Xk+Gd">
                          <field name="BOOL">FALSE</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <value name="AND2">
                    <block type="logic_compare" id="_7d#`#s};ypO29N9upu6">
                      <field name="OP">NEQ</field>
                      <value name="A">
                        <block type="get_value" id="mS]!-(O0uD9,u}`A#`td">
                          <field name="ATTR">val</field>
                          <field name="OID">hm-rpc.1.002420C995C575.1.DOOR_STATE</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="math_number" id="BV9G(8uj+VE?A.^me=a5">
                          <field name="NUM">0</field>
                        </block>
                      </value>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="comment" id="JQ!5`+_8gzc?@iT^Mi|C">
                  <field name="COMMENT">Nach 6 min ohne Bewegung automatisch schließen</field>
                  <next>
                    <block type="comment" id="BP05f8xMWyF:n[eD!g7H">
                      <field name="COMMENT">2 min davon vorgegeben vom Bewegungsmelder</field>
                      <next>
                        <block type="timeouts_settimeout" id="w?3#}$|H,rD_$OA}6lO=">
                          <field name="NAME">timeout</field>
                          <field name="DELAY">4</field>
                          <field name="UNIT">min</field>
                          <statement name="STATEMENT">
                            <block type="control" id="eyPVpw@h|Otg_5=%p_iG">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">hm-rpc.1.002420C995C575.1.DOOR_COMMAND</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                                <block type="math_number" id="5O?]J$QiwJydKxtg5!`Q">
                                  <field name="NUM">3</field>
                                </block>
                              </value>
                            </block>
                          </statement>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
        <block type="logic_multi_and" id="maR8$Fi].Y#DT)cpqr?b" x="261" y="396">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
        </block>
      </xml>
      

      Bildschirmfoto 2024-07-10 um 20.40.30.png

      Hier der aktuelle Link zum fertigen Script

      DJMarc75 BananaJoe 2 Replies Last reply Reply Quote 0
      • DJMarc75
        DJMarc75 @LastActionHero last edited by

        @lastactionhero mach mal in Deinem Blockly diesen Block bitte weg

        Screenshot 2024-07-10 204328.png

        1 Reply Last reply Reply Quote 0
        • BananaJoe
          BananaJoe Most Active @LastActionHero last edited by

          @lastactionhero und du müsstest eine "stop timeout" Zeile einbauen bevor du den Timeout auslöst
          Wird das ganze dann noch mal angetriggert, kann es so den zuvor gestarteten , ja noch laufenden timeout beenden.

          Ich nehme hoffentlich richtig an das dieser dann nicht ausgeführt wird

          L 1 Reply Last reply Reply Quote 0
          • L
            LastActionHero @BananaJoe last edited by LastActionHero

            Hab ich gemacht, danke schonmal für den wertvollen Input! Jetzt passiert nichtsmehr. Tor geht garnicht mehr runter...

            Bildschirmfoto 2024-07-10 um 21.38.50.png

            wobei ich grade sehe, dass der stop timeout VOR den anderen muss. Das muss ich aber morgen weiter testen...

            BananaJoe 1 Reply Last reply Reply Quote 0
            • BananaJoe
              BananaJoe Most Active @LastActionHero last edited by

              @lastactionhero den stop timeout_garagentor direkt über Ausführen timeout .. setzen, nicht in den sonst zweig

              L 1 Reply Last reply Reply Quote 0
              • L
                LastActionHero @BananaJoe last edited by LastActionHero

                hab ich eben auch schon festgestellt, allerdings, was passiert damit, wenn nun der timeout schon ausgelöst wurde, und wieder einer in die Garage rennt? Die Bedingung für den Stop-Timeout sind damit ja nicht erfüllt (Dummy ist an, Garage ist nicht zu, aber motion true) damit kommt es nicht zum stop-timeout.
                Bildschirmfoto 2024-07-10 um 21.47.53.png

                Heißt man müsste noch eine zweite Falls Verknüpfung machen mit Motion True und auch einen Stop-Timeout da rein packen?

                BananaJoe 1 Reply Last reply Reply Quote 0
                • BananaJoe
                  BananaJoe Most Active @LastActionHero last edited by

                  @lastactionhero sagte in Blockly: Garagentor automatisch schließen lassen:

                  Heißt man müsste noch eine zweite Falls Verknüpfung machen mit Motion True und auch einen Stop-Timeout da rein packen?

                  ich denke ja. Dann müsste man aber noch mal über den Auslöser nachdenken. Hat der Bewegungsmelder einen Status "Bewegung erkannt" und "Jetzt ist wieder ruhig" ? Sieht so aus als wäre das wahr und falsch

                  Dann einfach in den sonst-zweig.
                  Besser wäre "wenn falsch dann Timer anlaufen lassen" und "wenn wahr, timer stoppen"

                  L 1 Reply Last reply Reply Quote 0
                  • L
                    LastActionHero @BananaJoe last edited by

                    Ja, der Melder hat nur Motion: true/false
                    Aber, müsste es nicht auch so gehen?
                    Sobald der Melder seinen Status ändert, in was auch immer, wird der Timer gestoppt. Solange Bewegung oder eben keine Bewegung erkannt wird, bleibt der Status identisch. Ist Motion true wird keine Bedingung für einen neuen Timer erfüllt, aber der alte in jedem Fall gestoppt. Ist Motion dann false, sind alle 3 Bedingungen erfüllt und ein neuer Timer wird gestartet, der dann auch durchläuft, wenn Motion false bleibt und sich nicht ändert? Teste ich morgen früh!

                    Bildschirmfoto 2024-07-10 um 22.28.19.png

                    BananaJoe 1 Reply Last reply Reply Quote 0
                    • BananaJoe
                      BananaJoe Most Active @LastActionHero last edited by

                      @lastactionhero genau, probiere einfach aus.
                      Ansonsten bau die Debug-Meldungen ein, dann kannst du im Log sehen was dein Skript macht, wo es steht.

                      L 1 Reply Last reply Reply Quote 0
                      • L
                        LastActionHero @BananaJoe last edited by

                        @bananajoe scheint nun zu funktionieren, danke für die Hilfe! Ich beobachte das Verhalten nun noch ein paar Tage, dann kann ich den Export noch oben reinstellen für diejenigen, die auch nach sowas suchen! Danke!

                        L 1 Reply Last reply Reply Quote 0
                        • L
                          LastActionHero @LastActionHero last edited by

                          @lastactionhero

                          nach nun 2 Wochen testen habe ich das Script noch um den Fall erweitert, dass bspw. bei Dunkelheit oder Dämmerung der Bewegungssensor gar keine Bewegung bei Öffnung des Tores erkannt hat. Damit funktioniert das Script ziemlich gut! Für alle, die es kopieren wollen, hier der Export:

                          <xml xmlns="https://developers.google.com/blockly/xml">
                            <variables>
                              <variable type="timeout" id="timeout_garagentor">timeout_garagentor</variable>
                            </variables>
                            <block type="on_ext" id="Rc,RDdc5.6wG*^S365kb" x="63" y="213">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
                              <field name="CONDITION">any</field>
                              <field name="ACK_CONDITION"></field>
                              <value name="OID0">
                                <shadow type="field_oid" id="8hnUfm/?(yNLdqZYZioq">
                                  <field name="oid">hm-rpc.1.000920C99B440F.1.MOTION</field>
                                </shadow>
                              </value>
                              <value name="OID1">
                                <shadow type="field_oid" id="8AnIbRH(B2Z0mq*E[{%[">
                                  <field name="oid">hm-rpc.1.002420C995C575.1.DOOR_STATE</field>
                                </shadow>
                              </value>
                              <statement name="STATEMENT">
                                <block type="timeouts_cleartimeout" id="T?qf2^:iUp,w(UT*ZQz;">
                                  <field name="NAME">timeout_garagentor</field>
                                  <next>
                                    <block type="controls_if" id="Mn:.=S/[gc[Thv5A|uXj">
                                      <value name="IF0">
                                        <block type="logic_multi_and" id="bfL7b$l[:-;i~hIrK|wL">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" items="3"></mutation>
                                          <value name="AND0">
                                            <block type="logic_compare" id="*W{+nK5#|V!oF:.8L*s+">
                                              <field name="OP">EQ</field>
                                              <value name="A">
                                                <block type="get_value" id="[r~|BdaEIVXhiu6{JM5X">
                                                  <field name="ATTR">val</field>
                                                  <field name="OID">0_userdata.0.Garage_Autoclose</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <block type="logic_boolean" id="q=1%9$-8B}Z0U8%28k#)">
                                                  <field name="BOOL">TRUE</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <value name="AND1">
                                            <block type="logic_compare" id="Qq5B,Q|db2el8:aKjBWq">
                                              <field name="OP">EQ</field>
                                              <value name="A">
                                                <block type="get_value" id="nx62AQcvUCmy#c@$Asax">
                                                  <field name="ATTR">val</field>
                                                  <field name="OID">hm-rpc.1.000920C99B440F.1.MOTION</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <block type="logic_boolean" id="e1x]U3dj#0ZIAq`Xk+Gd">
                                                  <field name="BOOL">FALSE</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <value name="AND2">
                                            <block type="logic_compare" id="_7d#`#s};ypO29N9upu6">
                                              <field name="OP">NEQ</field>
                                              <value name="A">
                                                <block type="get_value" id="mS]!-(O0uD9,u}`A#`td">
                                                  <field name="ATTR">val</field>
                                                  <field name="OID">hm-rpc.1.002420C995C575.1.DOOR_STATE</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <block type="math_number" id="BV9G(8uj+VE?A.^me=a5">
                                                  <field name="NUM">0</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <statement name="DO0">
                                        <block type="comment" id="JQ!5`+_8gzc?@iT^Mi|C">
                                          <field name="COMMENT">Nach 5 min ohne Bewegung automatisch schließen</field>
                                          <next>
                                            <block type="comment" id="BP05f8xMWyF:n[eD!g7H">
                                              <field name="COMMENT">2 min davon vorgegeben vom Bewegungsmelder</field>
                                              <next>
                                                <block type="timeouts_settimeout" id="w?3#}$|H,rD_$OA}6lO=">
                                                  <field name="NAME">timeout_garagentor</field>
                                                  <field name="DELAY">3</field>
                                                  <field name="UNIT">min</field>
                                                  <statement name="STATEMENT">
                                                    <block type="control" id="eyPVpw@h|Otg_5=%p_iG">
                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                      <field name="OID">hm-rpc.1.002420C995C575.1.DOOR_COMMAND</field>
                                                      <field name="WITH_DELAY">FALSE</field>
                                                      <value name="VALUE">
                                                        <block type="math_number" id="5O?]J$QiwJydKxtg5!`Q">
                                                          <field name="NUM">3</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </statement>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </statement>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </xml>
                          
                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          896
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          437
                          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