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. Script mit 6 Intervallen - Stop Problem, warum?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Script mit 6 Intervallen - Stop Problem, warum?

Geplant Angeheftet Gesperrt Verschoben Blockly
8 Beiträge 3 Kommentatoren 638 Aufrufe 2 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.
  • P Offline
    P Offline
    piro
    schrieb am zuletzt editiert von
    #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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          piro
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #5

            @Asgothian Woher kommt die "State Value"?

            paul53P 1 Antwort Letzte Antwort
            0
            • P piro

              @Asgothian Woher kommt die "State Value"?

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • paul53P paul53

                @piro sagte:

                Woher kommt die "State Value"?

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

                P Offline
                P Offline
                piro
                schrieb am zuletzt editiert von
                #7

                @paul53 Alles klar. Danke.

                P 1 Antwort Letzte Antwort
                0
                • P piro

                  @paul53 Alles klar. Danke.

                  P Offline
                  P Offline
                  piro
                  schrieb am zuletzt editiert von
                  #8

                  Hi,

                  ich habe es jetzt doch mit einem Script gemacht.

                  Schönen Abend noch.

                  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

                  926

                  Online

                  32.6k

                  Benutzer

                  81.9k

                  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