NEWS
[Gelöst] Blockly startet alle 50 Minuten
-
Hallo
Ich habe ein Blockly für die Heizung was automatisch bei Fensteröffnung die DECT Thermostate ausschaltet.
Bei Fensteröffnung sagt Alexa nach 20 sek. das die Balkontür geöffnet ist und schaltet die Thermostate auf aus. Bei Fensterschließung sagt Alexa nach 20 sek. "Balkontür ist geschlossen"
Das funktioniert auch alles tadellos aber das merkwürdige ist, dass sie das alle 50 min. wieder sagt, dass die Balkontür geschlossen ist, obwohl sie gar nicht auf war.
Ich weiß nicht wo diese 50 min herkommen.
Kann mir jemand sagen, wo sie das herholt?
Danke -
@biker1602 du möchtest doch nur eine Aktion wenn true oder false deiner Balkontür?
Dann sollte es auf wurde geändert, ansonsten läuft dein Script, immer wenn Balkontür aktualisiert wird( deine eventuellen 50min) -
Danke werde ich gleich mal testen.
-
@biker1602
So wie crunchip das schreibt, wäre das schon der erste Ansatz, dann sollte man sich immer angewöhnen, dass man ein stop timeout direkt vor den timeout setzt. Das ist in Deinem Fall zwar nicht die Ursache, verhindert aber schon mal weitere Probleme.
Dann hast in den FALLS Bedingungen das selbe Objekt wie im Trigger und hier ist es ebenfalls eleganter, wenn man das über "Wert" aus den Trigger Blöcken abfragt. Dann ist es auch nicht nötig extra noch mal auf "wahr" zu prüfen, da das die Grundfunktion der FALLS Bedingung ist. Im Gegenzug wenn man auf "falsch" prüfen möchte, macht man das einfacher in dem man "nicht""Wert" dafür verwendet. -
Da muss ich mal einhaken und fragen.
Ist die Erklärung in Deinem 2.Absatz einfach nur ein 2.Lösungsweg oder hat er andere Vorteile? -
@haselchen
Der hat andere Vorteile.
Der Wert wurde bei der Script Abarbeitung bereits im Trigger eingelesen und ist bekannt. Wenn Du nun also Wert verwendest, dann ist das bereits bekannt. Wenn Du da Objekt noch mal angibst, dann muss der Wert noch mal eingelesen werden und da kann es zu Laufzeitproblemen kommen, was sehr sehr selten der Fall sein wird. Allerdings ist es auch einfacher zu erstellen, weil ich nur ein Block einfügen muss
Somit hast zwei Vorteile, erstens sicherer und zweitens schneller. -
Danke für die Erklärung.
Dann versuche ich das in Zukunft umzustellen.
Habe das meistens so umgesetzt wie der TE. -
@Jan1 said in Blockly startet alle 50 Minuten:
o wie crunchip das schreibt, wäre das schon der erste Ansatz, dann sollte man sich immer angewöhnen, dass man ein stop timeout direkt vor den timeout setzt. Das ist in Deinem Fall zwar nicht die Ursache, verhindert aber schon mal weitere Probleme.
Das habe ich nicht ganz verstanden denn ich habe doch unten ein timeout. Soll es oben drüber?
-
@biker1602 ja darüber
Und wenn du anstatt zweimal falls....false/sonst nimmst
Sparst du dir das balkontür false
Trigger Balkontür/ wurde geändert
Timeout stop
Timeout 20 sec
...Falls* Wert
steuere xyz ...
Sonst
Steuere xyz.... -
@biker1602
poste das mal als Export in Code Tacks, dann bau ich das geschwind um. So verstehst das gleich. -
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="on_ext" id="_GAXpeZECET+^MD+kDHC" x="-1021" y="-645"> <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="xlgd^bXjY%1%OW96sm8~"> <field name="oid">zigbee.0.00158d00045c9632.contact</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="EXO!NZp7=cz87vC0c;HS"> <field name="NAME">timeout</field> <field name="DELAY">20</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="mq*s5ki-0uH;+BVng#;w"> <value name="IF0"> <block type="logic_compare" id="MnW4/UD`*^5@T[]Yv_c+"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="*Y;;k1txUFXPx6L[?Uyh"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d00045c9632.contact</field> </block> </value> <value name="B"> <block type="logic_boolean" id="!bepK1hm;bZtvX)!sT,5"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="%6P_@g_DpJ/cikTJI(U;"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.Comet_099950285545.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="gx2$(+W}8Wo9z|@o}:ER"> <field name="NUM">1</field> </block> </value> <next> <block type="control" id="5=2EA1LTs`,t7Xc8}Wj6"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.Comet_099950290397.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="CM6,IJyYAH1??64z(|]C"> <field name="NUM">1</field> </block> </value> <next> <block type="control" id="AV2f[=n.g?[+S-9|@Qi9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.Comet_119630410624.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="rqMuKRzIV)9@IRW{X?u%"> <field name="NUM">1</field> </block> </value> <next> <block type="control" id="xDvh==g:|Oc05+,04D%p"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LA09738502FL.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="eL06WLH-XvHB^r@@vu+I"> <field name="TEXT">Balkontür ist geöffnet</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="controls_if" id=";6,4F:.Q*{/?J*dj$oh8"> <value name="IF0"> <block type="logic_compare" id="WtHg}F=Fw}3I4.;BI+2t"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=";XSV.HxXn]mXz2=)L9nv"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d00045c9632.contact</field> </block> </value> <value name="B"> <block type="logic_boolean" id="]O1F:ulDH~#IksCoB=4q"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="1J7))iXa=j{K$BuBez07"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.Comet_099950290397.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="|aG:n~Hk7nZy)zJ?nZ9@"> <field name="NUM">0</field> </block> </value> <next> <block type="control" id="RDwFqoEaESSrJI$43|E+"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.Comet_099950290397.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="7-TUZ:kc)6{,O1r$II*-"> <field name="NUM">0</field> </block> </value> <next> <block type="control" id="0x7MQ%r/{!b:exTIf{!~"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LA09738502FL.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="U}F,vgf,SWJlM4FYG:Yt"> <field name="TEXT">Balkontür ist geschlossen</field> </block> </value> <next> <block type="timeouts_cleartimeout" id="xk]d6Se:n2C~Q{IqN?0d"> <field name="NAME">timeout</field> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
@Jan1 Das war so bestimmt verkehrt oder?
-
@biker1602
in Code Tacks, das sind die Klammern oben, fünftes Symbol von links. Editiere das oben einfach noch mal. -
-
@Jan1 genau so meinte ich es, wobei ich der Meinung bin, das
sonst falls Wert
weggelassen werden kann -
@crunchip
ja kann weg, da "sonst falls" eh dem "falsch" entspricht und somit ein einfaches "sonst" auch reicht
Normal fängt man auch mit der Abfrage auf wahr an und ich habs so gelassen um das mit "nicht" "Wert" leichter zu zeigen. -
@Jan1 das hätte ich so ja nie hinbekommen vielen Dank.
Du bist ja richtig fit. Darf ich dich nochmal zu einem anderen Problem befragen? -
@biker1602
Klar und das hättest auch ohne Hilfe geschafft, war ja nicht wirklich falsch und es gibt massig Beispiele hier wie man das lösen kann. Es gibt eben nicht nur einen Weg der Lösung, sondern immer mehrere. -
@Jan1 Also ich habe es als neues Script angelegt und gestartet aber Alexa sagt jetzt nichts mehr?
-
@biker1602
baue debug Blöcke ein und schau was noch ausgeführt wird, dann weißt wo es klemmt
Das sollte so laufen, da sich an der Funktion nichts geändert hat.Im übrigen kannst das Thermostat abschalten auch weg lassen, weil die Fritz das nur alle 10 Minuten synchronisiert und die Tür dann schon 10 Minuten offen sein muss, bevor das überhaupt greift