Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Blockly: Tür abschließen nach Abwesenheit mehr als 5 Minuten

    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

    [Gelöst] Blockly: Tür abschließen nach Abwesenheit mehr als 5 Minuten

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

      Hallo zusammen,

      ich beisse mir gerade die Zähne aus.

      Wie kann ich mittels Blockly Keymatic dazu bewegen, die Tür nach mehr als 5 Minuten Abwesenheit abzuschließen?

      Generell könnte ich ja so vorgehen:

      Wenn Abwesenheit aktiv, dass verzögert um 5 Minuten abschließen.

      Leider wird die Tür danach abgeschlossen, wenn ich innerhalb der 5 Minuten wieder anwesend bin.

      Ich würde also gern eine Lösung erstellen, die den 5-Minuten-Timer wieder resetet.

      Ich vermute mal, das ich hierzu eine Variable erstellen muss und diese dann minütlich befülle. Wenn ich dann innerhalb der 5 Minuten wieder anwesend bin, wird die Variable geleert. Richtig?

      Wie kann ein solches Skript aussehen? Wie bewege ich Blockly einen Wert minütlich um 1 zu erhöhen?

      Freue mich auf eure Antworten.

      Grüße,

      Stefan

      1 Reply Last reply Reply Quote 0
      • rantanplan
        rantanplan last edited by

        Hallo Stefan1984

        Zeig doch mal was Du schon hast.

        Am Besten mit Export.

        Dann kann man besser mitbasteln.

        Grüße

        1 Reply Last reply Reply Quote 0
        • S
          Stefan1984 last edited by

          Huhu,

          hier mein bisheriges Werk. Klappt das so? Hab mich noch nicht getraut es zu testen, ohne das mal einer drüber schaut.

          Vielleicht geht es noch einfacher. Ganz schön umfangreich, … nur um eine Tür abzuschließen. 😉

          2044_bildschirmfoto_2017-12-30_um_22.42.09.png

          ! ````
          // Object Abwesenheit_Minuten erzeugen
          createState("Abwesenheit_Minuten", function () {
          });
          // Trigger Anwesenheit
          on({id: new RegExp('hm-rega\.0\.19754' + "|" + 'hm-rega\.0\.19755'), change: "ne"}, function (obj) {
          // Anwesenheit Stefan UND Nicole
          if (getState("hm-rega.0.19754").val == false && getState("hm-rega.0.19755").val == false) {
          // Erhöhe Abwesenheit_Minuten solange um 1, bis Anwesenheit Stefan oder Nicole = wahr
          while (!(getState("hm-rega.0.19754").val == true || getState("hm-rega.0.19755").val == true)) {
          setStateDelayed('javascript.0.Abwesenheit_Minuten', (getState("javascript.0.Abwesenheit_Minuten").val + 1), false, parseInt(60000, 10), false);
          }
          }
          });
          // Trigger Abwesenheit_Minuten
          on({id: "javascript.0.Abwesenheit_Minuten"/Abwesenheit_Minuten/, change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          // Falls Abwesenheit_Minuten gleich 5 Minuten
          if (getState("javascript.0.Abwesenheit_Minuten").val == 5) {
          // Dann schließe die Tür ab
          setState("hm-rpc.0.KEQ085xxxx.1.STATE"/Keymatic.STATE/, false);
          }
          });
          // Trigger Anwesenheit
          on({id: new RegExp('hm-rega\.0\.19754' + "|" + 'hm-rega\.0\.19755'), change: "ne"}, function (obj) {
          // Anwesenheit Stefan ODER Nicole ist wahr
          if (getState("hm-rega.0.19754").val == true || getState("hm-rega.0.19755").val == true) {
          // Setze Abwesenheit_Minuten auf 0
          setState("javascript.0.Abwesenheit_Minuten"/Abwesenheit_Minuten/, 0);
          }
          });

          
          Vorab vielen Dank für die Hilfe.
          
          Grüße,
          
          Stefan
          1 Reply Last reply Reply Quote 0
          • rantanplan
            rantanplan last edited by

            Hallo Stefan1984

            Sieht schon nicht schlecht aus.

            Ein paar kleine Haken gibt es aber noch.

            Bitte ein Blockly Export!

            (Die kleinen Pfeilchen)

            Du hast das Script kopiert.

            Grüße

            1 Reply Last reply Reply Quote 0
            • S
              Stefan1984 last edited by

              @rantanplan:

              Hallo Stefan1984

              Sieht schon nicht schlecht aus.

              Ein paar kleine Haken gibt es aber noch.

              Bitte ein Blockly Export!

              (Die kleinen Pfeilchen)

              Du hast das Script kopiert.

              Grüße `

              Oh. Hier der Export.

              ! ````
              <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="e|)^CZ6;ZK,ZY]H{#*Uj" x="-598" y="-202"><field name="COMMENT">Object Abwesenheit_Minuten erzeugen</field>
              <next><block type="create" id="Meyg;a7=A:AmFcx(JK7t"><field name="NAME">Abwesenheit_Minuten</field>
              <next><block type="comment" id="d5#O+3XtPq;(TXY;T#VE"><field name="COMMENT">Trigger Anwesenheit</field>
              <next><block type="on_ext" id="7.;.]I_qHy;|LM6r~cQ0"><mutation items="2"></mutation>
              <field name="CONDITION">ne</field>

                          <value name="OID0"><shadow type="field_oid" id="tJ4K@d5P/`Ju[Gb+Od!l"><field name="oid">hm-rega.0.19754</field></shadow></value> 
                          <value name="OID1"><shadow type="field_oid" id=",cc}|HK)H,%3V0P-Re_8"><field name="oid">hm-rega.0.19755</field></shadow></value> 
                          <statement name="STATEMENT"><block type="comment" id="6ux=}[ZGzBP8/%Tv!:M1"><field name="COMMENT">Anwesenheit Stefan UND Nicole</field>
                              <next><block type="controls_if" id="C,5si]khTWf_dY:;{7-_"><value name="IF0"><block type="logic_operation" id="eUazc]-^Kgi8}=W8ahH1"><field name="OP">AND</field>
                                      <value name="A"><block type="logic_compare" id="a!8u+F6nW)(O-vb-s3[8"><field name="OP">EQ</field>
                                          <value name="A"><block type="get_value" id="6yrv#J]Kr+G!FTkr;B?|"><field name="ATTR">val</field>
                                              <field name="OID">hm-rega.0.19754</field></block></value> 
                                          <value name="B"><block type="logic_boolean" id="=XS;thp6Ba01Tj0a{Bl|"><field name="BOOL">FALSE</field></block></value></block></value> 
                                      <value name="B"><block type="logic_compare" id="t1nwVbGEXT3tAbZsR^xE"><field name="OP">EQ</field>
                                          <value name="A"><block type="get_value" id="_p;Q[:bP/R-V8q=XHhEI"><field name="ATTR">val</field>
                                              <field name="OID">hm-rega.0.19755</field></block></value> 
                                          <value name="B"><block type="logic_boolean" id="e_zC78^-q_b[@Bd,N|p!"><field name="BOOL">FALSE</field></block></value></block></value></block></value> 
                                  <statement name="DO0"><block type="comment" id="#KJ-Bj:ybC?6*ALw;SkG"><field name="COMMENT">Erhöhe Abwesenheit_Minuten solange um 1, bis Anwesenheit Stefan oder Nicole = wahr</field>
                                      <next><block type="controls_whileUntil" id="L==y8Y|RzV[h~y5u%DP("><field name="MODE">UNTIL</field>
                                          <value name="BOOL"><block type="logic_operation" id="{8871.k8;sK0)m(lNd/j"><field name="OP">OR</field>
                                              <value name="A"><block type="logic_compare" id="/_nrabpHUb3#x=0nAA86"><field name="OP">EQ</field>
                                                  <value name="A"><block type="get_value" id="5cdDYnDa(fV[N`Q5HdJ,"><field name="ATTR">val</field>
                                                      <field name="OID">hm-rega.0.19754</field></block></value> 
                                                  <value name="B"><block type="logic_boolean" id="?DP*v#/xwavOCZZsb=s?"><field name="BOOL">TRUE</field></block></value></block></value> 
                                              <value name="B"><block type="logic_compare" id=";1=Z~-lcjy701;y}4,=6"><field name="OP">EQ</field>
                                                  <value name="A"><block type="get_value" id="j]rVWmmxTN+cS;;;-WcC"><field name="ATTR">val</field>
                                                      <field name="OID">hm-rega.0.19755</field></block></value> 
                                                  <value name="B"><block type="logic_boolean" id="r!?AzKazF82mt|*WHK6I"><field name="BOOL">TRUE</field></block></value></block></value></block></value> 
                                          <statement name="DO"><block type="control_ex" id="GrOHU{G?f*Gu|X}A]:#y"><field name="TYPE">false</field>
                                              <field name="CLEAR_RUNNING">FALSE</field>
                                              <value name="OID"><shadow type="field_oid" id="2tuv4NjBrBY*-hmJUyr="><field name="oid">javascript.0.Abwesenheit_Minuten</field></shadow> 
                                                <block type="field_oid" id="(U}5Pj%l|.Mp%}Sdu-gZ"><field name="oid">javascript.0.Abwesenheit_Minuten</field></block></value> 
                                              <value name="VALUE"><shadow type="logic_boolean" id="{?7!`|ls(xV.qxy9g[+p"><field name="BOOL">TRUE</field></shadow> 
                                                <block type="math_arithmetic" id="*.~!Q9OWd;/A5]EJSA]0"><field name="OP">ADD</field>
                                                  <value name="A"><shadow type="math_number" id="#`;v+]xB~ph6-@dhG?G9"><field name="NUM">1</field></shadow> 
                                                    <block type="get_value" id="tw-I:aRT]pa.t1aoQrd/"><field name="ATTR">val</field>
                                                      <field name="OID">javascript.0.Abwesenheit_Minuten</field></block></value> 
                                                  <value name="B"><shadow type="math_number" id="!GqV;,IN0[]=)*b,t(Jc"><field name="NUM">1</field></shadow></value></block></value> 
                                              <value name="DELAY_MS"><shadow type="math_number" id="B`I)!%M2(igl!Y5]vb9E"><field name="NUM">0</field></shadow> 
                                                <block type="math_number" id="g(I7tCYtg/l/wAl~3G4Z"><field name="NUM">60000</field></block></value></block></statement></block></next></block></statement></block></next></block></statement> 
                          <next><block type="comment" id=";d8oI-}TK1HlLGi|m`9O"><field name="COMMENT">Trigger Abwesenheit_Minuten</field>
                              <next><block type="on" id="o;z5^hu#VO@@M)i:QuZN"><field name="OID">javascript.0.Abwesenheit_Minuten</field>
                                  <field name="CONDITION">ne</field>
              
                                  <statement name="STATEMENT"><block type="comment" id="]X/%8AMd.,;DUO9WMf/]"><field name="COMMENT">Falls Abwesenheit_Minuten gleich 5 Minuten</field>
                                      <next><block type="controls_if" id="2ejv7NvXV.#35dY(}*,("><value name="IF0"><block type="logic_compare" id="+OScM(;z~?l]rR1u]b?W"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="[0]n*rKA7G#BtCAuK`+W"><field name="ATTR">val</field>
                                                  <field name="OID">javascript.0.Abwesenheit_Minuten</field></block></value> 
                                              <value name="B"><block type="math_number" id="e*Ee,pIqi#j5/(aOmBgp"><field name="NUM">5</field></block></value></block></value> 
                                          <statement name="DO0"><block type="comment" id="rCWQB/BbS[[5MUgfom1*"><field name="COMMENT">Dann schließe die Tür ab</field>
                                              <next><block type="control" id="~}.4ts3|oG}jxo}zQ+ft"><mutation delay_input="false"></mutation>
                                                  <field name="OID">hm-rpc.0.KEQ085xxxx.1.STATE</field>
                                                  <field name="WITH_DELAY">FALSE</field>
                                                  <value name="VALUE"><block type="logic_boolean" id="z~In[}V3@zq#`DbZ)-3-"><field name="BOOL">FALSE</field></block></value></block></next></block></statement></block></next></block></statement> 
                                  <next><block type="comment" id="o5+3R`05Gv({zPgzifm)"><field name="COMMENT">Trigger Anwesenheit</field>
                                      <next><block type="on_ext" id="qx-K5(jZ_za(S_c:JTWR"><mutation items="2"></mutation>
                                          <field name="CONDITION">ne</field>
              
                                          <value name="OID0"><shadow type="field_oid" id="C+Vy^^VVm(#(*k}K0b,{"><field name="oid">hm-rega.0.19754</field></shadow></value> 
                                          <value name="OID1"><shadow type="field_oid" id="|kDX@K,k*s-st@U@%V@?"><field name="oid">hm-rega.0.19755</field></shadow></value> 
                                          <statement name="STATEMENT"><block type="comment" id="YgAJ=uhzuq0IJS/%matA"><field name="COMMENT">Anwesenheit Stefan ODER Nicole ist wahr</field>
                                              <next><block type="controls_if" id="J+}ay2vYpxG:j@K@9Pz|"><value name="IF0"><block type="logic_operation" id="gF]Wu5aTb63+^odhw-cw"><field name="OP">OR</field>
                                                      <value name="A"><block type="logic_compare" id="Q2{a=VybNc0q5|%pe#E+"><field name="OP">EQ</field>
                                                          <value name="A"><block type="get_value" id="!e41(NR7)Ty@6eCn2]{P"><field name="ATTR">val</field>
                                                              <field name="OID">hm-rega.0.19754</field></block></value> 
                                                          <value name="B"><block type="logic_boolean" id="Kl1[,OO1IcbV6(eGkDxO"><field name="BOOL">TRUE</field></block></value></block></value> 
                                                      <value name="B"><block type="logic_compare" id="3bl8XgVFH-T/RyBq,0KO"><field name="OP">EQ</field>
                                                          <value name="A"><block type="get_value" id=";}x/sE5C}n!3j~bv76du"><field name="ATTR">val</field>
                                                              <field name="OID">hm-rega.0.19755</field></block></value> 
                                                          <value name="B"><block type="logic_boolean" id="mZZ#fSq*kG}1S-g_7E#9"><field name="BOOL">TRUE</field></block></value></block></value></block></value> 
                                                  <statement name="DO0"><block type="comment" id="GZTQJQsp~o^dZX3BpC=j"><field name="COMMENT">Setze Abwesenheit_Minuten auf 0</field>
                                                      <next><block type="control" id="@r(u6I[]_c[6,`z_wRlK"><mutation delay_input="false"></mutation>
                                                          <field name="OID">javascript.0.Abwesenheit_Minuten</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE"><block type="math_number" id="QSt1Fqn;:RSpiH5qNZCK"><field name="NUM">0</field></block></value></block></next></block></statement></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></xml> 
              
              1 Reply Last reply Reply Quote 0
              • R
                RappiRN Most Active last edited by

                Also ich würde das ganz kurz lösen, etwa so:

                2216_abschlie_en.jpg

                Export:

                ! ````
                <xml xmlns="http://www.w3.org/1999/xhtml"><block id="d5#O+3XtPq;(TXY;T#VE" type="comment" x="-598" y="-176"><field name="COMMENT">Trigger Anwesenheit</field>
                <next><block id="7.;.]I_qHy;|LM6r~cQ0" type="on_ext"><mutation items="2"></mutation>
                <field name="CONDITION">ne</field>

                    <value name="OID0"><shadow id="tJ4K@d5P/`Ju[Gb+Od!l" type="field_oid"><field name="oid">hm-rega.0.19754</field></shadow></value> 
                    <value name="OID1"><shadow id=",cc}|HK)H,%3V0P-Re_8" type="field_oid"><field name="oid">hm-rega.0.19755</field></shadow></value> 
                    <statement name="STATEMENT"><block id="6ux=}[ZGzBP8/%Tv!:M1" type="comment"><field name="COMMENT">Anwesenheit Stefan UND Nicole</field>
                        <next><block id="C,5si]khTWf_dY:;{7-_" type="controls_if"><mutation elseif="1"></mutation>
                            <value name="IF0"><block id="eUazc]-^Kgi8}=W8ahH1" type="logic_operation"><field name="OP">AND</field>
                                <value name="A"><block id="a!8u+F6nW)(O-vb-s3[8" type="logic_compare"><field name="OP">EQ</field>
                                    <value name="A"><block id="6yrv#J]Kr+G!FTkr;B?|" type="get_value"><field name="ATTR">val</field>
                                        <field name="OID">hm-rega.0.19754</field></block></value> 
                                    <value name="B"><block id="=XS;thp6Ba01Tj0a{Bl|" type="logic_boolean"><field name="BOOL">FALSE</field></block></value></block></value> 
                                <value name="B"><block id="t1nwVbGEXT3tAbZsR^xE" type="logic_compare"><field name="OP">EQ</field>
                                    <value name="A"><block id="_p;Q[:bP/R-V8q=XHhEI" type="get_value"><field name="ATTR">val</field>
                                        <field name="OID">hm-rega.0.19755</field></block></value> 
                                    <value name="B"><block id="e_zC78^-q_b[@Bd,N|p!" type="logic_boolean"><field name="BOOL">FALSE</field></block></value></block></value></block></value> 
                            <statement name="DO0"><block id="#KJ-Bj:ybC?6*ALw;SkG" type="comment"><field name="COMMENT">warte 5min</field>
                                <next><block id="EO*m;lSsRR#SR/w=|rq[" type="timeouts_settimeout"><field name="NAME">timeout</field>
                                    <field name="DELAY">5</field>
                                    <field name="UNIT">min</field>
                                    <statement name="STATEMENT"><block id="rCWQB/BbS[[5MUgfom1*" type="comment"><field name="COMMENT">Dann schließe die Tür ab</field>
                                        <next><block id="~}.4ts3|oG}jxo}zQ+ft" type="control"><mutation delay_input="false"></mutation>
                                            <field name="OID">hm-rpc.0.KEQ085xxxx.1.STATE</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE"><block id="z~In[}V3@zq#`DbZ)-3-" type="logic_boolean"><field name="BOOL">FALSE</field></block></value></block></next></block></statement></block></next></block></statement> 
                            <value name="IF1"><block id="j1=pqn[2FJXU;?fa;/X[" type="logic_operation"><field name="OP">OR</field>
                                <value name="A"><block id="LCl5eST4ub[ZT~qLd7ex" type="logic_compare"><field name="OP">EQ</field>
                                    <value name="A"><block id="G~i5ZVY~[g#Qi5o)mAB[" type="get_value"><field name="ATTR">val</field>
                                        <field name="OID">hm-rega.0.19754</field></block></value> 
                                    <value name="B"><block id="LAz(|IO:nnPW!yKEuYRM" type="logic_boolean"><field name="BOOL">FALSE</field></block></value></block></value> 
                                <value name="B"><block id="Ps,+z?jbeB)FKtvn,://" type="logic_compare"><field name="OP">EQ</field>
                                    <value name="A"><block id="SK10Pbzt9Cjzm5GKz!.(" type="get_value"><field name="ATTR">val</field>
                                        <field name="OID">hm-rega.0.19755</field></block></value> 
                                    <value name="B"><block id="qOOvmaMkZNMO^pSKI4.Q" type="logic_boolean"><field name="BOOL">FALSE</field></block></value></block></value></block></value> 
                            <statement name="DO1"><block id="dio;rhIOR`PB4Ex.ap@S" type="timeouts_cleartimeout"><field name="NAME">timeout</field>
                                <next><block id="^{_8d1l8Z{4V)!W_A:EI" type="comment"><field name="COMMENT">Dann schließe die Tür auf</field>
                                    <next><block id="1?w@OX:T0VXIz#Ik3UFQ" type="control"><mutation delay_input="false"></mutation>
                                        <field name="OID">hm-rpc.0.KEQ085xxxx.1.STATE</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE"><block id="vhOK-mdieM}(%OF3zE:z" type="logic_boolean"><field name="BOOL">TRUE</field></block></value></block></next></block></next></block></statement></block></next></block></statement></block></next></block></xml> 
                
                
                Die Datenpunkte sind alle aus deinem Blockly! :D
                
                :? Habe grad gesehen, dass bei dem "oder" noch beide Variablen auf "unwahr" stehen, die müssen natürlich beide auf "wahr"!
                
                Enrico
                1 Reply Last reply Reply Quote 0
                • S
                  Stefan1984 last edited by

                  Hallo Enrico,

                  bewirkt der timeout stop, dass die Tür nicht abgeschlossen wird, sobald ich innerhalb der 5 Minuten wieder anwesend bin?

                  Wenn ja, dann wäre es perfekt. Und dazu noch deutlich kürzer als meins. 😄

                  Stefan

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

                    Das sollte so sein, das habe ich mir jedenfalls so gedacht. 🙂

                    Man kann das Script, wenn es denn funktioniert noch etwas verbessern, in dem man z.B. auf den Duty-Cycle achtet. Dann müsste beim Aufschließen noch ein falls-Block rein, dann nur sendet, falls das Schloss zu ist, also keine Befehlssendung, wenn du während der 5min wieder da bist.

                    Mal sehen was rantanplan noch für Ideeen hat, er ist der Profi, ich nur der Azubi! 😄

                    Enrico

                    1 Reply Last reply Reply Quote 0
                    • rantanplan
                      rantanplan last edited by

                      @RappiRN:

                      Mal sehen was rantanplan noch für Ideeen hat, er ist der Profi, ich nur der Azubi! 😄 `
                      Der "Profi" hätte es so ähnlich gemacht 😉

                      Und den Hinweis auf "nur schalten wenn auch etwas zu schalten ist" hast Du ja auch gemacht. :!:

                      @Stefan1984 Und nie den Schlüssel vergessen 😉

                      Grüße

                      1 Reply Last reply Reply Quote 0
                      • S
                        Stefan1984 last edited by

                        Dann haben wir es. Danke ihr zwei.

                        Gute Nacht.

                        Stefan

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        561
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        1373
                        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