NEWS
Blockly Timer Interval
-
Hallo,
entweder es gibt ein Problem mit dem Interval Timer oder ich habe ein Verständnis Problem.
Folgende Funktion möchte ich erreichen, wenn die Abwesenheit gesetzt wurde und ich über eine der beiden Türen im Haus komme soll eine Erinnerung (erste nach 20 Sek, dann alle 5 Minuten) für die Bestätigung der Anwesenheit kommen, der Teil funktioniert auch. Wenn ich die Anwesenheit bestätige soll natürlich keine Erinnerung mehr kommen und die Timer werden gestoppt, diese funktioniert leider nur ab und zu, dann kann ich machen was ich will, An- Abwesenheit hin und her schalten, ich bekomme alle 5 Minuten eine Erinnerung. Das komische ist, es funktioniert mal und mal nicht.
Ist das unsauber programmiert, was kann man anders machen, oder ist es vielleicht wirklich ein Fehler im Blockly? Auch die eingebauten debug Outputs helfen mir zur Fehler Analyse nicht weiter. Für Tipps bin ich wie immer sehr dankbar.
Lg Mike
-
Hallo Mike
Kannst Du mal einen Export machen?
Grüße
-
Hallo,
Hallo Mike
Kannst Du mal einen Export machen?
Grüße `
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="H[5%L}?bI:^#)U@U8brM" x="-12" y="-37"><mutation items="3"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="y}s)QQ6lzZE3w5hR5dt+"><field name="oid">hm-rpc.0.MEQ0186505.1.STATE</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="Mx8l`{[{Ml1Zbid^_+?:"><field name="oid">hm-rpc.0.MEQ0034759.1.STATE</field></shadow></value> <value name="OID2"><shadow type="field_oid" id="0E7=Cn6sp-38}vI68;_C"><field name="oid">hm-rega.0.12745</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="-DsDJB,s`94I4,^atF%+"><value name="IF0"><block type="logic_operation" id="dGlUKyp#Qj@aVX4%3MPe" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_operation" id="`CrRhp3r;._cQ0(z8r3V" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="uGx/)B.#AAj!ng{[n+@p"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="ZA5n+SDOh/@;Y3-Eh+R0"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.MEQ0186505.1.STATE</field></block></value> <value name="B"><block type="logic_boolean" id="d`4lw(=corF3O0+:]pG?"><field name="BOOL">TRUE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="KLCu@P+4a]HbH|xld!OS"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="jUaR202o7:%%y*K[Vz*r"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.MEQ0034759.1.STATE</field></block></value> <value name="B"><block type="logic_boolean" id="a+GaO1GT0W/99j0ays[}"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <value name="B"><block type="logic_compare" id="Z)!uJM*lAH^8@eV7auiw"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="|0]ya8RU};I~h48=/O.h"><field name="ATTR">val</field> <field name="OID">hm-rega.0.12745</field></block></value> <value name="B"><block type="logic_boolean" id="+ow!{2k#B~jNdxRhy!PS"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO0"><block type="timeouts_settimeout" id="v4_/iU8O%oo#L,;Xemb*"><field name="NAME">timeout</field> <field name="DELAY">20000</field> <statement name="STATEMENT"><block type="comment" id="n28or^{ErlNQm,EE/5?@"><field name="COMMENT">Geräte ID (optional)</field> <next><block type="comment" id="nvy|tMB2Yve=+cq*DViJ"><field name="COMMENT">Home-ipad-mini</field> <next><block type="comment" id="{c(N;M71ek4ihrWS`=YX"><field name="COMMENT">Home-ipad-iobroker</field> <next><block type="comment" id="2u:tQWN7`6X:f*39inuw"><field name="COMMENT">iPhone-Mike</field> <next><block type="comment" id="8R=IB`A0bM`xGeAV*CaD"><field name="COMMENT">iPhone-Ina</field> <next><block type="debug" id="P^6wEs{`;m:iCT_=.IiD"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="+`:IVMk;Z|Ip?JSGnCaM"><field name="TEXT">Bitte Anwesenheit bestätigen</field></shadow></value> <next><block type="pushover" id="avYkf@qk_Zyo]rTuP++C"><field name="PRIORITY">0</field> <value name="MESSAGE"><shadow type="text" id="hI|J@[w!^tn(4kjmPa()"><field name="TEXT">Bitte Anwesenheit bestätigen</field></shadow></value> <value name="TITLE"><block type="text" id="t=1X(!V)l2gA@fe6N!_a"><field name="TEXT">Meldung</field></block></value> <next><block type="timeouts_setinterval" id="i^J.AfKG[P0JBxD%[;46"><field name="NAME">Intervall</field> <field name="INTERVAL">300000</field> <statement name="STATEMENT"><block type="debug" id="-lA;eLgVW8(R8a@G#nvV"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="Kb,ks05-)euUI=TP~+Id"><field name="TEXT">Bitte Anwesenheit bestätigen</field></shadow></value> <next><block type="pushover" id="vQ)AY2LrSt`aD)86R%#e"><field name="PRIORITY">0</field> <value name="MESSAGE"><shadow type="text" id="}I5UcxA[V{eh?X9}oN[#"><field name="TEXT">Bitte Anwesenheit bestätigen</field></shadow></value> <value name="TITLE"><block type="text" id="Q`SrjqJAfKCf6QudE{y:"><field name="TEXT">Meldung</field></block></value></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></statement> <next><block type="controls_if" id="CAi7yD)gxR5TH-)^2D6S"><value name="IF0"><block type="logic_compare" id="Q4C;t`P^=`D;iT*+Q:vr"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="*%j|tX/knWS}cI.e[Jxx"><field name="ATTR">val</field> <field name="OID">hm-rega.0.12745</field></block></value> <value name="B"><block type="logic_boolean" id="QSXEl)HU2=V?oz@A[cf?"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="timeouts_clearinterval" id="`c_QE*%e0PhkjSDDq:x?"><field name="NAME">Intervall</field> <next><block type="timeouts_cleartimeout" id="tuW_=B1L;leN}%1{6ikv"><field name="NAME">timeout</field> <next><block type="debug" id="]FTd/aCKYp.e,GT,SdI?"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="kH]I[`D)HB69%A.?l:5`"><field name="TEXT">Anwesenheit bestätigt</field></shadow></value></block></next></block></next></block></statement></block></next></block></statement></block></xml>
Ich hoffe Du meintest dies, da kann ich jetzt ja gar nichts mehr mit anfangen, benutze die Funktion immer nur zum kopieren.
Lg Mike
-
Ja, genau das habe ich gemeint.
Dein Blockly sah, für mich, so seltsam aus.
Und wieder etwas dazu gelernt.
Die Umstellung von interne und externe Eingänge kannte ich noch nicht.
Macht manche einige Blocklys übersichtlicher.
Doch nun zu Deiner Anfrage.
Bei mir funktioniert es einwandfrei.
Zum Testen habe ich mir in ioBroker drei boolsche Variablen angelegt.
(bolTeest01, bolTesst02 und bolTest03)
Und in VIS drei entsprechende Widgets zum Schalten.
so sieht mein Test aus.
hier ist der Export
! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
! <block type="on_ext" id="7%k7PEc
]e^Mj]SP,SQ" x="-63" y="38"><mutation items="3"></mutation>
! <field name="CONDITION">ne</field>
! <value name="OID0"><shadow type="field_oid" id="-ciQb
Q6Yw#fz5Rph[q"><field name="oid">default</field></shadow>
! <block type="field_oid" id="73yI~bh6mGafh/kk:Ya@"><field name="oid">javascript.1.bolTest01</field></block></value>
! <value name="OID1"><shadow type="field_oid" id="b1BxXv}5?MpyF#pp{+6T"><field name="oid">default</field></shadow>
! <block type="field_oid" id=")l1;+,8ps1e7c%y*])8t"><field name="oid">javascript.1.bolTest02</field></block></value>
! <value name="OID2"><shadow type="field_oid" id="NvhW;ezVKm%?b!IVGHuE"><field name="oid">default</field></shadow>
! <block type="field_oid" id="9taKS,6~ohmd){mkrXut"><field name="oid">javascript.1.bolTest03</field></block></value>
! <statement name="STATEMENT"><block type="controls_if" id="JL:2N;)y@c!A:59T8!R5"><value name="IF0"><block type="logic_operation" id="~wKQcj~8+@8BsT)4H(A^" inline="false"><field name="OP">AND</field>
! <value name="A"><block type="logic_operation" id="c~lNhR57tE{58+1mlP^" inline="false"><field name="OP">OR</field>
! <value name="A"><block type="logic_compare" id="%sKo]nMR_r4(+-Yn%YcJ"><field name="OP">EQ</field>
! <value name="A"><block type="get_value" id="J+-2h?X(.oOH]|*-8a"><field name="ATTR">val</field> ! <field name="OID">javascript.1.bolTest01</field></block></value> ! <value name="B"><block type="logic_boolean" id="Bt^|Cb}Spcf:)|7%6wEu"><field name="BOOL">TRUE</field></block></value></block></value> ! <value name="B"><block type="logic_compare" id="!)*xC|Xn!YKEPo_tRX?]"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="@12+Nt})-)p71LUUW}Pf"><field name="ATTR">val</field> ! <field name="OID">javascript.1.bolTest02</field></block></value> ! <value name="B"><block type="logic_boolean" id="wc1o?zAUDx-TH~Z)
iGI"><field name="BOOL">TRUE</field></block></value></block></value></block></value>
! <value name="B"><block type="logic_compare" id="|t%H%Fy9Ozy5:oaoMsBu"><field name="OP">EQ</field>
! <value name="A"><block type="get_value" id="XAO4HGH4J2JsEcaIrnjQ"><field name="ATTR">val</field>
! <field name="OID">javascript.1.bolTest03</field></block></value>
! <value name="B"><block type="logic_boolean" id="@WnaLS4-|N6Wk_(JQL"><field name="BOOL">FALSE</field></block></value></block></value></block></value>
! <statement name="DO0"><block type="debug" id="}GCpP3X0B@0xRYYCdQc"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id="9ygzC.CodF9
N^;A_N:"><field name="TEXT">setzte Timer </field></shadow></value>
! <next><block type="timeouts_settimeout" id="v4_/iU8O%oo#L,;Xemb"><field name="NAME">timeout</field>
! <field name="DELAY">10000</field>
! <statement name="STATEMENT"><block type="debug" id="P^6wEs{;m:iCT_=.IiD"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id="+
:IVMk;Z|Ip?JSGnCaM"><field name="TEXT">Bitte Anwesenheit bestätigen</field></shadow></value>
! <next><block type="debug" id="PmGf|Qmo/pN#zQ7TqoUT"><field name="Severity">log</field>
! <value name="TEXT"><shadow type="text" id="wzaPQqj{%C(5f,uMuBz."><field name="TEXT">setzte Interval</field></shadow></value>
! <next><block type="timeouts_setinterval" id="i^J.AfKG[P0JBxD%[;46"><field name="NAME">Intervall</field>
! <field name="INTERVAL">20000</field>
! <statement name="STATEMENT"><block type="debug" id="-lA;eLgVW8(R8a@G#nvV"><field name="Severity">log</field>
! <value name="TEXT"><shadow type="text" id="Kb,ks05-)euUI=TP~+Id"><field name="TEXT">Bitte Anwesenheit bestätigen!!!</field></shadow></value></block></statement></block></next></block></next></block></statement></block></next></block></statement>
! <next><block type="controls_if" id="CAi7yD)gxR5TH-)^2D6S"><value name="IF0"><block type="logic_compare" id="Q4C;tP^=
D;iT*+Q:vr"><field name="OP">EQ</field>
! <value name="A"><block type="get_value" id="%j|tX/knWS}cI.e[Jxx"><field name="ATTR">val</field>
! <field name="OID">javascript.1.bolTest03</field></block></value>
! <value name="B"><block type="logic_boolean" id="QSXEl)HU2=V?oz@A[cf?"><field name="BOOL">TRUE</field></block></value></block></value>
! <statement name="DO0"><block type="debug" id="8Fp/Vc#k-B@3Rj[EP|m"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id="eR|3!w?UZ.Z-@WL2-CnF"><field name="TEXT">Timer + Intervall stoppen*****************</field></shadow></value> ! <next><block type="timeouts_clearinterval" id="
c_QE%e0PhkjSDDq:x?"><field name="NAME">Intervall</field>
! <next><block type="timeouts_cleartimeout" id="tuW_=B1L;leN}%1{6ikv"><field name="NAME">timeout</field>
! <next><block type="debug" id="]FTd/aCKYp.e,GT,SdI?"><field name="Severity">log</field>
! <value name="TEXT"><shadow type="text" id="kH]I[D)HB69%A.?l:5
"><field name="TEXT">Anwesenheit bestätigt</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></statement></block></xml>Timer und Intervall habe ich zum Testen verkürzt.
Bei mir funktioniert es so wie Du es Dir vorgestellt hast.
Grüße
-
Hallo,
vielen Dank für Deine Mühe, ich habe vorher ähnliche Tests gemacht bevor ich das benutzte, die waren ja auch erfolgreich.
Das Problem ist halt das es nicht immer funktioniert, deswegen musste ich es pausieren, da ich von meiner besseren Hälfte bereits die gelbe Karte bekommen hatte, sie hat alle 5 Minuten die Nachricht bekommen.
An dem letzten Fall kann ich mich gut erinnern, ähnliches war vorher leider auch.
Folgendes war passiert, sie hatte Abwesenheit geschaltet, dann noch mal zurück im Haus und Tür geöffnet, ok dann müssen die Meldungen kommen, alles richtig, dann habe ich von unterwegs wieder Anwesenheit geschaltet und kurze Zeit später auf Abwesend, aber die Meldungen sind weiterhin gekommen.Das ganze habe ich 2-3 mal wiederholt, ohne Erfolg.
Aber laut dem Programm, müsste doch egal ob der Verzögerung Timer noch läuft oder nicht, wenn Anwesenheit kommt müssen beide Timer gestoppt werden und die Meldung kann nicht durchkommen.
Bin jetzt am überlegen mit dem ersten Script eine neue BOOL Variable zu setzen die solange sie aktiv ist alle 5 Minuten die Meldung auslöst
ein 2. Script welches einfach alle 5 Minuten gestartet wird, die Anwesenheit zu überprüfen und die neue BOOL Varaible zurücksetzt.
Aber warum es ab und zu funktioniert und ab und zu nicht? An dem trigger wo die 3 Variablen angebunden sind habe ich versucht noch ein Interval oder so mit anzuhängen, aber das scheint nicht zu gehen, dann könnte ich dieses Script zusätzlich alle X Minuten durchlaufen.
Lg Mike
-
Hi
Meine bessere Hälfte findet auch immer die Fehler :roll:
An dem Script kann es nicht liegen.
Timer und Intervall laufen bei mir in mehreren Scripts zuverlässig.
Da muss etwas Anderes dazwischen funken.
Und den States von Tür- Fensterkontakt und Drehgriffkontakt kann man nicht immer trauen.
Grüße
-
Hallo,
mir ist noch was ein / aufgefallen, kann es etwas damit zu tun haben.
Die Variable für Anwesenheit ist die Original Variable aus der Homematic.
Wenn ich mir unter Objekte den Status in ioBroker anschauen steht dort erst der Text zu Haus (0) und kurz später false,
nur eine Vermutung, kann es sein das durch die Änderung des Scripts der Trigger aktiviert wird, aber die Abfragen ins leere laufen weil dort nicht klar TRUE oder FALSE ankommt, aber eigentlich ist die Variable der Homemati doch eine BOOL die ich auf TRUE / FALSE bzw. WAHR / UNWAHR abfragen kann, oder?
Ich habe mir jetzt einen Taktmerker gebaut, und werde das Programm damit nochmals aktivieren und hoffen das es funktioniert.
Wie System lastig sind solche Taktmerker?
Lg Mike
-
Wenn ich mir unter Objekte den Status in ioBroker anschauen steht dort erst der Text zu Haus (0) und kurz später false,
nur eine Vermutung, kann es sein das durch die Änderung des Scripts der Trigger aktiviert wird, aber die Abfragen ins leere laufen weil dort nicht klar TRUE oder FALSE ankommt, aber eigentlich ist die Variable der Homemati doch eine BOOL die ich auf TRUE / FALSE bzw. WAHR / UNWAHR abfragen kann, oder? `
wahr/unwahr true/false sind immer 1 oder 0.Meine "Anwesenheit" SV ist nicht die Originale, die habe ich in "reboot" umbenannt (wegen HM Scripte ausführen bei CCU Neustart).
Ich ändere auch nie die Wertebezeichnung. Wahr oder Unwahr sagt mir genug.
Zudem verwende ich, in Bezug auf Variablen und Gerätebezeichnungen, NIE deutsche Sonderzeichen.
Ist manchmal nicht notwendig, machnmal aber doch.
Um diese Fehlerquelle auszuschließen, mache ich es nicht.
"außer Haus" würde ich nicht verwenden.
Grüße
-
Hallo,
es hat tatsächlich an dieser Variable gelegt, in ioBroker wird dadurch auch leider das Blockly Script immer 2 x aufgerufen.
erst steht "im Haus" dann nach einiger Zeit "True", das scheint die Probleme gemacht zu haben.
Meine Anwesenheit war auch nicht die Originale, ich hatte sie auch umbenannt wegen HM Scripte ausführen bei CCU Neustart.
Es ist also eine reine "BOOL" Variable und keine Werteliste oder ähnliches, in Homematic funktioniert das alles wunderbar.
Im HM rega Adapter sieht das aber wie folgt aus, wollte auch nichts ändern, da ich die Befürchtung habe das bei Neu Synchronisation das wieder überschrieben wird.
Ich hoffe das es jetzt gelöst ist, habe einfach auf "TRUE" oder Text "im Haus" abgefragt.
Schwierige Geburt, vielen Dank für die Hilfe hier im Forum.
Lg Mike