NEWS
Abfrage "wenn innerhalb von X Sekunden Wert wahr" *gelöst*
-
Hallo zusammen,
ich möchte für meinen "smarten Briefkasten" ein Skript erstellen und weiß leider nicht, wie das umzusetzen ist.
Problemstellung: "Wert 1 wird wahr, wenn jetzt innerhalb von 5 Sekunden Wert 2 nicht wahr wird, dann Meldung <Post eingeworfen>"
Wie stelle ich dies in Blockly dar?
Hintergrund dieser Aktion: Sensor 1 sitzt an der oberen Einwurfklappe, Sensor 2 sitzt an der vorderen Klappe zur Briefentnahme. Ich möchte jetzt wissen wenn nur die obere Klappe auf geht und nicht kurze Zeit später noch die vordere Klappe, dann Meldung "Post eingeworfen".
Ich habe diesen Fall noch nie gehabt, daher bräuchte ich dafür einmal Unterstützung.Gruß surfer
-
@surfer09 sagte: "Wert 1 wird wahr, wenn jetzt innerhalb von 5 Sekunden Wert 2 nicht wahr wird, dann Meldung <Post eingeworfen>"
-
@paul53 Danke Paul, wie immer rasante Antworten.
Ich brauche aber auch hier wieder eine kurze Erläuterung, irgendwie baue ich meine Blocklys etwas anders auf als du, weil ich das dann etwas besser kapiere
So wäre der Nachbau in meiner Variante nicht richtig?!<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="u|Hm3C$^L62-9Rr!0N{~" x="413" y="13"> <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="rA:C]fD[F}$03/(0uJ/f"> <field name="oid">zigbee.0.00158d000ab704a6.vibration</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="PgikU$l2sCzHsc+%Ul,4"> <field name="NAME">timeout</field> <next> <block type="timeouts_settimeout" id="B?bGMexpipx$ZJ`RP9WF"> <field name="NAME">timeout</field> <field name="DELAY">5</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="guu:8G~lrdtX||Z+n|SE"> <value name="IF0"> <block type="logic_operation" id="=Dww3G~F(WM*5V2O^FOx"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="_RcqUVU6#1,8lO-~!Wq9"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="`3b=Las_!g98X[AE8PuW"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="IW]tl#ARMnL]t]+(d:.$"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="=__+u]Sikgti/J*g6;o3"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Mtr*TfawAi{wF~Ht0jVt"> <field name="ATTR">val</field> <field name="OID">hm-rpc.1.0000DD89A35EB4.1.STATE</field> </block> </value> <value name="B"> <block type="text" id="-T%HBCz=M!Ms!5kDHiwN"> <field name="TEXT">CLOSED</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="B2Y1Ps0/?u[+f-J2k{Cm"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Briefkasten</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="SpK`]X#iGWs)NKz{+ff%"> <field name="TEXT">Es wurde Post eingeworfen</field> </block> </value> <next> <block type="telegram" id="Knr@[[D7Krql:0a|V^{j"> <field name="INSTANCE"></field> <field name="LOG">error</field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">HTML</field> <field name="ESCAPING">FALSE</field> <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field> <value name="MESSAGE"> <shadow type="text" id="3~hN;iY|-wop|eR=5fhX"> <field name="TEXT">Es wurde Post eingeworfen!</field> </shadow> </value> <value name="USERNAME"> <block type="text" id="X5Fc1rth|t;3)gu%Ds.~"> <field name="TEXT">Dennis</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block>
-
@surfer09 sagte: So wäre der Nachbau in meiner Variante nicht richtig?!
Du hattest geschrieben:
Wert 2 nicht wahr wird
vergleichst aber mit "CLOSED".
Der Datenpunkt nennt sich "Vibration event". Kann der nicht auch beim Schließen der Einwurf-Klappe wahr werden?
-
@paul53: Ich muss das nochmal erläutern..
Also „Vibration Event“ ist die obere Klappe zum Einwerfen. Briefkasten Tür ist die vordere Klappe zum herausnehmen.
„Post eingeworfen“ ist ja nur wenn „Vibration Event“ wahr und Briefkasten Tür nicht darauffolgend „opened“ wird.
„Post geleert“ wäre wenn Briefkasten Tür „opened“ wird.
Den Briefkasten Status lasse ich noch in eine separate Variable schreiben, damit man den auch mit abfragen könnte.
Beispiel: Meldung „Post geleert“ wenn aktueller Briefkasten Status „Post eingeworfen“ und Briefkasten Tür „opened“ danach setze Briefkasten Status „Post geleert“.
Ich hoffe, dass ist jetzt nicht zu verwirrend. -
@surfer09 sagte: Briefkasten Tür nicht darauffolgend „opened“ wird
HomeMatic-Datenpunkte mit den Namen "STATE" liefern i.d.R. keinen String "OPENED" oder "CLOSED".
-
-
@surfer09 sagte: Der hier schon.
Nein, das ist eine Werteliste, die Zahlen 0 und 1 liefert.
-
@paul53 Also müsste ich dann nach "0" und "1" abfragen und nicht nach "CLOSED" und "OPENED"? Oder ist das egal?
-
@surfer09 sagte: müsste ich dann nach "0" und "1" abfragen
... oder auf "ist größer als letztes" triggern - wie gezeigt.
@surfer09 sagte in Blockly Abfrage "wenn innerhalb von X Sekunden Wert wahr":
Den Briefkasten Status lasse ich noch in eine separate Variable schreiben
Der Datenpunkt muss auch wieder zurück gesetzt werden.