NEWS
(gelöst) Erster Versuch in Blockly
-
Hallo, ich versuche gerade die Blocky Programmierung zu verstehen. Mein erster Script funktioniert nach vielem Probieren immer noch nicht. Das Licht soll eingeschaltet werden innerhalb einer bestimmten Uhrzeit und wenn der Dämmerungssensor einen gewissen Lichtwert erreicht sowie der Bewegungssensor (beim Betreten des Raumes) anspricht. Es handelt sich also um drei Bedingungen, die erfüllt sein müssen. Aber das mag Blockly wohl nicht?
Ev. kann mir jemand helfen?
-
Es handelt sich also um drei Bedingungen, die erfüllt sein müssen. Aber das mag Blockly wohl nicht?
Ev. kann mir jemand helfen? `
Hallo Matten
Blockly mag noch nicht genug, aber schon eine ganze Menge.
Damit ein Blockly/Script startet, braucht es ein Ereignis (Änderung eines Datenpunktes oder Zeitpunkt usw.)
Das nennt man "triggern".
Ein Trigger ist also immer der äußere Rahmen.
Wenn die Bedingung eines Triggers erfüllt wird, wird alles innerhalb des Triggers, einmalig, ausgeführt.
Falls der Screenshot Dein ganzes Blockly darstellt, passiert da folgendes.
Du startest das Script.
Das überprüft den Zeitraum und die Helligkeit und macht…..gar nichts.
Aber Du hast auch zwei Trigger in der "Falls-Abfrage".
Die sind, solange das Script läuft, aktiv!
Also JEDESMAL wenn "Sensor" wahr ist geht das Licht an und bei unwahr wieder aus.
Der Zeitraum und die Helligkeit ist für das Blockly völlig egal. Das wurde ja schon abgeabeitet und interessiert nicht mehr.
Du must also umgekehrt arbeiten.
Hier der Export:
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="K!sci*{NQzk@Bz^;F[UO" x="-537" y="-287"><field name="COMMENT">Hier Sensor Motion triggern</field>
<next><block type="on" id="XUrWd}9#^Va1(0a#ZNN1"><field name="OID">Object ID</field>
<field name="CONDITION">ne</field><statement name="STATEMENT"><block type="comment" id="r~^E^c-Cou6;r?;KUd`b"><field name="COMMENT">Wenn Bewegung erkannt</field> <next><block type="controls_if" id="STFO[,VcpV]lY*?C%Rn?"><mutation else="1"></mutation> <value name="IF0"><block type="logic_compare" id="Fywuti(s[Z!#R9,JpF-Z"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="{QJ]r@C1eq!Z*%}7UC0I"><field name="ATTR">val</field> <field name="OID">ID auswählen</field></block></value> <value name="B"><block type="logic_boolean" id="l?}J6KrWD8?|20h{??_b"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="comment" id="Q;iev{6ZcQiGi[D]@*xz"><field name="COMMENT">Bedingungen abfragen</field> <next><block type="controls_if" id="XP/m7.U8*tU)U``^D[5*"><value name="IF0"><block type="logic_operation" id="X!xHu--ZLypAk@I5v7]@"><field name="OP">AND</field> <value name="A"><block type="time_compare_ex" id="j0bV]uZg5PS)MoURAJPV"><mutation end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"><shadow type="text" id="5lANYeXWEBh8duHHj)/H"><field name="TEXT">00:1</field></shadow></value> <value name="END_TIME"><shadow type="text" id="J)uReokm)aS^v6eKgx+K"><field name="TEXT">09:00</field></shadow></value></block></value> <value name="B"><block type="logic_compare" id="Bd;2)7nDxQo30m0^z[Px"><field name="OP">LTE</field> <value name="A"><block type="get_value" id="^:XiP[fNCt9COd1:i6rT"><field name="ATTR">val</field> <field name="OID">ID auswählen</field></block></value> <value name="B"><block type="math_number" id="@{?0rlk4knIjlfkytZ3X"><field name="NUM">30</field></block></value></block></value></block></value> <statement name="DO0"><block type="comment" id="CUQSg/Al0an.g3lMs~Yx"><field name="COMMENT">Nur einschalten wenn Lampe aus</field> <next><block type="controls_if" id="s5~HbfA%`-UGwhfu@bc0"><value name="IF0"><block type="logic_compare" id="/gkAJF:6p4d;@jnxq6n^"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="@HaT]Xwo`d2wW~}F}d%v"><field name="ATTR">val</field> <field name="OID">ID auswählen</field></block></value> <value name="B"><block type="logic_boolean" id="mDcv[?ohY![*LzyZ(xjZ"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO0"><block type="control" id="US*SsJs_c-+O0O_/6L=E"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="t#rI/n)mauclLezD^mSZ"><field name="BOOL">TRUE</field></block></value></block></statement></block></next></block></statement></block></next></block></statement> <statement name="ELSE"><block type="comment" id="4=HJoMi5Z38uLs?:S3gS"><field name="COMMENT">Hier kommt der Teil wenn keine Bewegung</field> <next><block type="comment" id="U`HeF|/lW2UR3g#K~d~A"><field name="COMMENT">Und naturlich nur schalten wenn nötig :)</field> <next><block type="controls_if" id="aDp(b?m(xLk(jDhL7qnu"><value name="IF0"><block type="logic_compare" id="D-|]s03CA}~Jz_9bPxyc"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="}s97;!snvm!?9zWckE91"><field name="ATTR">val</field> <field name="OID">ID auswählen</field></block></value> <value name="B"><block type="logic_boolean" id="rbM~}+H[tJhZAAUDlvh)"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="control" id="%{X0K-ZO~GZOYRVm04}|"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="Y1+7G0e^=]k_G[qEXQy}"><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></next></block></statement></block></next></block></statement></block></next></block></xml>
! ````
Bei Fragen fragen
Aber suche hier im Forum auch mal nach "Blockly" da gibt es schon reichlich Beispiele und Erklärungen.
Grüße
-
Hallo Rantanplan,
danke für die wirklich schnelle Auskunft. Genau das, was du beschrieben hast fehlte mir, ich hatte einen völligen Denkfehler in der Herangehensweise. Ich werde es ausprobieren.
Du hast mir sehr geholfen!
-
Prima!
Wenn Du weitergekommen bist, setzte bitte ein [Gelöst] in den Betreff Deines ersten Eintrags.
Weitere Infos hier http://forum.iobroker.net/viewtopic.php?f=8&t=2451
Grüße