NEWS
[Gelöst] Zeitanzeige für geöffnetes Garagentor
-
Hallo zusammen,
ich möchte mir die Zeit, die das Garagentor geöffnet ist anzeigen lassen.
Hierzu habe ich folgende DPs in meinem Blockly verwendet.- PROCESS : STABLE(0) / NOT_STABLE(1)
- DOOR_STATE : CLOSES(0) / OPEN(1) / VENTILATION_POSITION(2) / POSITION_UNKNOWN(3)
Folgende Probleme habe ich.
Der Timer reagiert nur auf den DOOR_STATE = 1.
DOOR_STATE = 2 oder 3 werden ignoriert.
Wenn DOOR_STATE = 1 ist, dann zählt er zwar die Zeit jede Sekunde um 1 hoch, das Konvertieren in SS:MM:ss funktioniert aber nicht und es wird mir im Protokoll immer nur 01:00:00 angezeigt.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="@Y[`U]x.[-R}OO*Z1F)/">Zeit</variable> <variable type="interval" id="Timer">Timer</variable> </variables> <block type="on_ext" id="3V-5]5,8V.YQ)/~;)+XL" x="63" y="-12"> <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="YGs/7sL@tljazDyww7hj"> <field name="oid">alias.0.Homematic.Garagentor.PROCESS</field> </shadow> </value> <statement name="STATEMENT"> <block type="debug" id="OoUsEWvvhE+LK37q@JIQ"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="vF.@Ws*,,wGey[bs;kor"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="EfLRpy-2/R_:=d40ATn2"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="DX3,mSoyobZG:Bw2$HTm"> <field name="TEXT">PROCESS : </field> </block> </value> <value name="ADD1"> <block type="on_source" id="V*vPL^3P^aoJPP:GA{+?"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="timeouts_clearinterval" id="=E^6HXf1w0EkPNy,NZgS"> <field name="NAME">Timer</field> <next> <block type="variables_set" id="b,%FstzP.Hv97i1qUioV"> <field name="VAR" id="@Y[`U]x.[-R}OO*Z1F)/">Zeit</field> <value name="VALUE"> <block type="math_number" id="_]qJp+j%cSa8DSDl?!o`"> <field name="NUM">0</field> </block> </value> <next> <block type="timeouts_wait" id="VEU0V,yMS]@lLJk^ZJwx"> <field name="DELAY">5000</field> <field name="UNIT">ms</field> <next> <block type="controls_if" id="LijszT++oO1(C[,V.c4-"> <value name="IF0"> <block type="logic_compare" id="s4S]@H;*HTtdg6y{mwVS"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="[4LLtrs9LO[,|nLcnz!4"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id=".}|i~$`7Xbu?c1kP9TPK"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="T-6/]kW0.yjC5!P=RaGv"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id=",YpDqJHAR(Px`a,dFo3)"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Jcmkx3iWU4*U`@AGwgu9"> <field name="ATTR">val</field> <field name="OID">alias.0.Homematic.Garagentor.DOOR_STATE</field> </block> </value> <value name="B"> <block type="math_number" id="wyYItj4C{(_ofS/N$tuV"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="a$z9,:Ust,h/k@].YB#7"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Eigene_Datenpunkte.Sonstiges.Tuer/Tor_-_Garagentor_01_-_Timer</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_from_date" id="t,OabU:.X3$oZ*Ap0eTL"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> <value name="VALUE"> <block type="variables_get" id="xf*|PE5gbv)Zz0W|2ow*"> <field name="VAR" id="@Y[`U]x.[-R}OO*Z1F)/">Zeit</field> </block> </value> </block> </value> <next> <block type="debug" id=":%MbDo^Fi(?7FYxuc}9j"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="vF.@Ws*,,wGey[bs;kor"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="h}=sGf4sEj8i(.df*/wC"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="tT,X@ZSXFR@xbZt})HzP"> <field name="TEXT">DOOR_STATE : </field> </block> </value> <value name="ADD1"> <block type="get_value" id="(pp;08g.`g0!MctpT_1I"> <field name="ATTR">val</field> <field name="OID">alias.0.Homematic.Garagentor.DOOR_STATE</field> </block> </value> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="6Ian}B+UX:-+t4T+WnBv"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="5^LWFO8e,n`D1xZt9eB,"> <field name="ATTR">val</field> <field name="OID">alias.0.Homematic.Garagentor.DOOR_STATE</field> </block> </value> <value name="B"> <block type="logic_multi_or" id="P@HvICp]Tst6L}I6O{l*"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="3"></mutation> <value name="OR0"> <block type="math_number" id="}qCeF5RvvsFd])V]H$x;"> <field name="NUM">1</field> </block> </value> <value name="OR1"> <block type="math_number" id="O9onH|C/v[r2r|hYzSU8"> <field name="NUM">2</field> </block> </value> <value name="OR2"> <block type="math_number" id="aAX5qraD(4CYd`f|*p(4"> <field name="NUM">3</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="debug" id="ZRSv17bQv{^sl~43?hK#"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="vF.@Ws*,,wGey[bs;kor"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="IjxY%D8l[Htkp6oCoaoE"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="ugKoX7-nJr-,){0dw{x|"> <field name="TEXT">DOOR_STATE : </field> </block> </value> <value name="ADD1"> <block type="get_value" id="P_0ul!f,lU7%GVtt0sHT"> <field name="ATTR">val</field> <field name="OID">alias.0.Homematic.Garagentor.DOOR_STATE</field> </block> </value> </block> </value> <next> <block type="timeouts_setinterval" id="q,RWxbXA5xgJ`jjf)z?M"> <field name="NAME">Timer</field> <field name="INTERVAL">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="math_change" id="nNJm%Y{I{CN8D2NB:CF%"> <field name="VAR" id="@Y[`U]x.[-R}OO*Z1F)/">Zeit</field> <value name="DELTA"> <shadow type="math_number" id=";`NeXDGS5DB+pR2@+E37"> <field name="NUM">1</field> </shadow> </value> <next> <block type="update" id="+n94xv/Q1%iK*6OMLoc]"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Eigene_Datenpunkte.Sonstiges.Tuer/Tor_-_Garagentor_01_-_Timer</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_from_date" id="UD|H`2@.S.eGv.x]+~cW"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> <value name="VALUE"> <block type="variables_get" id="p%}cmJX9H$QIJuH)H2W1"> <field name="VAR" id="@Y[`U]x.[-R}OO*Z1F)/">Zeit</field> </block> </value> </block> </value> <next> <block type="debug" id="!1z#uoeTW-[t~qn(7v;`"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="vF.@Ws*,,wGey[bs;kor"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="c]jX~(.1/_aGDKJ.3ScG"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="Y=OjGvjT)v]`m5A_Rw;Q"> <field name="TEXT">Timer : </field> </block> </value> <value name="ADD1"> <block type="get_value" id="rB{|Bhscg!pvt:iO~Hpm"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Eigene_Datenpunkte.Sonstiges.Tuer/Tor_-_Garagentor_01_-_Timer</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="math_number" id="#f-EsV85FcZM~,4SUX(+" x="414" y="351"> <field name="NUM">0</field> </block> </xml>
-
dein oder müsste so aus sehen.
-
@triplex sagte: DOOR_STATE = 2 oder 3 werden ignoriert.
Es genügt die Prüfung auf DOOR_STATE == 0.
@triplex sagte in Zeitanzeige für geöffnetes Garagentor:
das Konvertieren in SS:MM:ss funktioniert aber nicht und es wird mir im Protokoll immer nur 01:00:00 angezeigt.
Es muss der Block für Zeitdifferenz verwendet werden, an den die Dauer in ms übergeben werden muss.
-
@tt-tom said in Zeitanzeige für geöffnetes Garagentor:
dein oder müsste so aus sehen.
Danke für den Hinweis, hätte ich auch selbst drauf kommen können.
Jetzt läuft es. -
@paul53 said in Zeitanzeige für geöffnetes Garagentor:
@triplex sagte: DOOR_STATE = 2 oder 3 werden ignoriert.
Es genügt die Prüfung auf DOOR_STATE == 0.
@triplex sagte in Zeitanzeige für geöffnetes Garagentor:
das Konvertieren in SS:MM:ss funktioniert aber nicht und es wird mir im Protokoll immer nur 01:00:00 angezeigt.
Es muss der Block für Zeitdifferenz verwendet werden, an den die Dauer in ms übergeben werden muss.
Danke Dir!
"Zeitdifferenz formatieren" hätte ich jetzt nicht dran gedacht weil ich ja keine Zeitdifferenz habe sondern nur einen Wert formatieren möchte.
Jetzt läufts. -
Eine Frage hätte ich noch.
Der Timer hat ja folgendes Format : SS:MM:ss
Ich wollte jetzt über einen weiteren Datenpunkt eine Zeit festlegen, nach der ich eine Erinnerung erhalte, z.B. dass das Tor noch offen ist.
Die Zeit im Datenpunkt wollte ich z.B. so angeben 00:15:00.Kann man die beiden Werte dann ganz einfach vergleichen mit "Falls Timer = 00:15:00" oder muss man das alles noch irgendwie umrechnen?
Meine Versuche habe bisher nicht funktioniert.
Hier mal meine 2 Versuche in einem Programm.
Habe einmal versucht 00:15:00 in eine Zeit zu konvertieren und das andere Mal den Timer in einen String. -
@triplex sagte: Kann man die beiden Werte dann ganz einfach vergleichen mit "Falls Timer = 00:15:00"
Ja, ein einfacher String-Vergleich sollte genügen.
-
@triplex sagte in [[Gelöst] Zeitanzeige für
"Zeitdifferenz formatieren" hätte ich jetzt nicht dran gedacht weil ich ja keine Zeitdifferenz habe sondern nur einen Wert formatieren möchte.
Mh ja gut, aber der andere Block ist ja dafür da ein Datum zu formatieren. Deswegen hattest auch ein Problem mit der Zeitzone. Erklärung findest Du hier:
-
@paul53 said in [Gelöst] Zeitanzeige für geöffnetes Garagentor:
@triplex sagte: Kann man die beiden Werte dann ganz einfach vergleichen mit "Falls Timer = 00:15:00"
Ja, ein einfacher String-Vergleich sollte genügen.
Danke Dir!
Jetzt funktioniert es auch bei mir.
Ob ich "Wert" angebe oder nochmal den getriggerten Datenpunkt einsetzte, sollte doch eigentlich keinen Unterschied machen oder?
Hatte zuvor nämlich anstatt "Wert" nochmal den DP angegeben und da hat es, warum auch immer, nicht funktioniert. -
@triplex sagte in [Gelöst] Zeitanzeige für geöffnetes Garagentor:
Hatte zuvor nämlich anstatt "Wert" nochmal den DP angegeben
Nein, Du hast den falschen Block gewählt:
Dieser wäre korrekt gewesen
-
@djmarc75 said in [Gelöst] Zeitanzeige für geöffnetes Garagentor:
@triplex sagte in [Gelöst] Zeitanzeige für geöffnetes Garagentor:
Hatte zuvor nämlich anstatt "Wert" nochmal den DP angegeben
Nein, Du hast den falschen Block gewählt:
Dieser wäre korrekt gewesen
Autsch!!!
Manchmal sieht man echt den Wald vor lauter Bäumen nicht. -
@haus-automatisierung said in [Gelöst] Zeitanzeige für geöffnetes Garagentor:
@triplex sagte in [[Gelöst] Zeitanzeige für
"Zeitdifferenz formatieren" hätte ich jetzt nicht dran gedacht weil ich ja keine Zeitdifferenz habe sondern nur einen Wert formatieren möchte.
Mh ja gut, aber der andere Block ist ja dafür da ein Datum zu formatieren. Deswegen hattest auch ein Problem mit der Zeitzone. Erklärung findest Du hier:
Danke für den Tipp.