Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. 30min Pause nach Skript Ausführung

    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

    30min Pause nach Skript Ausführung

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

      Moin Leute,

      da ich gerade nicht weiter komme, benötige ich leider erneut Eure Hilfe.

      Ich habe einen Bewegungsmelder im Flur und dieser soll bei einer Bewegung den ALEXA Spot mit dem Aktuellen Hausakku Zustand in % ansprechen.

      Dieses funktioniert auch soweit, jedoch bei <u>jeder erkannten Bewegung</u> (kann nervig werden alle 3-4min)

      Ich möchte daher eine Pause von 30min einfügen, wie könnte man das realisieren ?

      Beispiel:

      Bewegung = Skript wird ausgeführt und ALEXA wird angesprochen.

      Nach z.B. 10min erneute Bewegung = ALEXA wird <u>nicht</u> angesprochen.

      Ab 30min erneute Bewegung = ALEXA wird wieder angesprochen.

       <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="c`tY=3A*f9R)GRP!v1(J" x="-1087" y="-1237"><mutation items="1"></mutation>
          <field name="CONDITION">true</field>
      
          <value name="OID0"><shadow type="field_oid" id="/_mPzc3/#;@#?,fl?V]E"><field name="oid">hm-rpc.1.000########011B.1.MOTION</field></shadow></value> 
          <statement name="STATEMENT"><block type="controls_if" id="F.`-8f|g+oj=O6Y2,pF!"><value name="IF0"><block type="time_compare_ex" id="83Q@?/7*xIE-+^a3awCp"><mutation end_time="true" actual_time="true"></mutation>
                  <field name="USE_ACTUAL_TIME">TRUE</field>
                  <field name="OPTION">between</field>
                  <value name="START_TIME"><shadow type="text" id="uaeUg*:~ycr]({{Q0N9E"><field name="TEXT">09:00</field></shadow></value> 
                  <value name="END_TIME"><shadow type="text" id="7XQ,ZZv:HH4q[!INGgyn"><field name="TEXT">19:00</field></shadow></value></block></value> 
              <statement name="DO0"><block type="variables_set" id="Y]p/4ILH|ZHtu0t;rzv5"><field name="VAR">Zwischenspeicher</field>
                  <value name="VALUE"><block type="get_value" id="|`b|CAJPAkZuP5l_NNzT"><field name="ATTR">val</field>
                      <field name="OID">alexa2.0.Echo-Devices.########.Player.volume</field></block></value> 
                  <next><block type="control" id="A]CspWv7CrQK~S]NIX!b"><mutation delay_input="true"></mutation>
                      <field name="OID">alexa2.0.Echo-Devices.########.Player.volume</field>
                      <field name="WITH_DELAY">TRUE</field>
                      <field name="DELAY_MS">100</field>
                      <field name="UNIT">ms</field>
                      <field name="CLEAR_RUNNING">FALSE</field>
                      <value name="VALUE"><block type="math_number" id="5,rHrGS]*s#w0G]E)=*{"><field name="NUM">45</field></block></value> 
                      <next><block type="controls_if" id="qWhnWk.9%-W7`Ll-9Oia"><value name="IF0"><block type="logic_compare" id="B_AOEYWh@k;p,;!;^e!C"><field name="OP">LT</field>
                              <value name="A"><block type="get_value" id="EasG|iShEZEa^Q=0c@[C"><field name="ATTR">val</field>
                                  <field name="OID">modbus.0.holdingRegisters.210_Act__state of charge</field></block></value> 
                              <value name="B"><block type="text" id=":CF?qp1Hyh?m0HsxH?D;"><field name="TEXT">21</field></block></value></block></value> 
                          <statement name="DO0"><block type="control" id="%qbPCo,ZXCn:+ApoIo/c"><mutation delay_input="false"></mutation>
                              <field name="OID">alexa2.0.Echo-Devices.########.Commands.speak</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE"><block type="text_join" id="5LB_!O:!AA#M3NC92,2W"><mutation items="3"></mutation>
                                  <value name="ADD0"><block type="text" id="JimV{=[+z2^)Fj}GhFM`"><field name="TEXT">Die Haus Batterie hat einen aktuellen Zustand von</field></block></value> 
                                  <value name="ADD1"><block type="get_value" id="n(L`42cPPitV5H4;b4Mr"><field name="ATTR">val</field>
                                      <field name="OID">modbus.0.holdingRegisters.210_Act__state of charge</field></block></value> 
                                  <value name="ADD2"><block type="text" id="7,VdIx+zmO)JXj-xcl/C"><field name="TEXT">Prozent, daher bitte die Energiekosten einsparen. Vielen Dank !</field></block></value></block></value> 
                              <next><block type="control" id="RyDcq48z@I1eSZxohpsy"><mutation delay_input="true"></mutation>
                                  <field name="OID">alexa2.0.Echo-Devices.########.Player.volume</field>
                                  <field name="WITH_DELAY">TRUE</field>
                                  <field name="DELAY_MS">9</field>
                                  <field name="UNIT">sec</field>
                                  <field name="CLEAR_RUNNING">FALSE</field>
                                  <value name="VALUE"><block type="variables_get" id="=r*S/[TMrNpcHR}Q=b[J"><field name="VAR">Zwischenspeicher</field></block></value></block></next></block></statement></block></next></block></next></block></statement></block></statement> 
          <next><block type="on_ext" id="Qs*-gVE#iT-S674{0/n4"><mutation items="1"></mutation>
              <field name="CONDITION">true</field>
      
              <value name="OID0"><shadow type="field_oid" id="_kIuG2JJn,JoC5:Dmn_z"><field name="oid">hm-rpc.1.00091709AC011B.1.MOTION</field></shadow></value> 
              <statement name="STATEMENT"><block type="controls_if" id="bCJJxquzJvv:!TZB!+DA"><value name="IF0"><block type="time_compare_ex" id="vg(q9.sl))?6gma}xu=b"><mutation end_time="true" actual_time="true"></mutation>
                      <field name="USE_ACTUAL_TIME">TRUE</field>
                      <field name="OPTION">between</field>
                      <value name="START_TIME"><shadow type="text" id=";c~}XVdia~~;o0k7,Ni3"><field name="TEXT">09:00</field></shadow></value> 
                      <value name="END_TIME"><shadow type="text" id=";CJH~iz_;NZ,xd1Rc)Nt"><field name="TEXT">19:00</field></shadow></value></block></value> 
                  <statement name="DO0"><block type="variables_set" id=".GcC7YyJ3sdSCjV4frg["><field name="VAR">Zwischenspeicher</field>
                      <value name="VALUE"><block type="get_value" id="r)kMjVb..)+D-qiXfVa?"><field name="ATTR">val</field>
                          <field name="OID">alexa2.0.Echo-Devices.########.Player.volume</field></block></value> 
                      <next><block type="control" id="f(C]y)HwEU_[BK6l3Kls"><mutation delay_input="true"></mutation>
                          <field name="OID">alexa2.0.Echo-Devices.########.Player.volume</field>
                          <field name="WITH_DELAY">TRUE</field>
                          <field name="DELAY_MS">100</field>
                          <field name="UNIT">ms</field>
                          <field name="CLEAR_RUNNING">FALSE</field>
                          <value name="VALUE"><block type="math_number" id="3#rPD.QN49iX(5GP_U`6"><field name="NUM">45</field></block></value> 
                          <next><block type="controls_if" id="{Rgg7pTC+i-K,}{9JOgY"><value name="IF0"><block type="logic_operation" id="QLAW^bdfA2eQD/0og_Tb"><field name="OP">AND</field>
                                  <value name="A"><block type="logic_compare" id="F,J%,x6B+]il`jNF^Nvu"><field name="OP">GT</field>
                                      <value name="A"><block type="get_value" id="u?+EhX1lo_1)zM@-q,!O"><field name="ATTR">val</field>
                                          <field name="OID">modbus.0.holdingRegisters.210_Act__state of charge</field></block></value> 
                                      <value name="B"><block type="text" id="m@E1rx8=?~?l:NkS+!jf"><field name="TEXT">21</field></block></value></block></value> 
                                  <value name="B"><block type="logic_compare" id=";%vl~=#/.]Y?zm]b7Wm?"><field name="OP">LT</field>
                                      <value name="A"><block type="get_value" id="A%.w@^481giW24YlX058"><field name="ATTR">val</field>
                                          <field name="OID">modbus.0.holdingRegisters.210_Act__state of charge</field></block></value> 
                                      <value name="B"><block type="text" id="[hyZ_HMQWbtFF91vhr/w"><field name="TEXT">95</field></block></value></block></value></block></value> 
                              <statement name="DO0"><block type="control" id="#Zf=q3Ncr+yfr|d1}j{I"><mutation delay_input="false"></mutation>
                                  <field name="OID">alexa2.0.Echo-Devices.########.Commands.speak</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE"><block type="text_join" id=".!XNL4M|8;kX;[?pRF=t"><mutation items="3"></mutation>
                                      <value name="ADD0"><block type="text" id="pWWQuCv;cI(kk=c8|z|_"><field name="TEXT">Die Haus Batterie hat einen aktuellen Zustand von</field></block></value> 
                                      <value name="ADD1"><block type="get_value" id="zH8F5+.F*bY8~]}Ra6s#"><field name="ATTR">val</field>
                                          <field name="OID">modbus.0.holdingRegisters.210_Act__state of charge</field></block></value> 
                                      <value name="ADD2"><block type="text" id="Jdd(-7@6GIeuI83t9m*X"><field name="TEXT">Prozent</field></block></value></block></value> 
                                  <next><block type="control" id="}[9X?e~YkXYi?W@8Bl+C"><mutation delay_input="true"></mutation>
                                      <field name="OID">alexa2.0.Echo-Devices.########.Player.volume</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">9</field>
                                      <field name="UNIT">sec</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE"><block type="variables_get" id="#!3b,/eg7kU-UhMfI*kK"><field name="VAR">Zwischenspeicher</field></block></value></block></next></block></statement></block></next></block></next></block></statement></block></statement> 
              <next><block type="on_ext" id="Xr/2ZeSXZL].BV]z*+ik"><mutation items="1"></mutation>
                  <field name="CONDITION">true</field>
      
                  <value name="OID0"><shadow type="field_oid" id="`?T{FGE0PpUSX%0F~a`Y"><field name="oid">hm-rpc.1.00091709AC011B.1.MOTION</field></shadow></value> 
                  <statement name="STATEMENT"><block type="controls_if" id="9BvZ(-xRtf7rsyHyg09B"><value name="IF0"><block type="time_compare_ex" id="Gsx+l71fMpTcdDkU/,8["><mutation end_time="true" actual_time="true"></mutation>
                          <field name="USE_ACTUAL_TIME">TRUE</field>
                          <field name="OPTION">between</field>
                          <value name="START_TIME"><shadow type="text" id="P%nNPSPAyj~}N8{#nfXX"><field name="TEXT">09:00</field></shadow></value> 
                          <value name="END_TIME"><shadow type="text" id="U@_.#}B-4;16@y~A=OQt"><field name="TEXT">19:00</field></shadow></value></block></value> 
                      <statement name="DO0"><block type="variables_set" id="{Y;:f:6*SwMh@ei#b2ZF"><field name="VAR">Zwischenspeicher</field>
                          <value name="VALUE"><block type="get_value" id="k]SX7vD/E)pJ;4;wOJRQ"><field name="ATTR">val</field>
                              <field name="OID">alexa2.0.Echo-Devices.#########.Player.volume</field></block></value> 
                          <next><block type="control" id="@RP@bLUs-|2X9f,0n-g;"><mutation delay_input="true"></mutation>
                              <field name="OID">alexa2.0.Echo-Devices.#########.Player.volume</field>
                              <field name="WITH_DELAY">TRUE</field>
                              <field name="DELAY_MS">100</field>
                              <field name="UNIT">ms</field>
                              <field name="CLEAR_RUNNING">FALSE</field>
                              <value name="VALUE"><block type="math_number" id="9O*;ijB8-CpU^sn8zzO]"><field name="NUM">45</field></block></value> 
                              <next><block type="controls_if" id="%w`=[p6_t7[/_gqEX!b_"><value name="IF0"><block type="logic_compare" id="T)H*a.9f!eKH[b@]~r=u"><field name="OP">GT</field>
                                      <value name="A"><block type="get_value" id="xYHG^|_M?akBb}ichZG)"><field name="ATTR">val</field>
                                          <field name="OID">modbus.0.holdingRegisters.210_Act__state of charge</field></block></value> 
                                      <value name="B"><block type="text" id="p2Blpf}?C}}TW+*Gm0}L"><field name="TEXT">94</field></block></value></block></value> 
                                  <statement name="DO0"><block type="control" id="JArR3|FNvP-fEV*]Cws]"><mutation delay_input="false"></mutation>
                                      <field name="OID">alexa2.0.Echo-Devices.########.Commands.speak</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE"><block type="text_join" id="H:eo]YUwCGH/%`#*wd;#"><mutation items="3"></mutation>
                                          <value name="ADD0"><block type="text" id="#iqoW`[~z_Rn-4HZYagy"><field name="TEXT">Die Haus Batterie hat einen aktuellen Zustand von</field></block></value> 
                                          <value name="ADD1"><block type="get_value" id="n@vpg9W*5B5|/^1ul./x"><field name="ATTR">val</field>
                                              <field name="OID">modbus.0.holdingRegisters.210_Act__state of charge</field></block></value> 
                                          <value name="ADD2"><block type="text" id="(]KkzqO{YpE(A4rb@fgs"><field name="TEXT">Prozent, daher bitte die Waschmaschine oder andere Verbraucher anstellen. Vielen Dank !</field></block></value></block></value> 
                                      <next><block type="control" id="T[pa5K:udiWMQy0cfTYu"><mutation delay_input="true"></mutation>
                                          <field name="OID">alexa2.0.Echo-Devices.########.Player.volume</field>
                                          <field name="WITH_DELAY">TRUE</field>
                                          <field name="DELAY_MS">9</field>
                                          <field name="UNIT">sec</field>
                                          <field name="CLEAR_RUNNING">FALSE</field>
                                          <value name="VALUE"><block type="variables_get" id="2pFZ=tI;%mQ5K(:`5WHy"><field name="VAR">Zwischenspeicher</field></block></value></block></next></block></statement></block></next></block></next></block></statement></block></statement></block></next></block></next></block></xml> 
      
      1 Reply Last reply Reply Quote 0
      • Digi-Kai
        Digi-Kai last edited by

        nur so als Idee:

        Du könntest dir einen Datenpunkt anlegen, in dem die letzte Bewegung als Timestamp abgespeichert wird.

        Bei Auslösen des Bewegungsmelders sollte dann dein Script prüfen, ob zischen der aktuellen Zeit und dem Timestamp z.B. die Zeit von 10 min überschritten wurde.

        if (jetzt - timestamp > 10) {
        Aktion ausführen 
        }
        
        1 Reply Last reply Reply Quote 0
        • sissiwup
          sissiwup last edited by

          Hi,

          auf der CCU würde ich so etwas über eine Sperr-Variable machen.

          Ansage nur, wenn Bewegung und frei.

          Bei Ansage: frei->gesperrt. In 30 Minuten wieder auf frei.

          Wichtig: Im Init/oder Nachskript die Variable auf frei setzen, sonst geht es schief falls du in der Sperrzeit neu startest.

          1 Reply Last reply Reply Quote 0
          • M
            marfa84 last edited by

            @sissiwup:

            Hi,

            auf der CCU würde ich so etwas über eine Sperr-Variable machen.

            Ansage nur, wenn Bewegung und frei.

            Bei Ansage: frei->gesperrt. In 30 Minuten wieder auf frei.

            Wichtig: Im Init/oder Nachskript die Variable auf frei setzen, sonst geht es schief falls du in der Sperrzeit neu startest. `

            Danke für die schnellen Antworten. 😄

            Ich bin nun das Problem erstmal mit einer HM-Sperr-Variable (Akku Ansage= frei/gesperrt) und einem HM-Programm angegangen, konnte es aber bislang noch nicht umfangreich testen, weil meine Frau im Bett kränkelt und sonst der Hammer kreist :lol:

            Homematic Programm:
            12554_akku_ansage_programm.png

            ioBroker Skript:
            12554_akku_ansage.png

            1 Reply Last reply Reply Quote 0
            • M
              marfa84 last edited by

              Leider habe ich gerade festgestellt das es wie oben Beschrieben, nicht funktioniert. :!:

              Begründung:

              Da ich den Bewegungsmelder nicht nur für die o.g. Ansage verwende, ist das Gerät so eingestellt, das er einen Mindestsendeabstand von 4min eingestellt hat. Somit kann der HmIP-SMI Bewegungsmelder "nur" alle 4min neu auslösen um seinen Akku auf lange Sicht zu schonen. Wenn also einer nach 5min durch den Flur schlendert, wird das o.g. HM-Programm "Akku Ansage" bei Änderung immer neu Ausgelöst und die 30min werden somit nicht eingehalten. 😉

              @Digi-Kai:

              nur so als Idee:

              Du könntest dir einen Datenpunkt anlegen, in dem die letzte Bewegung als Timestamp abgespeichert wird.

              Bei Auslösen des Bewegungsmelders sollte dann dein Script prüfen, ob zischen der aktuellen Zeit und dem Timestamp z.B. die Zeit von 10 min überschritten wurde.

              if (jetzt - timestamp > 10) {
              Aktion ausführen 
              }
              ```` `  
              

              Digi-Kai könntest du mir bitte deinen Vorschlag etwas umfangreicher für Dummi´s erläutern, weil ich Anfänger bin, vielen Dank.

              Datenpunk anlegen = Gerät bei Homematic unter CuX Daemon anlegen, damit ich das beim ioBroker finde ?

              Timestamp = ?

              Dein Script prüfen = welches Script meinst du ?

              Wo soll ich deinen Code einfügen ?

              Ich würde mich sehr freuen, wenn du mir helfen könntest, vielen Dank !

              Liebe Grüße

              Martin

              1 Reply Last reply Reply Quote 0
              • R
                radierer last edited by

                @marfa84:

                Begründung:

                Da ich den Bewegungsmelder nicht nur für die o.g. Ansage verwende, ist das Gerät so eingestellt, das er einen Mindestsendeabstand von 4min eingestellt hat. Somit kann der HmIP-SMI Bewegungsmelder "nur" alle 4min neu auslösen um seinen Akku auf lange Sicht zu schonen. Wenn also einer nach 5min durch den Flur schlendert, wird das o.g. HM-Programm "Akku Ansage" bei Änderung immer neu Ausgelöst und die 30min werden somit nicht eingehalten. 😉 `

                Mach doch einfach in die "Wenn" Bedingung den Systemzustand als "nur prüfen" mit rein .. dann sollte es doch gehen.

                Also wenn Bewegung erkannt (bei Änderung ..) UND Systemzustand "frei" (nur prüfen), DANN …

                So sollten die 30 Min. eingehalten und die nächste Sperre erfolgt bei >= 30 Min.

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

                  Prinzip:
                  493_blockly_30min_sperre.jpg

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  882
                  Online

                  31.8k
                  Users

                  79.9k
                  Topics

                  1.3m
                  Posts

                  5
                  7
                  713
                  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