NEWS
30min Pause nach Skript Ausführung
-
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>
-
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 }
-
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.
-
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:
ioBroker Skript:
-
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.
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
-
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.
-
Prinzip: