Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Script mit 6 Intervallen - Stop Problem, warum?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    840

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Script mit 6 Intervallen - Stop Problem, warum?

Scheduled Pinned Locked Moved Blockly
8 Posts 3 Posters 638 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    piro
    wrote on last edited by
    #1

    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.

    AsgothianA paul53P 2 Replies Last reply
    0
    • P piro

      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.

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      wrote on last edited by Asgothian
      #2

      @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

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      P 1 Reply Last reply
      0
      • P piro

        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.

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #3

        @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.

        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 Reply Last reply
        0
        • P Offline
          P Offline
          piro
          wrote on last edited by
          #4

          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
          0
          • AsgothianA 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 Offline
            P Offline
            piro
            wrote on last edited by
            #5

            @Asgothian Woher kommt die "State Value"?

            paul53P 1 Reply Last reply
            0
            • P piro

              @Asgothian Woher kommt die "State Value"?

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #6

              @piro sagte:

              Woher kommt die "State Value"?

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

              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

              P 1 Reply Last reply
              0
              • paul53P paul53

                @piro sagte:

                Woher kommt die "State Value"?

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

                P Offline
                P Offline
                piro
                wrote on last edited by
                #7

                @paul53 Alles klar. Danke.

                P 1 Reply Last reply
                0
                • P piro

                  @paul53 Alles klar. Danke.

                  P Offline
                  P Offline
                  piro
                  wrote on last edited by
                  #8

                  Hi,

                  ich habe es jetzt doch mit einem Script gemacht.

                  Schönen Abend noch.

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  853

                  Online

                  32.6k

                  Users

                  82.0k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe