NEWS
Datenpunkte werden neu geschrieben
-
Hi Community,
ich möchte mich kurz vorstellen. Mein Name ist Frank, ich bin 52 Jahre alt und komme aus Bremerhaven.
Zu Weihnachten habe ich mir einen Raspberry 4 geschenkt inkl. Conbee 2.
Damit fingen die Probleme an.
Ich habe ein paar Hue Birnen, Xiaomi Sensoren, sowie von Tado einen Wandthermostaten zur Steuerung meiner Gastherme.
Ein paar Skripte habe ich mit Blockly auch schon hin bekommen.
Doch jetzt komme ich einfach nicht weiter.Ich bin dabei ein Skript zusammen zu klicken.
Beschreibe kurz was ich vorhabe.
Der Bewegungsmelder soll erkennen wenn ich reinkomme, die Helligkeit auf 100 stellen, danach wieder auf die vorherigen Werte zurück stellen.Zu Anfang im Skript lasse ich die Werte aus dem Hue Adapter (G,B,R, und den Level) in die von mir erstellten Datenpunkte schreiben. Das funktioniert auch problemlos.
Das Problem ist nur wenn der Bewegungsmelder länger an bleibt (über 60 sec), also er Bewegung erkennt solange ich im Zimmer bin (ich habe den Punkt "duration auf 60 sec eingestellt)
schreibt er auch meine sebst erstellten Datenpunkte auch wieder neu. Dann natürlich mit Helligkeit auf 100.
Er soll die Werte aber nur einmal in die Datenpunkte schreiben.
Wie kann ich das verhindern?
Ich stehe da voll auf dem Schlauch und bin Dankbar für jeden Tip.Viele Grüße
Frank<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="undefined" id="timeout">timeout</variable> <variable type="undefined" id="timeout2">timeout2</variable> </variables> <block type="on_ext" id="L4/[;u]fYjyD{qcJNta#" x="238" y="13"> <mutation items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="r4n}m@xy%,t+BCzas#F;"> <field name="oid">deconz.0.Sensors.5.presence</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="QKix!.A%9gAI]5R*}},W"> <value name="IF0"> <block type="time_compare_ex" id="Z6.3K/?^88^xhQ=i_GnG"> <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="RL#AS0a)Aoji$j8XLcKf"> <field name="TEXT">24:00</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="!/WI]kbzJ.QGiGBQa=Mb"> <field name="TEXT">04:55</field> </shadow> </value> </block> </value> <statement name="DO0"> <block type="control" id="Y).@@5qsa=G@2!R4sLU,"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Flur.scene_pippilicht</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="=E.FYnS)pCZEXdiWIj1*"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="LORY$6eo42-:vKXK:[N{"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Schlafzimmer.scene_pippilicht</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="1E`@l%(L7W{9HCW4-.`u"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_cleartimeout" id="lTcx@G8N)~(un5v+fwJA"> <field name="NAME">timeout</field> <next> <block type="timeouts_settimeout" id="uzI~+`9pKzLvWDrtbs:m"> <field name="NAME">timeout</field> <field name="DELAY">70</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="A18;:/ko:o6kjH=463v0"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Nachttischlampe.level</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="/(nuCvMZZ`]e1Pae)#!a"> <field name="NUM">30</field> </block> </value> <next> <block type="control" id="559rija9v)9xP=nk92L."> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Flurlampe.level</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="Ht}:+:LjdXqYw:Vbl5Wg"> <field name="NUM">30</field> </block> </value> <next> <block type="control" id="ujWEs7zGS9#|(vBSgWoW"> <mutation delay_input="true"></mutation> <field name="OID">hue.0.Nachttischlampe.level</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="B.61N:GXQK+kj94YgL3j"> <field name="NUM">0</field> </block> </value> <next> <block type="control" id="sshz3}=)yH%]GkRLak.Y"> <mutation delay_input="true"></mutation> <field name="OID">hue.0.Flurlampe.level</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="HTezJR$yJNuCX)/~w*S!"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> <next> <block type="on_ext" id="/_O#gfdNUnAR[0Xq`-?)"> <mutation items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id=")G{y2X@5!dUy0?}]L8fr"> <field name="oid">deconz.0.Sensors.5.presence</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="_;6v$X{lc:A]Fc)}p3:|"> <value name="IF0"> <block type="time_compare_ex" id="Jm2-3s#8hOc}~rysmXgs"> <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="6*E/FkBmCyg7d%.Zrh;4"> <field name="TEXT">05:15</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="/|.JUlrVIh:}{Q*(v8b8"> <field name="TEXT">23:59</field> </shadow> </value> </block> </value> <statement name="DO0"> <block type="update" id="9(PPE3qGfGBDxZj(}f*s"> <mutation delay_input="true"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.Schlafzimmer_BWM</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id=",2*FJxUTgoeIoR1-){q4"> <field name="ATTR">val</field> <field name="OID">hue.0.Nachttischlampe.level</field> </block> </value> <next> <block type="update" id="bq.jGsm?cD.W_+(HugK}"> <mutation delay_input="true"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.blau</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="(bvd2jn[M%O^T/Q*UU:~"> <field name="ATTR">val</field> <field name="OID">hue.0.Nachttischlampe.b</field> </block> </value> <next> <block type="update" id="54PrU[;=V|}fr%uNHRr."> <mutation delay_input="true"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.grün</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="gZt#`U)$agt,WV.*H/Il"> <field name="ATTR">val</field> <field name="OID">hue.0.Nachttischlampe.g</field> </block> </value> <next> <block type="update" id="ZCD.Fc#rX/DGY7qUU0:."> <mutation delay_input="true"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.rot</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="JYI$`G57:IsY]~[B8T7C"> <field name="ATTR">val</field> <field name="OID">hue.0.Nachttischlampe.r</field> </block> </value> <next> <block type="control" id="l0?$Xm_T__SihJfbPi2a"> <mutation delay_input="true"></mutation> <field name="OID">hue.0.Schlafzimmer.scene_bwm_taglicht</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">2000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="C{v=/OF/:^WHe;wA$4E)"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_cleartimeout" id="j0VjAXk#U2yi{`jt@|Ag"> <field name="NAME">timeout2</field> <next> <block type="timeouts_settimeout" id=".-wwfptcW=KiGeDl74I!"> <field name="NAME">timeout2</field> <field name="DELAY">70</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="UOWjaL?euk-X%wYc)KGc"> <value name="IF0"> <block type="logic_compare" id="O{T_;-e%=YCx%fLahd,y"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="#yZbP?O:]Xf5LQO}w9HR"> <field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.Schlafzimmer_BWM</field> </block> </value> <value name="B"> <block type="math_number" id="PvkpA0y}+leUg#!pL3M)"> <field name="NUM">30</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="pq!g}]gz#~6.7A-MUB.C"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Nachttischlampe.level</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="uc*Y`!vJR]8l6Ls[[DRl"> <field name="NUM">30</field> </block> </value> <next> <block type="control" id="sHX#[FU=2]}oh(VB0gcF"> <mutation delay_input="true"></mutation> <field name="OID">hue.0.Nachttischlampe.b</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="^,@k=q4l1ljFIPwL(~HM"> <field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.blau</field> </block> </value> <next> <block type="control" id="@v85$_7qSo([:d!p!=pF"> <mutation delay_input="true"></mutation> <field name="OID">hue.0.Nachttischlampe.g</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="O#-B3/V-xOG.twhyElF+"> <field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.grün</field> </block> </value> <next> <block type="control" id="Vh8eQ1ygj`D@)00SMBLz"> <mutation delay_input="true"></mutation> <field name="OID">hue.0.Nachttischlampe.r</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="uV!bn2s.2L!$Rg)~fIrs"> <field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.rot</field> </block> </value> <next> <block type="control" id=".J_4;Pg3fL1FM$W`AztT"> <mutation delay_input="true"></mutation> <field name="OID">hue.0.Nachttischlampe.level</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="MCpUnW~`sQ;Gxbw2T%_z"> <field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Räume.Schlafzimmer.Schlafzimmer_BWM</field> </block> </value> <next> <block type="debug" id="p(o``)++{IZ}H3~M]qkW"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="4FlC+|Q;13jtO.fnwg`M"> <field name="TEXT">Wert zurückgeschrieben geschrieben</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>``` code_text
-
Du könntest vor dem Schreiben der "Vorher-Werte" in deine Datenpunkte prüfen, ob in deinen Datenpunkten -1 drinnen steht (oder irgendein anderer ungültiger Wert für eine Helligkeit) und wenn du die Werte aus deinen Datenpunkten zurück geschrieben hast, weil keine Bewegung mehr erkannt wird, dann schreibst du hinterher -1 (oder deinen anderen gewählten nicht möglichen Helligkeitswert) in deine Datenpunkte.
Pseudocode:wenn der Bewegungsmelder Bewegung erkennt: if(Vorherwert_Helligkeit == -1){ Vorherwert_Helligkeit = Aktueller_Wert_Helligkeit; } wenn der Bewegungsmelder keine Bewegung mehr erkennt: Aktueller_Wert_Helligkeit = Vorherwert_Helligkeit; Vorherwert_Helligkeit = -1;
-
@caddy13 sagte:
schreibt er auch meine sebst erstellten Datenpunkte auch wieder neu.
Ändere mal den Trigger von "ist wahr" auf "ist größer als letztes".
-
Danke für deine Hilfe Xyolyp,
ich bin erst seit einer Woche dabei.
Wie kann ich das einbauen in Blockly?
Ich verstehe das so:
Wenn der Wert -1 nicht drin steht nimm den vorherigen wert?
Ist das richtig?
Aber wie baue ich das in Blockly ein?
Kann ich ihm nicht sagen er soll einfach den vorherigen Wert nehmen? -
@caddy13 du könntest auch abfragen, ob der aktuelle Wert auf 100 ist und dann noch einmal verzögern.
-
ne geht auch nicht. Nach 60 sec. schreibt er die neuen Werte auch wieder in die Datenpunkte.
Er soll das ja aber nur einmal machen. Bei Auslösung des Skripts und dann nicht mehr.
-
@caddy13 frag am besten auch beim setzten der Datenpunkte, ob der aktuelle Wert bei 100 liegt. Dann werden die auch nicht neugesetzt.
Ein Beispiel Block. Müsstest du dann aber noch anpassen. Zudem brauchst du die auch nicht zwingend in States zu schreiben, sondern könntest die Werte auch in Variablen vorhalten.
-
@caddy13 die Kommentare beschreiben welche ObjektID wo zu verwenden wäre. Wenn du RGB getrennt hast, dann ist das entsprechend jeweils einmal zu machen.
Grüße
Jonathan -
Ich Danke euch erstmal Herzlich.
Im Moment raucht mir einfach die Birne.
Aber ich werde Morgen weiter machen und eure Tips ausprobieren.
Tolles Forum!!
Vielen Dank an euch und schlaft alle gut.
Bis Morgen evtl. wenn ich nicht weiter komme melde ich mich.LG
Frank