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. Überwachung Katzenklappe mit Bewegungsmelder (gelöst)

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    297

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

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

Überwachung Katzenklappe mit Bewegungsmelder (gelöst)

Geplant Angeheftet Gesperrt Verschoben Blockly
19 Beiträge 5 Kommentatoren 1.5k Aufrufe 4 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.
  • D DocGame

    Ich habe zwischen meinem Hobbykeller und der Garage eine Brandschutztür für die ich vor einigen Tagen ein Blockly geschrieben habe.
    Ausgangslage war folgende: Ich habe auf beiden Seiten der Tür einen Aqara-BW und an der Tür einen Aqara Türsensor.
    Wenn ich vom Keller in die Garage gehe schaltet bei entsprechender Lux-Zahl die Garagenbeleuchtung ein. Im Umgekehrten Fall die Beleuchtung des Hobbykellers. Getickert wird über den Türsensor und die Richtung aus der man kommt wird über den Zeitstempel der BW's geregelt.
    Das ganze funtioniert super. Hier das Blockly:

    BWRichtung1.JPG

    <xml xmlns="https://developers.google.com/blockly/xml">
      <block type="on_ext" id=";{K1HH4[hk,%GH|,.fmN" x="-887" y="-562">
        <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
        <field name="CONDITION">gt</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="^E%*73m)eC7$r_%BuEy}">
            <field name="oid">linkeddevices.0.Keller.Hobbykeller.Garagentür.opened</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="controls_if" id="WEerBsPDf}FV9:AIxt$d">
            <value name="IF0">
              <block type="logic_operation" id="W%b%Ynx5[Th]~{AJX_%g" inline="false">
                <field name="OP">AND</field>
                <value name="A">
                  <block type="logic_compare" id="m_xT}JoYhgw05AiTjw`@">
                    <field name="OP">LT</field>
                    <value name="A">
                      <block type="get_value" id="jd8NXR_0Wj]5bEVKviU#">
                        <field name="ATTR">val</field>
                        <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.illuminance</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="math_number" id="@lxmI+fDES?punO5t^(b">
                        <field name="NUM">25</field>
                      </block>
                    </value>
                  </block>
                </value>
                <value name="B">
                  <block type="logic_compare" id="AM~|sI*/xq~jPBJv~RTV">
                    <field name="OP">LT</field>
                    <value name="A">
                      <block type="get_value" id="7tTtQO9Wkhnh`6k:T5G{">
                        <field name="ATTR">ts</field>
                        <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.occupancy</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="get_value" id="6AtWDKb7hXz8aGaO/weC">
                        <field name="ATTR">ts</field>
                        <field name="OID">linkeddevices.0.Garage.Bewegung.occupancy</field>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="control" id="bYAI,h59^Mn_i^uJGlIA">
                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                <field name="OID">linkeddevices.0.Keller.Hobbykeller.Licht.Kellerdecke.state</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="logic_boolean" id="aU!4G+[3}#}e[!4{0:II">
                    <field name="BOOL">TRUE</field>
                  </block>
                </value>
                <next>
                  <block type="control" id="]ZH}YHCD3vqQ8KV]C45V">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                    <field name="OID">linkeddevices.0.Keller.Hobbykeller.Licht.Kellerdecke.state</field>
                    <field name="WITH_DELAY">TRUE</field>
                    <field name="DELAY_MS">4</field>
                    <field name="UNIT">min</field>
                    <field name="CLEAR_RUNNING">TRUE</field>
                    <value name="VALUE">
                      <block type="logic_boolean" id="MeCB;qtl]!ySJmdLll)`">
                        <field name="BOOL">FALSE</field>
                      </block>
                    </value>
                  </block>
                </next>
              </block>
            </statement>
            <next>
              <block type="controls_if" id="!_Ga7:ifyPERCJcOHq;=">
                <value name="IF0">
                  <block type="logic_operation" id="S6t*Uf2*dv9niMZwHRE!" inline="false">
                    <field name="OP">AND</field>
                    <value name="A">
                      <block type="logic_compare" id="q-G~HOV.LGoZNF!/|E`x">
                        <field name="OP">LT</field>
                        <value name="A">
                          <block type="get_value" id="mJ`b9aYl{m:T0bI]UT]f">
                            <field name="ATTR">val</field>
                            <field name="OID">linkeddevices.0.Garage.Bewegung.illuminance</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="math_number" id="4WV!GdHlD?wy:LlzunA@">
                            <field name="NUM">25</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <value name="B">
                      <block type="logic_compare" id="U,e;HU;xV]@/Ec?VkWX]">
                        <field name="OP">LT</field>
                        <value name="A">
                          <block type="get_value" id="vw]X}6(XXq{):@kWD{JM">
                            <field name="ATTR">ts</field>
                            <field name="OID">linkeddevices.0.Garage.Bewegung.occupancy</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="get_value" id="pgdoxDP])yAcUX;W{vI2">
                            <field name="ATTR">ts</field>
                            <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.occupancy</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="control" id="o1v.k[U;S!)k[nEgz;..">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">linkeddevices.0.Garage.Licht.Garagendecke.POWER</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="logic_boolean" id=";}Mj^gYskVxkMK8=Fes{">
                        <field name="BOOL">TRUE</field>
                      </block>
                    </value>
                    <next>
                      <block type="control" id=".?qUbrPheDA?IYH=`T]R">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">linkeddevices.0.Garage.Licht.Garagenfensterlicht.state</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="logic_boolean" id="dA,_p?)T5M1wd(PdLc?6">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                        <next>
                          <block type="control" id="sG2UN]g@44*_p7R?+[h,">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                            <field name="OID">linkeddevices.0.Garage.Licht.Garagendecke.POWER</field>
                            <field name="WITH_DELAY">TRUE</field>
                            <field name="DELAY_MS">4</field>
                            <field name="UNIT">min</field>
                            <field name="CLEAR_RUNNING">TRUE</field>
                            <value name="VALUE">
                              <block type="logic_boolean" id="~`VZy]I;aX+|M6,@ky+n">
                                <field name="BOOL">FALSE</field>
                              </block>
                            </value>
                            <next>
                              <block type="control" id="U|LcL7n@1N25f.npt$`k">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                <field name="OID">linkeddevices.0.Garage.Licht.Garagenfensterlicht.state</field>
                                <field name="WITH_DELAY">TRUE</field>
                                <field name="DELAY_MS">4</field>
                                <field name="UNIT">min</field>
                                <field name="CLEAR_RUNNING">TRUE</field>
                                <value name="VALUE">
                                  <block type="logic_boolean" id="%yYlT?Rk2O-MD`n9e).;">
                                    <field name="BOOL">FALSE</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </statement>
      </block>
    </xml>
    

    Jetzt will ich noch ein 2. Blockly für diese Hardwarekonstellation machen, da sich in dieser Tür auch unsere Katzenklappe befindet. Ich habe schon getestet und die Bewegung der Karze wird super erkannt. Nun will ich für meine VIS einen Status (Katze im Haus oder Katze drausen) erzeugen. Den entsprechenden Datenpunkt zu befüllen ist ja kein Problem. Mir bereitet das umrechnen der Timestamps Probleme. Das ganze sollte etwa so aussehen:
    Wenn Tiggerzeit des 2. BW's bis zu 15 Sek. nach tiggern des ersten kommt und der Türsensor wärend dieser Zeit auf false war habe ich die eine Richtung. Umgekehrt natürlich das gleiche. Irgendwie klappt es aber nicht so wie ich will. Hat jemand eine Idee?

    J Offline
    J Offline
    Jan1
    schrieb am zuletzt editiert von
    #2

    @DocGame
    ohne jetzt lange darüber nachgedacht zu haben, hatte ich eine Idee.
    Zieh doch einfach den einen Zeitstempel des BWM vom anderen ab. Das Ergebnis ist erst mal nicht relevant, sondern das Vorzeichen. Das wird einmal - und einmal + sein, somit weiß ja ob sie rein oder raus gegangen ist.

    Ich denke das sollte mit ner Abfrage größer oder kleiner 0 auszuwerten sein.

    D 1 Antwort Letzte Antwort
    0
    • J Jan1

      @DocGame
      ohne jetzt lange darüber nachgedacht zu haben, hatte ich eine Idee.
      Zieh doch einfach den einen Zeitstempel des BWM vom anderen ab. Das Ergebnis ist erst mal nicht relevant, sondern das Vorzeichen. Das wird einmal - und einmal + sein, somit weiß ja ob sie rein oder raus gegangen ist.

      Ich denke das sollte mit ner Abfrage größer oder kleiner 0 auszuwerten sein.

      D Offline
      D Offline
      DocGame
      schrieb am zuletzt editiert von
      #3

      @Jan1 Das habe ich ja schon probiert(Ähnlich wie in dem Blockly mit dem Licht). Ich müsste das ganze aber zeitlich einschränken (daher die 10-15 Sek.) und auf jeden Fall muss ich das false der Tür für diesen Zeitraum überwachen, da mir sonst der Garagenbesuch meiner Frau(durch die Tür) als "Ausgehzeit der Katze" interpretiert wird :heart_eyes_cat:

      J 1 Antwort Letzte Antwort
      0
      • D DocGame

        @Jan1 Das habe ich ja schon probiert(Ähnlich wie in dem Blockly mit dem Licht). Ich müsste das ganze aber zeitlich einschränken (daher die 10-15 Sek.) und auf jeden Fall muss ich das false der Tür für diesen Zeitraum überwachen, da mir sonst der Garagenbesuch meiner Frau(durch die Tür) als "Ausgehzeit der Katze" interpretiert wird :heart_eyes_cat:

        J Offline
        J Offline
        Jan1
        schrieb am zuletzt editiert von
        #4

        @DocGame
        Na so ganz versteh ich das nicht, aber Deinem Blockly oben zu entnehmen bist auch erst am Anfang damit, sonst würdest bei der Falls nicht noch auf wahr prüfen ;)
        =wahr macht die FALLS immer und ist dann doppelt.

        Ich muss weiter arbeiten

        D 1 Antwort Letzte Antwort
        0
        • J Jan1

          @DocGame
          Na so ganz versteh ich das nicht, aber Deinem Blockly oben zu entnehmen bist auch erst am Anfang damit, sonst würdest bei der Falls nicht noch auf wahr prüfen ;)
          =wahr macht die FALLS immer und ist dann doppelt.

          Ich muss weiter arbeiten

          D Offline
          D Offline
          DocGame
          schrieb am zuletzt editiert von DocGame
          #5

          @Jan1 Das oben hat ja gar nichts mit der Klappenüberwachung zu tun. Das ist nur für die Lichter und das ich auf Änderung tickere und Wahr abfrage ist nur, da ich wegen den Katzenprojekt hier rauskopiere. Stelle mal auf Wahr oder "größer als letzter" Tigger um und lasse die Fallsprüfung weg.... Das ist ja aber auch nicht meine Problemstellung, da diese Blockly (wenn auch mit 2 falls zu viel) perfekt läuft.
          Habe das Wahr aus dem Script und dem Bild oben rausgenommen um nicht vom eigentlichen Thema abzulenken....

          J 1 Antwort Letzte Antwort
          1
          • D DocGame

            @Jan1 Das oben hat ja gar nichts mit der Klappenüberwachung zu tun. Das ist nur für die Lichter und das ich auf Änderung tickere und Wahr abfrage ist nur, da ich wegen den Katzenprojekt hier rauskopiere. Stelle mal auf Wahr oder "größer als letzter" Tigger um und lasse die Fallsprüfung weg.... Das ist ja aber auch nicht meine Problemstellung, da diese Blockly (wenn auch mit 2 falls zu viel) perfekt läuft.
            Habe das Wahr aus dem Script und dem Bild oben rausgenommen um nicht vom eigentlichen Thema abzulenken....

            J Offline
            J Offline
            Jan1
            schrieb am zuletzt editiert von
            #6

            @DocGame
            Klar, war auch nur ein Tipp für weiter Blocklys, wie es einfacher geht und kein Hinweis auf eine Lösung des aktuellen Problem.
            Da ich aber nicht so 100% verstanden habe, welche Variablen Du noch berücksichtigen willst, bin ich erst mal raus, da mir gerade die Zeit fehlt.

            1 Antwort Letzte Antwort
            0
            • ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #7

              Ich würde folgendes machen:

              • Je ein Block für das speichern der Bewegungstimestamps. Sprich onChange Bewegungsmelder und dann via setVariable = timestamp. Damit hast du zwei Variablen timestamp1 und timestamp2.

              • Das gleiche machst du mit der Tür. Sprich doorOpen ist deine dritte Variable. z.B doorOpen = true/false

              • Jetzt kannst du in den beiden Bewegungstimestamps onChange blöcken deine Katzenklappe abfragen bauen. Das ganze mitteils einer Funktion die du aufrufst, damit du das nicht 2. mal bauen musst. Die Funktion hängst du dann jeweils ein.

              Annahme: Timestamp sind in Sekunden. Wenn diese in UNIX since 1970 sind musst du diese entsprechend umrechnen.

              func checkCat() {
                set diff = timestamp 1 - timestamp2;
                if (!doorOpen && diff² < 225) {  #Damit umgehst du den Vorzeichencheck und prüfst ob du in deinem 15 Sekunden bist. Bsp- (diff = -12 => diff² = 144)
                  if (diff < 0) {
                    setCatStatus = false;
                  } else {
                    setCatStatus = true;
                } 
              }
              

              Die Funktion lässt in Blockly genauso darstellen.

              D 1 Antwort Letzte Antwort
              0
              • ? Ein ehemaliger Benutzer

                Ich würde folgendes machen:

                • Je ein Block für das speichern der Bewegungstimestamps. Sprich onChange Bewegungsmelder und dann via setVariable = timestamp. Damit hast du zwei Variablen timestamp1 und timestamp2.

                • Das gleiche machst du mit der Tür. Sprich doorOpen ist deine dritte Variable. z.B doorOpen = true/false

                • Jetzt kannst du in den beiden Bewegungstimestamps onChange blöcken deine Katzenklappe abfragen bauen. Das ganze mitteils einer Funktion die du aufrufst, damit du das nicht 2. mal bauen musst. Die Funktion hängst du dann jeweils ein.

                Annahme: Timestamp sind in Sekunden. Wenn diese in UNIX since 1970 sind musst du diese entsprechend umrechnen.

                func checkCat() {
                  set diff = timestamp 1 - timestamp2;
                  if (!doorOpen && diff² < 225) {  #Damit umgehst du den Vorzeichencheck und prüfst ob du in deinem 15 Sekunden bist. Bsp- (diff = -12 => diff² = 144)
                    if (diff < 0) {
                      setCatStatus = false;
                    } else {
                      setCatStatus = true;
                  } 
                }
                

                Die Funktion lässt in Blockly genauso darstellen.

                D Offline
                D Offline
                DocGame
                schrieb am zuletzt editiert von
                #8

                @Ar1lon Auf den ersten Blick verstehe ich nur Bahnhof.... Muss ich mir heute Abend mal genauer anschauen.

                ? 1 Antwort Letzte Antwort
                0
                • D DocGame

                  Ich habe zwischen meinem Hobbykeller und der Garage eine Brandschutztür für die ich vor einigen Tagen ein Blockly geschrieben habe.
                  Ausgangslage war folgende: Ich habe auf beiden Seiten der Tür einen Aqara-BW und an der Tür einen Aqara Türsensor.
                  Wenn ich vom Keller in die Garage gehe schaltet bei entsprechender Lux-Zahl die Garagenbeleuchtung ein. Im Umgekehrten Fall die Beleuchtung des Hobbykellers. Getickert wird über den Türsensor und die Richtung aus der man kommt wird über den Zeitstempel der BW's geregelt.
                  Das ganze funtioniert super. Hier das Blockly:

                  BWRichtung1.JPG

                  <xml xmlns="https://developers.google.com/blockly/xml">
                    <block type="on_ext" id=";{K1HH4[hk,%GH|,.fmN" x="-887" y="-562">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                      <field name="CONDITION">gt</field>
                      <field name="ACK_CONDITION"></field>
                      <value name="OID0">
                        <shadow type="field_oid" id="^E%*73m)eC7$r_%BuEy}">
                          <field name="oid">linkeddevices.0.Keller.Hobbykeller.Garagentür.opened</field>
                        </shadow>
                      </value>
                      <statement name="STATEMENT">
                        <block type="controls_if" id="WEerBsPDf}FV9:AIxt$d">
                          <value name="IF0">
                            <block type="logic_operation" id="W%b%Ynx5[Th]~{AJX_%g" inline="false">
                              <field name="OP">AND</field>
                              <value name="A">
                                <block type="logic_compare" id="m_xT}JoYhgw05AiTjw`@">
                                  <field name="OP">LT</field>
                                  <value name="A">
                                    <block type="get_value" id="jd8NXR_0Wj]5bEVKviU#">
                                      <field name="ATTR">val</field>
                                      <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.illuminance</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="@lxmI+fDES?punO5t^(b">
                                      <field name="NUM">25</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <value name="B">
                                <block type="logic_compare" id="AM~|sI*/xq~jPBJv~RTV">
                                  <field name="OP">LT</field>
                                  <value name="A">
                                    <block type="get_value" id="7tTtQO9Wkhnh`6k:T5G{">
                                      <field name="ATTR">ts</field>
                                      <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.occupancy</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="get_value" id="6AtWDKb7hXz8aGaO/weC">
                                      <field name="ATTR">ts</field>
                                      <field name="OID">linkeddevices.0.Garage.Bewegung.occupancy</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="control" id="bYAI,h59^Mn_i^uJGlIA">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">linkeddevices.0.Keller.Hobbykeller.Licht.Kellerdecke.state</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                                <block type="logic_boolean" id="aU!4G+[3}#}e[!4{0:II">
                                  <field name="BOOL">TRUE</field>
                                </block>
                              </value>
                              <next>
                                <block type="control" id="]ZH}YHCD3vqQ8KV]C45V">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                  <field name="OID">linkeddevices.0.Keller.Hobbykeller.Licht.Kellerdecke.state</field>
                                  <field name="WITH_DELAY">TRUE</field>
                                  <field name="DELAY_MS">4</field>
                                  <field name="UNIT">min</field>
                                  <field name="CLEAR_RUNNING">TRUE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="MeCB;qtl]!ySJmdLll)`">
                                      <field name="BOOL">FALSE</field>
                                    </block>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </statement>
                          <next>
                            <block type="controls_if" id="!_Ga7:ifyPERCJcOHq;=">
                              <value name="IF0">
                                <block type="logic_operation" id="S6t*Uf2*dv9niMZwHRE!" inline="false">
                                  <field name="OP">AND</field>
                                  <value name="A">
                                    <block type="logic_compare" id="q-G~HOV.LGoZNF!/|E`x">
                                      <field name="OP">LT</field>
                                      <value name="A">
                                        <block type="get_value" id="mJ`b9aYl{m:T0bI]UT]f">
                                          <field name="ATTR">val</field>
                                          <field name="OID">linkeddevices.0.Garage.Bewegung.illuminance</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="4WV!GdHlD?wy:LlzunA@">
                                          <field name="NUM">25</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="logic_compare" id="U,e;HU;xV]@/Ec?VkWX]">
                                      <field name="OP">LT</field>
                                      <value name="A">
                                        <block type="get_value" id="vw]X}6(XXq{):@kWD{JM">
                                          <field name="ATTR">ts</field>
                                          <field name="OID">linkeddevices.0.Garage.Bewegung.occupancy</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="get_value" id="pgdoxDP])yAcUX;W{vI2">
                                          <field name="ATTR">ts</field>
                                          <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.occupancy</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="control" id="o1v.k[U;S!)k[nEgz;..">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">linkeddevices.0.Garage.Licht.Garagendecke.POWER</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id=";}Mj^gYskVxkMK8=Fes{">
                                      <field name="BOOL">TRUE</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="control" id=".?qUbrPheDA?IYH=`T]R">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                      <field name="OID">linkeddevices.0.Garage.Licht.Garagenfensterlicht.state</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="dA,_p?)T5M1wd(PdLc?6">
                                          <field name="BOOL">TRUE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="control" id="sG2UN]g@44*_p7R?+[h,">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                          <field name="OID">linkeddevices.0.Garage.Licht.Garagendecke.POWER</field>
                                          <field name="WITH_DELAY">TRUE</field>
                                          <field name="DELAY_MS">4</field>
                                          <field name="UNIT">min</field>
                                          <field name="CLEAR_RUNNING">TRUE</field>
                                          <value name="VALUE">
                                            <block type="logic_boolean" id="~`VZy]I;aX+|M6,@ky+n">
                                              <field name="BOOL">FALSE</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="control" id="U|LcL7n@1N25f.npt$`k">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                              <field name="OID">linkeddevices.0.Garage.Licht.Garagenfensterlicht.state</field>
                                              <field name="WITH_DELAY">TRUE</field>
                                              <field name="DELAY_MS">4</field>
                                              <field name="UNIT">min</field>
                                              <field name="CLEAR_RUNNING">TRUE</field>
                                              <value name="VALUE">
                                                <block type="logic_boolean" id="%yYlT?Rk2O-MD`n9e).;">
                                                  <field name="BOOL">FALSE</field>
                                                </block>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </xml>
                  

                  Jetzt will ich noch ein 2. Blockly für diese Hardwarekonstellation machen, da sich in dieser Tür auch unsere Katzenklappe befindet. Ich habe schon getestet und die Bewegung der Karze wird super erkannt. Nun will ich für meine VIS einen Status (Katze im Haus oder Katze drausen) erzeugen. Den entsprechenden Datenpunkt zu befüllen ist ja kein Problem. Mir bereitet das umrechnen der Timestamps Probleme. Das ganze sollte etwa so aussehen:
                  Wenn Tiggerzeit des 2. BW's bis zu 15 Sek. nach tiggern des ersten kommt und der Türsensor wärend dieser Zeit auf false war habe ich die eine Richtung. Umgekehrt natürlich das gleiche. Irgendwie klappt es aber nicht so wie ich will. Hat jemand eine Idee?

                  K GrünK Offline
                  K GrünK Offline
                  K Grün
                  schrieb am zuletzt editiert von
                  #9

                  @DocGame Hallo, auch wenn es nicht zum Thema gehört. Mit der Katzenklappe hast Du keine Brandschutztür mehr.
                  Hast Du Dir das gut überlegt ?

                  D 1 Antwort Letzte Antwort
                  0
                  • D DocGame

                    @Ar1lon Auf den ersten Blick verstehe ich nur Bahnhof.... Muss ich mir heute Abend mal genauer anschauen.

                    ? Offline
                    ? Offline
                    Ein ehemaliger Benutzer
                    schrieb am zuletzt editiert von
                    #10

                    @DocGame Wenn was unklar ist melde dich. Ich komme gerade nicht dazu es ein Blockly zu bauen und dann hier rein zu posten.

                    1 Antwort Letzte Antwort
                    0
                    • D DocGame

                      Ich habe zwischen meinem Hobbykeller und der Garage eine Brandschutztür für die ich vor einigen Tagen ein Blockly geschrieben habe.
                      Ausgangslage war folgende: Ich habe auf beiden Seiten der Tür einen Aqara-BW und an der Tür einen Aqara Türsensor.
                      Wenn ich vom Keller in die Garage gehe schaltet bei entsprechender Lux-Zahl die Garagenbeleuchtung ein. Im Umgekehrten Fall die Beleuchtung des Hobbykellers. Getickert wird über den Türsensor und die Richtung aus der man kommt wird über den Zeitstempel der BW's geregelt.
                      Das ganze funtioniert super. Hier das Blockly:

                      BWRichtung1.JPG

                      <xml xmlns="https://developers.google.com/blockly/xml">
                        <block type="on_ext" id=";{K1HH4[hk,%GH|,.fmN" x="-887" y="-562">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                          <field name="CONDITION">gt</field>
                          <field name="ACK_CONDITION"></field>
                          <value name="OID0">
                            <shadow type="field_oid" id="^E%*73m)eC7$r_%BuEy}">
                              <field name="oid">linkeddevices.0.Keller.Hobbykeller.Garagentür.opened</field>
                            </shadow>
                          </value>
                          <statement name="STATEMENT">
                            <block type="controls_if" id="WEerBsPDf}FV9:AIxt$d">
                              <value name="IF0">
                                <block type="logic_operation" id="W%b%Ynx5[Th]~{AJX_%g" inline="false">
                                  <field name="OP">AND</field>
                                  <value name="A">
                                    <block type="logic_compare" id="m_xT}JoYhgw05AiTjw`@">
                                      <field name="OP">LT</field>
                                      <value name="A">
                                        <block type="get_value" id="jd8NXR_0Wj]5bEVKviU#">
                                          <field name="ATTR">val</field>
                                          <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.illuminance</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="@lxmI+fDES?punO5t^(b">
                                          <field name="NUM">25</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="logic_compare" id="AM~|sI*/xq~jPBJv~RTV">
                                      <field name="OP">LT</field>
                                      <value name="A">
                                        <block type="get_value" id="7tTtQO9Wkhnh`6k:T5G{">
                                          <field name="ATTR">ts</field>
                                          <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.occupancy</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="get_value" id="6AtWDKb7hXz8aGaO/weC">
                                          <field name="ATTR">ts</field>
                                          <field name="OID">linkeddevices.0.Garage.Bewegung.occupancy</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="control" id="bYAI,h59^Mn_i^uJGlIA">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">linkeddevices.0.Keller.Hobbykeller.Licht.Kellerdecke.state</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="aU!4G+[3}#}e[!4{0:II">
                                      <field name="BOOL">TRUE</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="control" id="]ZH}YHCD3vqQ8KV]C45V">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">linkeddevices.0.Keller.Hobbykeller.Licht.Kellerdecke.state</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">4</field>
                                      <field name="UNIT">min</field>
                                      <field name="CLEAR_RUNNING">TRUE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="MeCB;qtl]!ySJmdLll)`">
                                          <field name="BOOL">FALSE</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <next>
                                <block type="controls_if" id="!_Ga7:ifyPERCJcOHq;=">
                                  <value name="IF0">
                                    <block type="logic_operation" id="S6t*Uf2*dv9niMZwHRE!" inline="false">
                                      <field name="OP">AND</field>
                                      <value name="A">
                                        <block type="logic_compare" id="q-G~HOV.LGoZNF!/|E`x">
                                          <field name="OP">LT</field>
                                          <value name="A">
                                            <block type="get_value" id="mJ`b9aYl{m:T0bI]UT]f">
                                              <field name="ATTR">val</field>
                                              <field name="OID">linkeddevices.0.Garage.Bewegung.illuminance</field>
                                            </block>
                                          </value>
                                          <value name="B">
                                            <block type="math_number" id="4WV!GdHlD?wy:LlzunA@">
                                              <field name="NUM">25</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="logic_compare" id="U,e;HU;xV]@/Ec?VkWX]">
                                          <field name="OP">LT</field>
                                          <value name="A">
                                            <block type="get_value" id="vw]X}6(XXq{):@kWD{JM">
                                              <field name="ATTR">ts</field>
                                              <field name="OID">linkeddevices.0.Garage.Bewegung.occupancy</field>
                                            </block>
                                          </value>
                                          <value name="B">
                                            <block type="get_value" id="pgdoxDP])yAcUX;W{vI2">
                                              <field name="ATTR">ts</field>
                                              <field name="OID">linkeddevices.0.Keller.Hobbykeller.Bewegung.occupancy</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <statement name="DO0">
                                    <block type="control" id="o1v.k[U;S!)k[nEgz;..">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                      <field name="OID">linkeddevices.0.Garage.Licht.Garagendecke.POWER</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id=";}Mj^gYskVxkMK8=Fes{">
                                          <field name="BOOL">TRUE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="control" id=".?qUbrPheDA?IYH=`T]R">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                          <field name="OID">linkeddevices.0.Garage.Licht.Garagenfensterlicht.state</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                            <block type="logic_boolean" id="dA,_p?)T5M1wd(PdLc?6">
                                              <field name="BOOL">TRUE</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="control" id="sG2UN]g@44*_p7R?+[h,">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                              <field name="OID">linkeddevices.0.Garage.Licht.Garagendecke.POWER</field>
                                              <field name="WITH_DELAY">TRUE</field>
                                              <field name="DELAY_MS">4</field>
                                              <field name="UNIT">min</field>
                                              <field name="CLEAR_RUNNING">TRUE</field>
                                              <value name="VALUE">
                                                <block type="logic_boolean" id="~`VZy]I;aX+|M6,@ky+n">
                                                  <field name="BOOL">FALSE</field>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="control" id="U|LcL7n@1N25f.npt$`k">
                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                  <field name="OID">linkeddevices.0.Garage.Licht.Garagenfensterlicht.state</field>
                                                  <field name="WITH_DELAY">TRUE</field>
                                                  <field name="DELAY_MS">4</field>
                                                  <field name="UNIT">min</field>
                                                  <field name="CLEAR_RUNNING">TRUE</field>
                                                  <value name="VALUE">
                                                    <block type="logic_boolean" id="%yYlT?Rk2O-MD`n9e).;">
                                                      <field name="BOOL">FALSE</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </statement>
                                </block>
                              </next>
                            </block>
                          </statement>
                        </block>
                      </xml>
                      

                      Jetzt will ich noch ein 2. Blockly für diese Hardwarekonstellation machen, da sich in dieser Tür auch unsere Katzenklappe befindet. Ich habe schon getestet und die Bewegung der Karze wird super erkannt. Nun will ich für meine VIS einen Status (Katze im Haus oder Katze drausen) erzeugen. Den entsprechenden Datenpunkt zu befüllen ist ja kein Problem. Mir bereitet das umrechnen der Timestamps Probleme. Das ganze sollte etwa so aussehen:
                      Wenn Tiggerzeit des 2. BW's bis zu 15 Sek. nach tiggern des ersten kommt und der Türsensor wärend dieser Zeit auf false war habe ich die eine Richtung. Umgekehrt natürlich das gleiche. Irgendwie klappt es aber nicht so wie ich will. Hat jemand eine Idee?

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

                      @DocGame sagte:

                      Wenn Tiggerzeit des 2. BW's bis zu 15 Sek. nach tiggern des ersten kommt und der Türsensor wärend dieser Zeit auf false war habe ich die eine Richtung.

                      Vorschlag:

                      Blockly_temp.JPG

                      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

                      D 1 Antwort Letzte Antwort
                      0
                      • K GrünK K Grün

                        @DocGame Hallo, auch wenn es nicht zum Thema gehört. Mit der Katzenklappe hast Du keine Brandschutztür mehr.
                        Hast Du Dir das gut überlegt ?

                        D Offline
                        D Offline
                        DocGame
                        schrieb am zuletzt editiert von
                        #12

                        @K-Grün Die Klappe war schon drin, da hat noch niemand das Wort Smarthome gekannt. Denke eh, dass da nur nee Metalltür drinnen ist da keine in Holz greifbar war. :grin:
                        @paul53 : muss ich gleich mal nachbauen..

                        1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @DocGame sagte:

                          Wenn Tiggerzeit des 2. BW's bis zu 15 Sek. nach tiggern des ersten kommt und der Türsensor wärend dieser Zeit auf false war habe ich die eine Richtung.

                          Vorschlag:

                          Blockly_temp.JPG

                          D Offline
                          D Offline
                          DocGame
                          schrieb am zuletzt editiert von DocGame
                          #13

                          @paul53 Hab mal alles nachgebaut. beim letzten Teil blicke ich nicht mehr richtig durch....
                          Kommt bei dem Gemarkerten Teil ein Virtueller Datenpunkt rein? Will ja in einen Datenpunkt entweder Katze drinnen oder Katze draussen schreiben
                          katze1.JPG

                          paul53P 1 Antwort Letzte Antwort
                          0
                          • D DocGame

                            @paul53 Hab mal alles nachgebaut. beim letzten Teil blicke ich nicht mehr richtig durch....
                            Kommt bei dem Gemarkerten Teil ein Virtueller Datenpunkt rein? Will ja in einen Datenpunkt entweder Katze drinnen oder Katze draussen schreiben
                            katze1.JPG

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

                            @DocGame sagte:

                            ein Virtueller Datenpunkt rein?

                            Ja.
                            Soll der Datenpunkt einen Text enthalten ? Dann so:

                            Blockly_temp.JPG

                            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

                            D 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @DocGame sagte:

                              ein Virtueller Datenpunkt rein?

                              Ja.
                              Soll der Datenpunkt einen Text enthalten ? Dann so:

                              Blockly_temp.JPG

                              D Offline
                              D Offline
                              DocGame
                              schrieb am zuletzt editiert von
                              #15

                              @paul53 Super... Dann muss ich nur noch 3 Taster zum testen herrichten. Testen ist sonst relativ schwierig, da ich im 3 Stock sitze und das Ganze sich im keller abspielt. Mite einem Switch und 2 Tastern werde ich das später mal hier oben simulieren. Vielen Dank für die Tipps schon einmal :+1:

                              paul53P 1 Antwort Letzte Antwort
                              0
                              • D DocGame

                                @paul53 Super... Dann muss ich nur noch 3 Taster zum testen herrichten. Testen ist sonst relativ schwierig, da ich im 3 Stock sitze und das Ganze sich im keller abspielt. Mite einem Switch und 2 Tastern werde ich das später mal hier oben simulieren. Vielen Dank für die Tipps schon einmal :+1:

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

                                @DocGame sagte:

                                Dann muss ich nur noch 3 Taster zum testen herrichten.

                                Wozu 3 Taster ? Man kann die 3 Datenpunkte (opened / 2 * occupancy) manuell im Tab "Objekte" ändern. Unter / über 15 s Zeitabstand zwischen den beiden DP "occupancy" sollte man hinbekommen (sie triggern nur bei Änderung false --> true).

                                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

                                D 1 Antwort Letzte Antwort
                                0
                                • paul53P paul53

                                  @DocGame sagte:

                                  Dann muss ich nur noch 3 Taster zum testen herrichten.

                                  Wozu 3 Taster ? Man kann die 3 Datenpunkte (opened / 2 * occupancy) manuell im Tab "Objekte" ändern. Unter / über 15 s Zeitabstand zwischen den beiden DP "occupancy" sollte man hinbekommen (sie triggern nur bei Änderung false --> true).

                                  D Offline
                                  D Offline
                                  DocGame
                                  schrieb am zuletzt editiert von DocGame
                                  #17

                                  @paul53 Klar...das geht auch aber ist doch aber in einer Minute zugewiesen(Hab den Schreibtisch mit Eingebundenen Tastern vollliegen). Den TS-State auf die Schreibtischlampe und dann wurde getestet. Habe keine Modelleisenbahn und spiele die Szenen lieber so durch(Spieltrieb).
                                  Funktioniert perfekt. Vielen Dank nochmals

                                  paul53P 1 Antwort Letzte Antwort
                                  0
                                  • D DocGame

                                    @paul53 Klar...das geht auch aber ist doch aber in einer Minute zugewiesen(Hab den Schreibtisch mit Eingebundenen Tastern vollliegen). Den TS-State auf die Schreibtischlampe und dann wurde getestet. Habe keine Modelleisenbahn und spiele die Szenen lieber so durch(Spieltrieb).
                                    Funktioniert perfekt. Vielen Dank nochmals

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

                                    @DocGame sagte:

                                    Funktioniert perfekt.

                                    Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].

                                    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
                                    • paul53P paul53

                                      @DocGame sagte:

                                      Funktioniert perfekt.

                                      Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].

                                      ? Offline
                                      ? Offline
                                      Ein ehemaliger Benutzer
                                      schrieb am zuletzt editiert von
                                      #19

                                      @paul53 jop so geht es natürlich auch. Spart zwei Rechenoperationen.

                                      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

                                      265

                                      Online

                                      32.7k

                                      Benutzer

                                      82.5k

                                      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