NEWS
Fenster offen/Terrasse mit Verzögerung/soll Temp speichern
-
Hallo,
Problem 1.
im sonst Zweig muß du alles mit "und" verknüpfen, sie müssen ja alle zu sein und nicht nur einige.Problem 2.
Um mir sicher zu sein müsste ich den Javascript Code sehen aber ich denke mir mal, dass du die benutzten Variablen ausserhalb und oberhalb des triggers mit irgendwas beschreiben muß, damit die Variable auch gültig bleibt, wenn der trigger durchlaufen wurde. -
Super erst mal vielen Dank, ja das mit dem "und" leuchtet mir jetzt auch ein.. Werde das gleich umstellen.
Hier ist mal das ganze Script. Es soll halt am Ende die aktuelle Temp speichern und diese später wieder zurück setzten, hier hatte ich bisher immer das Problem, das wohl dann auch die 4,5° gespeichert werden und er das natürlich beim schießen rein schreibt und der HT somit off bleibt.
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="undefined" id="timeout6">timeout6</variable> <variable type="" id="em3J5e8*F^vvG+m;L+iw">Temperatur_Soll</variable> <variable type="undefined" id="timeout2">timeout2</variable> <variable type="" id="{#bB.LZ3XaHu)/HlOUg(">Temperatur_Soll2</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="undefined" id="timeout3">timeout3</variable> <variable type="undefined" id="timeout1">timeout1</variable> <variable type="undefined" id="timeout4">timeout4</variable> <variable type="undefined" id="timeout5">timeout5</variable> </variables> <block type="comment" id="DY`CYb|VzVDvuh.${ggg" x="-3162" y="-1062"> <field name="COMMENT">Energie sparen, Fenster offen erkennung</field> <next> <block type="on_ext" id="k9Ib~iWiKnl)!TP7PB=W"> <mutation items="5"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="O-zGs8/$.EWXATsI=n*d"> <field name="oid">zigbee.0.00158d0002e8bbbc.opened</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="pZgAfGUMy?,x0TUQ,Hnc"> <field name="oid">zigbee.0.00158d000321a505.opened</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id="k#6V7!#{n|zr/zxi9*#^"> <field name="oid">zigbee.0.00158d0003218006.opened</field> </shadow> </value> <value name="OID3"> <shadow type="field_oid" id="SK*^n:w=AoUwFfmE.7.7"> <field name="oid">zigbee.0.00158d000321800c.opened</field> </shadow> </value> <value name="OID4"> <shadow type="field_oid" id="YS]%{s|[@`BL^//`39yb"> <field name="oid">zigbee.0.00158d000321973c.opened</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="[|JF{b//WvEce4Gkcf;N"> <field name="COMMENT">Prüfen ob Fenster offen, schreiben in Fake Fenster</field> <next> <block type="controls_if" id="*s)|-Un}^U43keU/wp`P"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="U+{woiYwFwyQ*g!;(A8*" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_operation" id="/Sj7uUb-8J}kBLVBi{o+" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="K,s9Aord;dVu)iWZ0Tpx"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="RJ1n[2Ve#C%#LheO4}MS"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d000321a505.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="ScvIJ;c#-xlJh-FF`s-#"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="#dz[wD=8OGjJ|l[)bOxK" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="EBDJy-Aj9~j3BEp7QTEn"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="70qzpGBU6BYZXk;6a@u="> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0003218006.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="UgM+l.5:RuU:oIO%MH+%"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="A/;{bj4Gp)B]r?^{GoOq"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="|dRl=EL#doP2DU_oN*c["> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d000321800c.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="uRN8OWa|rPpxK6k3@d%S"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="k=T(01BUK8:OQTq3j$9Q"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="I,b#a8WHvc6vZeM[[Z6!"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d000321973c.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="@Dwu@^^7BPQtax{:^$iA"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="l^ru.9B5Q.(GO-V+Zr=a"> <mutation delay_input="false"></mutation> <field name="OID">0_userdata.0.WZ_EZ.Fenster_auf</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="TbvRm,g.9%dre1~Ru%0."> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="n/?P%KAPAyIR@Ae6?T+}" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id=")6~G=r)t8NAg$#$zao}x" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="35B!lHkmp!qhVZ9PVS=C" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="JYZ/13ReP-=/eepv@JET"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="WB%jpi;M;oI$8.XBtMY~"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002e8bbbc.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="b,o#ti%nS3GdTgLhgk(Z"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="u`x=]GCaoD.A3t{ff}ha"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="YFvA=Ww9?!411|Z1Q(UH"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d000321a505.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="B/4)/7v]07(-z]7HAYga"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="xhQk@7QnSDB7X_-I#K-s" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="|]mw!:~oP9I+5ya#rF[s"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="0x,$!4Z2A]eJ.9v!61o*"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0003218006.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="juVk,n^|$z:7m$5^;*6W"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="@-:LSb6ZpYRl6PS8RQ/("> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="$K]7$B4#+6{6S:hu=p/h"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d000321800c.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="ykAVR{A?FXyZGJBPNB91"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="_5UKj`1,dp4h5:MTLwdo"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="0xPoX2-bDnwSZ~kj-9)*"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d000321973c.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="}wgr0x.we4tX1cHUurMZ"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="FS*t-).O3pU+r~chSe!V"> <mutation delay_input="false"></mutation> <field name="OID">0_userdata.0.WZ_EZ.Fenster_auf</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="/e/W~zO4syho)mQY1Pm~"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="comment" id="c4@$B)%iK,CTanzRjR8g"> <field name="COMMENT">Fake Fenster, damit nicht immer getriggert wird.</field> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="o[_8hzUsr0jtvYf.O!$B"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="=b$l3j90@f1hZ7%7_U%="> <field name="oid">0_userdata.0.WZ_EZ.Fenster_auf</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="H}T*Q7KVO2M-)wuv)Vq#"> <field name="COMMENT">Prüfen ob Fenster offen</field> <next> <block type="timeouts_cleartimeout" id="YuY:[M;+-iZ9}#;h=DBT"> <field name="NAME">timeout</field> <next> <block type="timeouts_cleartimeout" id="uH$GF*H[/|p%MN#J,hVf"> <field name="NAME">timeout1</field> <next> <block type="timeouts_cleartimeout" id="lu!S:R0:qyZ9i%otM~_p"> <field name="NAME">timeout2</field> <next> <block type="timeouts_cleartimeout" id="ho[ZyB`J#5t=HEBi_qC3"> <field name="NAME">timeout3</field> <next> <block type="timeouts_cleartimeout" id="/c7JUU_z}L|XOHdY5itY"> <field name="NAME">timeout4</field> <next> <block type="timeouts_cleartimeout" id="9h-WsZihH%Rq$[*XA|jY"> <field name="NAME">timeout5</field> <next> <block type="controls_if" id="5{PvH?,[r.|WQ:.?bO60"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="^:ta~yL6#a:vdxCPx*dW" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_operation" id="rg,g.1d*Q]3z*E`/sSz@"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="AFDB(ALF`WSku*9cP5j?"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="%Pck*sQy8PpW2QbhoZyU"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.WZ_EZ.Fenster_auf</field> </block> </value> <value name="B"> <block type="logic_boolean" id="1mELjOco6vqU*UYd}QL8"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="nckc+=.0s?i^z47Q-$}R"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="EZ(91j$fCYDxxa)EJCkX"> <field name="ATTR">val</field> <field name="OID">maxcul.0.KEQ0918271.desiredTemperature</field> </block> </value> <value name="B"> <block type="math_number" id="?71MG:MT2[6^wh@O,q57"> <field name="NUM">6</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="aVvE{T.y0vwt`1yEO8B,"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="uOv]db/CIt{e,UTNneGc"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="j$q19^4OF%6yVmZ~C},O"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.WZ_EZ.Fenster_auf</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Ykch,6lSS)YeuajusAL("> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="ph~_(z2SAX*o[G]|:g!J"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="@Wo_.j`A}r?p0|z7=wwe"> <field name="ATTR">val</field> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> </block> </value> <value name="B"> <block type="math_number" id="k=V1v/E9:+[4DIlqg0Cv"> <field name="NUM">6</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="KrosR^l0Q!_$=@~J%BY?"> <field name="VAR" id="em3J5e8*F^vvG+m;L+iw" variabletype="">Temperatur_Soll</field> <value name="VALUE"> <shadow type="text" id="K!gk`#xT`%!X:Z~9m8jC"> <field name="TEXT"></field> </shadow> <block type="get_value" id="JVRRKHfM/aJT8(u5It*J"> <field name="ATTR">val</field> <field name="OID">maxcul.0.KEQ0918271.desiredTemperature</field> </block> </value> <next> <block type="variables_set" id="2E[HrGuupg_`jGbaGSnz"> <field name="VAR" id="{#bB.LZ3XaHu)/HlOUg(" variabletype="">Temperatur_Soll2</field> <value name="VALUE"> <shadow type="text" id="K!gk`#xT`%!X:Z~9m8jC"> <field name="TEXT"></field> </shadow> <block type="get_value" id="Z/arv?6{}bG7@H%)*`I7"> <field name="ATTR">val</field> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> </block> </value> <next> <block type="comment" id="[r4m`-DWXDl-U{Tmxl)4"> <field name="COMMENT">(6) manual window mode (Temp OFF)</field> <next> <block type="timeouts_settimeout" id="-b~M%#=kqhn{WrvC3H[1"> <field name="NAME">timeout</field> <field name="DELAY">20</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="WNpsZ$8$I6[Tlk,oAKz!"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ0918271.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="qv[4S1LDHHr=M;XCH|7="> <field name="NUM">6</field> </block> </value> <next> <block type="timeouts_settimeout" id="sE(vMoQTghZf,Y6!p{w9"> <field name="NAME">timeout1</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="(_(f/nEZPLx+pUjE{6S+"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ1082883.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="A5%!5-CW-4zyE:jdipNn"> <field name="NUM">6</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="PX,h_]9ojJ@2CZxqpBhb"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="SgYgG0|uJ1E8e9POj`q`"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.WZ_EZ.Fenster_auf</field> </block> </value> <value name="B"> <block type="logic_boolean" id="#gm,zfzwY|_^%sTnc]bs"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="I^Tr?7!yLl.*G+-JLtHe"> <field name="NAME">timeout2</field> <field name="DELAY">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="comment" id="),/K3wL$a2d.`IYTlJWE"> <field name="COMMENT">(0) manual mode</field> <next> <block type="control" id=")t@ky+HvypsGNXi`.q;Z"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ0918271.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="b-GBTc*O6M.~CjPy6/hP"> <field name="NUM">1</field> </block> </value> <next> <block type="timeouts_settimeout" id="rE8w53`8NPgZzr`zdg5."> <field name="NAME">timeout3</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id=":UqH1a;rEQ`]?R_:1m]C"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ1082883.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=";P/rY+W,W-lk2E|+-l*D"> <field name="NUM">1</field> </block> </value> <next> <block type="comment" id="cM`iLz0$3yv8eQ][1{vQ"> <field name="COMMENT">zuvor eingestellte Temp setzten</field> <next> <block type="timeouts_settimeout" id="BRTU[m|_Q?md5A#$-XAy"> <field name="NAME">timeout4</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="E|+DN@ed?p8Tzvsu1{?S"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ0918271.desiredTemperature</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="jD52nITzzG:OoU1Uj`*:"> <field name="VAR" id="em3J5e8*F^vvG+m;L+iw" variabletype="">Temperatur_Soll</field> </block> </value> <next> <block type="timeouts_settimeout" id="t(c.*N}^@6rlp|xVf;(C"> <field name="NAME">timeout5</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="Z=4MGl7nnB]v|c@6vq@-"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="iC+^Nb$d)J}X?%Z)}JwU"> <field name="VAR" id="{#bB.LZ3XaHu)/HlOUg(" variabletype="">Temperatur_Soll2</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> <block type="comment" id="v}/Ec-^?[d`UFVtE(sk5" x="-2112" y="-1062"> <field name="COMMENT">Tür offen Erkennung, mit mehr Verzögerung</field> <next> <block type="on_ext" id="=;#kRY[[BRtTogqTHE$q"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="CVtiS9-`oJ2U6_$^21^)"> <field name="oid">zigbee.0.00158d0002e8bbbc.opened</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="xM)26i]0r;;W4[5sSltv"> <field name="NAME">timeout6</field> <next> <block type="controls_if" id="V|F*ttWl5Xi{LI/c4C9~"> <value name="IF0"> <block type="logic_compare" id="-9:yyHB%Qxp::2:Xtngf"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="9F^v)9fx!=lHd+;!%HfO"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002e8bbbc.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="0N|u?nErUxvV5PP7D%Bp"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="LU6Ct|$LhR(j!8K_y6HO"> <field name="NAME">timeout6</field> <field name="DELAY">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="aSYB7NivBi)^~I44Q_OK"> <mutation delay_input="false"></mutation> <field name="OID">0_userdata.0.WZ_EZ.Fenster_auf</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="r8V2jdw@_U,Q$`kW/CEG"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> <block type="logic_operation" id="p@a^{ANV#`L.}q+TlqFB" inline="false" disabled="true" x="-2713" y="-937"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="/jZ0i6OSaq$;PeQpE)GZ" disabled="true"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="YpJJX5k2DBc41xgX8/HY"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002e8bbbc.opened</field> </block> </value> <value name="B"> <block type="logic_boolean" id="d3;]{@f$:!i+GEgYc#D^"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </xml>
Das der Teil mit der Tür so ausgekoppelt ist, ist in Ordnung ? Wüsste aber sonst nicht, wie ich dort einen längeren Timer bekomme.
-
@D3ltoroxp
Das mit der Tür finde ich so in Ordnung. Jede Alternative die mir einfällt wäre in Blockly ein Ungetüm.In deinem Code sehe ich keinen Grund warum die Heizung nicht gesetzt werden sollte. Hab den unteren Teil etwas optimiert und Debugausgaben hinzugefügt.
EDIT: Das setzten der Variablen solltest du vielleicht im jeweiligen Timeoutblock machen.
Ist nur der untere Block:
<block xmlns="http://www.w3.org/1999/xhtml" type="on_ext" id="o[_8hzUsr0jtvYf.O!$B" x="-3162" y="-367"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="=b$l3j90@f1hZ7%7_U%="> <field name="oid">0_userdata.0.WZ_EZ.Fenster_auf</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="H}T*Q7KVO2M-)wuv)Vq#"> <field name="COMMENT">Prüfen ob Fenster offen</field> <next> <block type="timeouts_cleartimeout" id="YuY:[M;+-iZ9}#;h=DBT"> <field name="NAME">timeout</field> <next> <block type="timeouts_cleartimeout" id="uH$GF*H[/|p%MN#J,hVf"> <field name="NAME">timeout1</field> <next> <block type="timeouts_cleartimeout" id="lu!S:R0:qyZ9i%otM~_p"> <field name="NAME">timeout2</field> <next> <block type="timeouts_cleartimeout" id="ho[ZyB`J#5t=HEBi_qC3"> <field name="NAME">timeout3</field> <next> <block type="timeouts_cleartimeout" id="/c7JUU_z}L|XOHdY5itY"> <field name="NAME">timeout4</field> <next> <block type="timeouts_cleartimeout" id="9h-WsZihH%Rq$[*XA|jY"> <field name="NAME">timeout5</field> <next> <block type="controls_if" id="5{PvH?,[r.|WQ:.?bO60"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="AFDB(ALF`WSku*9cP5j?"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="3Is3%:m#FP??/Lbo5l,s"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="1mELjOco6vqU*UYd}QL8"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="t^.!X2?{brnJ7+]JmJ@."> <value name="IF0"> <block type="logic_operation" id="aVvE{T.y0vwt`1yEO8B,"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="uOv]db/CIt{e,UTNneGc"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="EZ(91j$fCYDxxa)EJCkX"> <field name="ATTR">val</field> <field name="OID">maxcul.0.KEQ0918271.desiredTemperature</field> </block> </value> <value name="B"> <block type="math_number" id="vU/}24jERge1@wyV7^bQ"> <field name="NUM">6</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="ph~_(z2SAX*o[G]|:g!J"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="@Wo_.j`A}r?p0|z7=wwe"> <field name="ATTR">val</field> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> </block> </value> <value name="B"> <block type="math_number" id="k=V1v/E9:+[4DIlqg0Cv"> <field name="NUM">6</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="KrosR^l0Q!_$=@~J%BY?"> <field name="VAR" id="em3J5e8*F^vvG+m;L+iw" variabletype="">Temperatur_Soll</field> <value name="VALUE"> <shadow type="text" id="K!gk`#xT`%!X:Z~9m8jC"> <field name="TEXT"></field> </shadow> <block type="get_value" id="JVRRKHfM/aJT8(u5It*J"> <field name="ATTR">val</field> <field name="OID">maxcul.0.KEQ0918271.desiredTemperature</field> </block> </value> <next> <block type="variables_set" id="2E[HrGuupg_`jGbaGSnz"> <field name="VAR" id="{#bB.LZ3XaHu)/HlOUg(" variabletype="">Temperatur_Soll2</field> <value name="VALUE"> <shadow type="text" id="K!gk`#xT`%!X:Z~9m8jC"> <field name="TEXT"></field> </shadow> <block type="get_value" id="Z/arv?6{}bG7@H%)*`I7"> <field name="ATTR">val</field> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> </block> </value> <next> <block type="comment" id="[r4m`-DWXDl-U{Tmxl)4"> <field name="COMMENT">(6) manual window mode (Temp OFF)</field> <next> <block type="timeouts_settimeout" id="-b~M%#=kqhn{WrvC3H[1"> <field name="NAME">timeout</field> <field name="DELAY">20</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="WNpsZ$8$I6[Tlk,oAKz!"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ0918271.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="qv[4S1LDHHr=M;XCH|7="> <field name="NUM">6</field> </block> </value> <next> <block type="timeouts_settimeout" id="sE(vMoQTghZf,Y6!p{w9"> <field name="NAME">timeout1</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="(_(f/nEZPLx+pUjE{6S+"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ1082883.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="A5%!5-CW-4zyE:jdipNn"> <field name="NUM">6</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="timeouts_settimeout" id="I^Tr?7!yLl.*G+-JLtHe"> <field name="NAME">timeout2</field> <field name="DELAY">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="debug" id="}L9JOx]?`%y@cJT_3s)t"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="ErZA|)nz],aty)%$)To^"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="cAQMO(YwO06g},jhO6Wr"> <field name="VAR" id="em3J5e8*F^vvG+m;L+iw" variabletype="">Temperatur_Soll</field> </block> </value> <next> <block type="debug" id="yuoHmd!:KfOH/eWOWhQ$"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="ErZA|)nz],aty)%$)To^"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="T){_q!E8{VBa?AAONK5{"> <field name="VAR" id="{#bB.LZ3XaHu)/HlOUg(" variabletype="">Temperatur_Soll2</field> </block> </value> <next> <block type="comment" id="),/K3wL$a2d.`IYTlJWE"> <field name="COMMENT">(0) manual mode</field> <next> <block type="control" id=")t@ky+HvypsGNXi`.q;Z"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ0918271.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="b-GBTc*O6M.~CjPy6/hP"> <field name="NUM">1</field> </block> </value> <next> <block type="timeouts_settimeout" id="rE8w53`8NPgZzr`zdg5."> <field name="NAME">timeout3</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id=":UqH1a;rEQ`]?R_:1m]C"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ1082883.mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=";P/rY+W,W-lk2E|+-l*D"> <field name="NUM">1</field> </block> </value> <next> <block type="comment" id="cM`iLz0$3yv8eQ][1{vQ"> <field name="COMMENT">zuvor eingestellte Temp setzten</field> <next> <block type="timeouts_settimeout" id="BRTU[m|_Q?md5A#$-XAy"> <field name="NAME">timeout4</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="E|+DN@ed?p8Tzvsu1{?S"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ0918271.desiredTemperature</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="jD52nITzzG:OoU1Uj`*:"> <field name="VAR" id="em3J5e8*F^vvG+m;L+iw" variabletype="">Temperatur_Soll</field> </block> </value> <next> <block type="timeouts_settimeout" id="t(c.*N}^@6rlp|xVf;(C"> <field name="NAME">timeout5</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="Z=4MGl7nnB]v|c@6vq@-"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="iC+^Nb$d)J}X?%Z)}JwU"> <field name="VAR" id="{#bB.LZ3XaHu)/HlOUg(" variabletype="">Temperatur_Soll2</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </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> </next> </block> </statement> </block>
-
Hm verstehe ich das so richtig ? Der Wert Block, holt sich den Wert vom oben angeführten Objekt ?
Das heißt dann automatisch mache "sonst" wenn Wert von oben falsch ? Oder wie triggert der untere Teil, wenn die Fenster geschlossen sind ?
Mit den Timer und Variablen meinst du so ?
Ich hoffe die Zeit reicht aus, weil er muss ja die Temp auslesen und gleichzeitig setzt er doch den Modus auf 6, der wiederum die Temp auf 4,5° setzt. Daher hatte ich das immer vor dem Timer, damit dazwischen Zeit ist.
Weil jetzt wird das ja eigentlich gleichzeitig ausgeführt oder nicht ?Oder kann man den Sollwert "nur" schreiben lassen, wenn er eben >6° ist ? Dann sollte er ja 4,5° auch gar nicht mehr in die Variable schreiben.
Es soll halt am Ende, wenn das Fenster zu ist, wieder der Wert drin stehen, der vorher drin stand. -
@D3ltoroxp sagte in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Hm verstehe ich das so richtig ? Der Wert Block, holt sich den Wert vom oben angeführten Objekt ?
Ja, jedoch trifft "Das ist der Wert der den Trigger auslöst" es besser.
Das heißt dann automatisch mache "sonst" wenn Wert von oben falsch ? Oder wie triggert der untere Teil, wenn die Fenster geschlossen sind ?
Sonst wird ausgeführt wenn
falls Wert = wahr
unwahr ist. Im nächsten Schritt wird abgefragt, ob die Temperatur über 6 ° ist, ist sie es, wird sie gespeichert und verringert. Ist sie es nicht, wird nichts weiter getan.
Mit den Timer und Variablen meinst du so ?
Ja, ist aber noch immer nicht gut
Ich hoffe die Zeit reicht aus, weil er muss ja die Temp auslesen und gleichzeitig setzt er doch den Modus auf 6, der wiederum die Temp auf 4,5° setzt. Daher hatte ich das immer vor dem Timer, damit dazwischen Zeit ist.
Weil jetzt wird das ja eigentlich gleichzeitig ausgeführt oder nicht ?Nicht gleichzeitig sondern nacheinander. Das Auslesen von Datenpunkten ist eigentlich immer unkritisch.
Oder kann man den Sollwert "nur" schreiben lassen, wenn er eben >6° ist ? Dann sollte er ja 4,5° auch gar nicht mehr in die Variable schreiben.
Da muß ich noch drüber nachdenken. Wofür setzt du eigentlich den Mode? Und wieso hast du Timeouts zwischen wirklich jedem steure Befehl?
-
@ticaki said in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Da muß ich noch drüber nachdenken. Wofür setzt du eigentlich den Mode? Und wieso hast du Timeouts zwischen wirklich jedem steure Befehl?
Den Mode setzte ich auf Window open Mode, damit setzt er die Temp automatisch auf 4,5° . Timeouts zwischen jedem Befehl, weil ich da ja zwei HT's steuere, damit das auch übernommen wird. Meinst ich brauch nicht so viele.
-
@D3ltoroxp sagte in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
@ticaki said in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Da muß ich noch drüber nachdenken. Wofür setzt du eigentlich den Mode? Und wieso hast du Timeouts zwischen wirklich jedem steure Befehl?
Den Mode setzte ich auf Window open Mode, damit setzt er die Temp automatisch auf 4,5° . Timeouts zwischen jedem Befehl, weil ich da ja zwei HT's steuere, damit das auch übernommen wird. Meinst ich brauch nicht so viele.
Mehr Infos zu dem Mode. Was bedeutet welcher Mode? Du setzt den Mode auf 1 und auf 6. Es sollte eigentlich garnicht nötig sein, die Temperatur zu setzten, wenn man die Fenstermodus ein-/ausschaltet? Der "Vorteil" einer solchen Funktion ist doch gerade, das die Temperatur auf den ursprünglichen Wert zurück geht, wenn der Modus beendet wird.
-
@ticaki Hm, sollte und so ging es auch in FHEM. Mit ioBroker, habe ich das nicht hinbekommen, das die HT's abschalten wenn ich das Fenster öffne und beim schließen wieder in die ursprüngliche Temp zurück gehen.
Mode 6 = Window Open Mode / Mode 1 = Manual Mode. In FHEM hat man Fake Shutter mit den richtigen Kontakten verknüpft und die HT's gingen automatisch in die Fenster offen Temp, das scheint hier in ioB mit dem Max Adapter nicht unterstützt zu werden, also hatte ich mir so beholfen. Wenn das anders geht, weiß ich leider nicht wie und habe auch nichts dazu gefunden.
Nächste Problem ist, das der Mode manual Window kurz aktiviert ist und der HT automatisch wieder zurück in manual geht. Ich bekomme den HT erst wieder zum heizen wenn ich ihm eine Temp gebe. Da ich die Heizprogramme mit Blockly erstellt habe, muss der HT im manual Mode laufen.
-
@D3ltoroxp
Vorschlag, wenn der Mode nicht so funktioniert wie wir uns das erhoffen, werfe ihn oben und unten raus. Setzte die Temperatur im oberen Teil auf 4,5° und im unteren Teil auf den gespeicherten Wert. Und versuche es mal mit weniger Timeouts Was passiert in deinem ersten Code, wenn jemand alle Fenster schließt und nach genau 65 Sekunden eines öffnet. (Murphys Gesetz) -
@ticaki said in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Was passiert in deinem ersten Code, wenn jemand alle Fenster schließt und nach genau 65 Sekunden eines öffnet. (Murphys Gesetz)
Hm, geht wieder in den Manual Window Mode und setzt den HT auf 4,5° ?
@ticaki said in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Vorschlag, wenn der Mode nicht so funktioniert wie wir uns das erhoffen, werfe ihn oben und unten raus. Setzte die Temperatur im oberen Teil auf 4,5° und im unteren Teil auf den gespeicherten Wert.
Stimmt, da ich jetzt ja alle HT's auf Manual habe, wegen Wochenprogramm Blockly, könnte ich das in der Tat raus schmeißen, der HT sollte dann auch auf Off gehen, wenn ich 4,5° eingebe.
Ich teste und berichte wieder und ich schau mal, was ich so an Timer rausnehmen kann.
-
@D3ltoroxp
Und überschreibt die Temperatur in Soll2 -
@ticaki said in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
@D3ltoroxp
Und überschreibt die Temperatur in Soll2?? Wer oder was überschreibt die Temp in Soll 2 ? Ach ja jetzt, wollte den Beitrag löschen, aber ging nicht.
-
@D3ltoroxp
Jo und ich wollte schreiben, das nicht löschen nervt mich auch und wegen ungenauem Zielen haste jetzt ne positive Bewertung -
So besser ?
Ich hatte halt nach jedem Befehl ein Timeout, damit der Stick auch mit dem Senden nachkommt, weiß ja nicht wie das sonst passiert da werden ja die Befehle in einem Bruchteil hintereinander gesendet, ob da das ein oder andere vllt nicht verschluckt wird und gar nicht am HT ankommt.
Gut ist jetzt vllt kein direkter Vergleich, aber beim Harmony HUB gabs da immer Probleme, wenn ich da ohne Timeouts die IR Befehle an TV und AVR sendete, kamen oft welche nicht an.
-
@D3ltoroxp
Ich weiß was du meinst. Das sollt mit Funk aber nicht so extrem sein, wie mit IR.
Script schaut gut aus. Probiere mal aus, und kontrolliere im Log ob die richtigen Temperaturwerte dort auftauchen. Wenn es ordentlich läuft, kannst du die Debugsachen rauswerfen. -
@D3ltoroxp said in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Was ist hier der unterschied, zu meiner Variante, mit Wert vom Objekt xxx = wahr zu deiner ? Einfach aufgeräumter und kompakter, nicht doppelt gemoppelt ? Aber im Endeffekt machen beide Varianten das gleiche ?
-
Es gibt 2 Punkte die für Wert sprechen:
- Wert wird dem Block "Falls Objekt" so oder so übergeben und ist die "schnellste" Form auf diesen Wert zuzugreifen.
- Wert enthält den Wert der diesen Trigger ausgelöst hat. Wert von Objekt... bzw. getState() kann zu diesem Zeitpunkt noch einen anderen Wert zurückgeben.
Letzteres hat vor kurzem einer der Dev's hier im Forum angemerkt.
-
wenn Du auf Wert bei einem "boolschen" Wert prüfen willst(und true erwartest),dann brauchst Du das "gleich wahr" nicht zusätzlich. Wenn Du auf false prüfen willst, dann reicht auch "nicht Wert"
so sollte es reichen
-
Hm ich muss das noch mal genau beobachten, wann das passiert. Aber gestern war es wieder so, das er dann keine Temp mehr setzte, oder wahrscheinlich 4,5° obwohl er es ja eigentlich dann nicht in die Variable schreiben soll.
Und was heute noch dazu kam, es läuft ja noch bei mir das Wochenprogramm. Problem hier, Fenster und Türen auf und Temp wird dann gesetzt, weil ja der nächste Schaltpunkt laut Programm war. Das ist etwas blöd. Mir fällt auch grad nicht ein wie ich das lösen soll.
-
@D3ltoroxp
Wird das Wochenprogramm auch über Blockly gesteuert?