Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Script mit 6 Intervallen - Stop Problem, warum?

    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

    Script mit 6 Intervallen - Stop Problem, warum?

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

      Moin,

      ich habe mir eine Script geschrieben, welches meine Türen überwacht. Wenn eine Tür länger als die erlaubte Öffnungszeit offen steht, möchte ich benachrichtigt werden.

      Anbei mein Test Script.
      1adc451c-6937-4a7d-8411-f94316195502-image.png

      Bei meinen Tests habe ich den Balkon aufgemacht und dann die Tür beim Eingang. Im Log konnte ich schön die Meldungen sehen. Danach habe ich die Tür vom Eingang zu gemacht und die Log Einträge wurden für die Tür Eingang nicht mehr geschrieben.
      Zum Schluss habe ich den Balkon geschlossen aber leider wurden die Log Einträge nicht beendet.
      Das habe ich 3mal getestet. Für den Balkon bleibt das Intervall aktiv? Warum wird es nicht gestoppt?

      Muss ich vielleicht pro Tür ein Script machen, damit sich die Intervalle nicht in die Quere kommen?

      Vielen Dank im Voraus.

      Asgothian paul53 2 Replies Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @piro last edited by Asgothian

        @piro Ich denke das hat nichts mit dem Intervall zu tun, sondern mit dem Zeitverhalten. Dadurch das du die einzelnen Datenpunkte immer extra noch einmal abfragst kann es zu lange dauern bis du zu der eigentlichen Abfrage kommst.

        Besser ist das so zu machen:

        Entscheidend ist das über den Objekt ID Block die ID erkannt und danach die richtige Nachricht ausgegeben werden kann.

        Screen Shot 2020-10-28 at 12.42.27 .png

        <xml xmlns="https://developers.google.com/blockly/xml">
         <variables>
           <variable type="interval" id="interval">interval</variable>
           <variable type="interval" id="interval2">interval2</variable>
           <variable type="interval" id="interval3">interval3</variable>
         </variables>
         <block type="on_ext" id=";:@NQ(`-Bvh)mqigs6^j" x="238" y="238">
           <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
           <field name="CONDITION">ne</field>
           <field name="ACK_CONDITION"></field>
           <value name="OID0">
             <shadow type="field_oid" id="6RwTG5J;Hp+h)6i#rtSC">
               <field name="oid">default</field>
             </shadow>
             <block type="selector" id="}6B?J=%+Ti6Q~9ws6+h?">
               <field name="TEXT">channel[state.id=*]</field>
             </block>
           </value>
           <statement name="STATEMENT">
             <block type="controls_if" id="`*n6o;=yRycu[%)m#l!M">
               <mutation elseif="2"></mutation>
               <value name="IF0">
                 <block type="logic_compare" id="V,#$qcyC9aj1v)#/c+Ci">
                   <field name="OP">EQ</field>
                   <value name="A">
                     <block type="text" id="*=0PK.o.HTL2TIxrpXVt">
                       <field name="TEXT">id des states tuer arbeitszimmer state</field>
                     </block>
                   </value>
                   <value name="B">
                     <block type="on_source" id="7UasVq)Qg4@_;ap|bFwC">
                       <field name="ATTR">id</field>
                     </block>
                   </value>
                 </block>
               </value>
               <statement name="DO0">
                 <block type="controls_if" id="w|a-8V;DYdCf[fDlCaMo">
                   <mutation else="1"></mutation>
                   <value name="IF0">
                     <block type="on_source" id="JvJ1atpXa!Y;-ne[0H]/">
                       <field name="ATTR">state.val</field>
                     </block>
                   </value>
                   <statement name="DO0">
                     <block type="timeouts_setinterval" id="T+[c(N]NB;QfnU|J-hrm">
                       <field name="NAME">interval</field>
                       <field name="INTERVAL">5</field>
                       <field name="UNIT">sec</field>
                       <statement name="STATEMENT">
                         <block type="debug" id="!5U0j8T_LJzl[QZSS/A!">
                           <field name="Severity">log</field>
                           <value name="TEXT">
                             <shadow type="text" id="j*^nkWNQ:CxIX-^~n~f`">
                               <field name="TEXT">arbeitszimmer offen</field>
                             </shadow>
                           </value>
                         </block>
                       </statement>
                     </block>
                   </statement>
                   <statement name="ELSE">
                     <block type="timeouts_clearinterval" id=":9j:g~|q$+m7y1kH.#TW">
                       <field name="NAME">interval</field>
                     </block>
                   </statement>
                 </block>
               </statement>
               <value name="IF1">
                 <block type="logic_compare" id="oEH?Y*.++f-S6iy$26wh">
                   <field name="OP">EQ</field>
                   <value name="A">
                     <block type="text" id="E4k9BX3|z:hWeh9z_tuo">
                       <field name="TEXT">id des states tuer balkon state</field>
                     </block>
                   </value>
                   <value name="B">
                     <block type="on_source" id="YlRweK0{Bwc;)6.JM#.U">
                       <field name="ATTR">id</field>
                     </block>
                   </value>
                 </block>
               </value>
               <statement name="DO1">
                 <block type="controls_if" id=":uBYUWM%UI|pWrsW5m9`">
                   <mutation else="1"></mutation>
                   <value name="IF0">
                     <block type="on_source" id="Hk8!I.byj^wv.q,U[+Ig">
                       <field name="ATTR">state.val</field>
                     </block>
                   </value>
                   <statement name="DO0">
                     <block type="timeouts_setinterval" id="07sF!3F^m=MjYJYsfpG/">
                       <field name="NAME">interval2</field>
                       <field name="INTERVAL">5</field>
                       <field name="UNIT">sec</field>
                       <statement name="STATEMENT">
                         <block type="debug" id=";S:L70]JiubIuGw}dM=`">
                           <field name="Severity">log</field>
                           <value name="TEXT">
                             <shadow type="text" id="|8ZPBtc$;o*j8*chvZ27">
                               <field name="TEXT">balkon offen</field>
                             </shadow>
                           </value>
                         </block>
                       </statement>
                     </block>
                   </statement>
                   <statement name="ELSE">
                     <block type="timeouts_clearinterval" id="o[+zYPH:183b7vlwA7}W">
                       <field name="NAME">interval2</field>
                     </block>
                   </statement>
                 </block>
               </statement>
               <value name="IF2">
                 <block type="logic_compare" id="NO+XIJsVCzqM,7-b:]l.">
                   <field name="OP">EQ</field>
                   <value name="A">
                     <block type="text" id=":GVBJ5v}7Z-@GO=0[ted">
                       <field name="TEXT">id des states tuer eingan state</field>
                     </block>
                   </value>
                   <value name="B">
                     <block type="on_source" id="=SOUh^.3Mm=yB0_Z/O4-">
                       <field name="ATTR">id</field>
                     </block>
                   </value>
                 </block>
               </value>
               <statement name="DO2">
                 <block type="controls_if" id=".V7qyU04{O:m/kDdtc)@">
                   <mutation else="1"></mutation>
                   <value name="IF0">
                     <block type="on_source" id="Y|n[7@^Z^uQ1fD;3gwFv">
                       <field name="ATTR">state.val</field>
                     </block>
                   </value>
                   <statement name="DO0">
                     <block type="timeouts_setinterval" id="_^LS$AP:6PH+ZIamysad">
                       <field name="NAME">interval3</field>
                       <field name="INTERVAL">5</field>
                       <field name="UNIT">sec</field>
                       <statement name="STATEMENT">
                         <block type="debug" id="r(63sLO``1xg^,;Y[[Ew">
                           <field name="Severity">log</field>
                           <value name="TEXT">
                             <shadow type="text" id="sRDVSd.b5^D1#yAjOH%p">
                               <field name="TEXT">eingang offen</field>
                             </shadow>
                           </value>
                         </block>
                       </statement>
                     </block>
                   </statement>
                   <statement name="ELSE">
                     <block type="timeouts_clearinterval" id=";Jy1bmXD[CR[alt^+b:$">
                       <field name="NAME">interval2</field>
                     </block>
                   </statement>
                 </block>
               </statement>
             </block>
           </statement>
         </block>
        </xml>
        

        Code zum import hinter dem Spoiler

        P 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @piro last edited by paul53

          @piro sagte:

          Muss ich vielleicht pro Tür ein Script machen, damit sich die Intervalle nicht in die Quere kommen?

          Es kommen sich nicht die Intervalle in die Quere, sondern die Trigger: Wenn eine Tür offen ist und die zweite Tür wird geöffnet, wird für Tür 1 ein weiteres Intervall gestartet, da die Bedingung dafür weiterhin erfüllt ist. Du kannst es so machen wie von @Asgothian vorgeschlagen oder einfach für jede Tür einen eigenen Trigger verwenden.

          1 Reply Last reply Reply Quote 0
          • P
            piro last edited by

            Danke euch beiden. Ich werden wohl für alle Türen und später für alle Fenster jeweils Scripte machen.

            Ist etwas Arbeit aber dann ist es auch alles sauber getrennt.

            Das mit dem IF ist auch eine gute Idee.

            Vielen Dank nochmal. Immer wieder schön wenn man ein Forum hat, wo man Hilfe bekommt.

            Schönen Abend noch.

            1 Reply Last reply Reply Quote 0
            • P
              piro @Asgothian last edited by

              @Asgothian Woher kommt die "State Value"?

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @piro last edited by

                @piro sagte:

                Woher kommt die "State Value"?

                Das ist die englische Version von "Wert" (unter "Trigger").

                P 1 Reply Last reply Reply Quote 0
                • P
                  piro @paul53 last edited by

                  @paul53 Alles klar. Danke.

                  P 1 Reply Last reply Reply Quote 0
                  • P
                    piro @piro last edited by

                    Hi,

                    ich habe es jetzt doch mit einem Script gemacht.

                    Schönen Abend noch.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    692
                    Online

                    31.7k
                    Users

                    79.9k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    431
                    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