NEWS
Fenster offen/Terrasse mit Verzögerung/soll Temp speichern
-
@ticaki Das heißt ich müsste beide Scripte zusammen in eins legen ? Oder wie bekomme ich die Variable aus dem einen Blockly ins andere ? Die Variablen sind doch immer nur pro Blocky.
-
@D3ltoroxp
Das wäre eine Möglichkeit. Wenn es für mich wäre, würde ich mir Datenpunkte erstellen z.B. javascript.0.wohnzimmer.fenster_auf.
Im Fensterscript würde ich diesen Datenpunkten auf true oder false setzen und Im Heizungsscript würde auf diesen Datenpunkt triggern und die entsprechende Temperatur setzen.Den Datenpunkt mit Fenster_auf könnte man z.B. auch verwenden um nach einer bestimmten Lüftungsdauer daran zu erinnern. Oder wenn niemand zu hause ist, bescheid zu sagen das ein Fenster oder eine Tür sich geöffnet hat.
Grundsätzlich würde ich es vermeiden einen State von mehreren Scripten setzen zu lassen.
-
Hm klingt verwirrend.
Ich habs jetzt mal so gemacht, mal schauen wie das läuft. So ist es halt nicht ordentlich und sauber ?
Nen Fenster auf Datenpunkt habe ich ja schon, das macht der obere Teil des Scripts, da ich ja viele Fenster für den Raum habe. Dieser State wird ja geändert und darauf hin der Wert gesetzt. Du würdest also im Heizungsscript einen Datenpunkt erstellen, in den er den aktuellen Heizprogrammwert schreibt und diesen dann fürs HT's setzten lassen, wenn ich die Fenster schließe.
Ich habe hier aber noch nicht ganz verstanden, wie die Temps aus dem Wochenprogramm dann regulär gesetzt werden, ohne über das Fenster, das soll ja auch passieren. Das er zu bestimmten Zeiten Temps an das HT sendet. Das würde ja somit dann nicht erfüllt.
-
@D3ltoroxp
Hab mich wohl falsch ausgedrückt.Dein Wochenprogramm ist jetzt eine Heizungssteuerung und für das Wochenprogramm wird ein Datenpunkt zimmername.fenster_modus erstellt.
Das Wochenprogramm alleine verändert die Heizungstemperatur.Das Fensterscript setzt diesen zimmername.fenster_modus Datenpunkt auf true oder false und das Wochenprogrammscript reagiert darauf entsprecht. Das Wochenprogramm weiß, ja welche Temperatur gerade anliegen soll.
Das von dir Vorgeschlagene Vorgehen würde aber auch gehen.
-
Also so wahrscheinlich eine Katastrophe.
Er würde doch beim Fenster schließen, die aktuelle Temp aus dem Wochenprogramm an den HT senden. Sollte das Fenster zu sein, wird auch die Temp aus dem Wochenprogramm an den HT gesendet, wenn Fenster offen dann nicht ? Aber wahrscheinlich unsauber gelöst.
-
@D3ltoroxp
gib mir mal das xml dann zeige ich dir wie ich mir das vorstelle. Bekomme das leider nicht als Beispiel hin ohne deine Gerätenamen. -
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="CuP,B)0Ri@%j_(A8Y=Kn">Heizprogramm</variable> <variable type="undefined" id="timeout2">timeout2</variable> <variable type="undefined" id="timeout1">timeout1</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="" id="em3J5e8*F^vvG+m;L+iw">Wohnzimmer_Soll_Temp</variable> <variable type="" id="{#bB.LZ3XaHu)/HlOUg(">Esszimmer_Soll_Temp</variable> </variables> <block type="comment" id="DY`CYb|VzVDvuh.${ggg" x="-3112" 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="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="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="variables_set" id="KrosR^l0Q!_$=@~J%BY?" disabled="true"> <field name="VAR" id="em3J5e8*F^vvG+m;L+iw" variabletype="">Wohnzimmer_Soll_Temp</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="control" id="WNpsZ$8$I6[Tlk,oAKz!"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ0918271.desiredTemperature</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="qv[4S1LDHHr=M;XCH|7="> <field name="NUM">4.5</field> </block> </value> <next> <block type="variables_set" id="2E[HrGuupg_`jGbaGSnz" disabled="true"> <field name="VAR" id="{#bB.LZ3XaHu)/HlOUg(" variabletype="">Esszimmer_Soll_Temp</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="control" id="(_(f/nEZPLx+pUjE{6S+"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="A5%!5-CW-4zyE:jdipNn"> <field name="NUM">4.5</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="timeouts_settimeout" id="I^Tr?7!yLl.*G+-JLtHe"> <field name="NAME">timeout1</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="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</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="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> <next> <block type="comment" id="cM`iLz0$3yv8eQ][1{vQ"> <field name="COMMENT">zuvor eingestellte Temp setzten</field> <next> <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="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> <next> <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="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> <block type="comment" id="v}/Ec-^?[d`UFVtE(sk5" x="-2262" 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">timeout2</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">timeout2</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="comment" id="kSzvq,+;oW3y@UL-/(+Q" x="-1563" y="-1062"> <field name="COMMENT">Werktags</field> <next> <block type="schedule" id=",nSP8Zc;PF,wP(JY;rRY"> <field name="SCHEDULE">30 5 * * 1-5</field> <statement name="STATEMENT"> <block type="comment" id="_mDeC2kZ.i^Tj{}21~5:"> <field name="COMMENT">Mo-Fr 05:30 Heizkörper auf 20°</field> <next> <block type="variables_set" id="cU30f~(A_Tekfiw`QNZM"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> <value name="VALUE"> <block type="math_number" id="m)Z`sW_.DsCh|mbdzcR_"> <field name="NUM">20</field> </block> </value> <next> <block type="controls_if" id="C@VCFW=9S8VsNULQ}mFS"> <value name="IF0"> <block type="logic_compare" id="bNzNRwgeYW@;l|VJF?#4"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="_LlPm,LDmSy/hGu[};:i"> <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="0ZjE#2Idy6G`[/0@vkow"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Mhp3_oGn?K:./vD?b2%i"> <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="e.T9/Lk(fgU(EMnviDw_"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> <next> <block type="control" id="Svi,~w+7$=B-P~9-ao=,"> <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=".A[1^;voo3^@0Sp|3_5a"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> <next> <block type="schedule" id="P]FD[8d.6dMuri8T;GA|" disabled="true"> <field name="SCHEDULE">0 9 * * 1-5</field> <statement name="STATEMENT"> <block type="comment" id="^@v~tI^E7F,x:m3([F}n"> <field name="COMMENT">Mo-Fr 09:00 Heizkörper auf 18°</field> <next> <block type="control" id="jcW*[hoK7vw#vm+_@++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="math_number" id="e|m;PCrmeC1aPJtNsG{Z"> <field name="NUM">18</field> </block> </value> <next> <block type="control" id="X34hX4u?5vrAGfFOTV$D"> <mutation delay_input="true"></mutation> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">2</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="7px(2r+QLRkpuW)_CkH:"> <field name="NUM">18</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="schedule" id="KB91-DUp*DV=U{G2nvJm" disabled="true"> <field name="SCHEDULE">30 11 * * 1-5</field> <statement name="STATEMENT"> <block type="comment" id="8E/~k%6[+sYD6C_nz#Y6"> <field name="COMMENT">Mo-Fr 11:30 Heizkörper auf 20°C</field> <next> <block type="control" id="]Z4?mht]VV`-OBgkl7qZ"> <mutation delay_input="false"></mutation> <field name="OID">maxcul.0.KEQ0918271.desiredTemperature</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="dPu;Cxk!v%%$-!5cQr33"> <field name="NUM">20</field> </block> </value> <next> <block type="control" id="IVRN7~9#C}OQ4@CrGNte"> <mutation delay_input="true"></mutation> <field name="OID">maxcul.0.KEQ1082883.desiredTemperature</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">2</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="3S{VVqi#7MuSyw-}B%P)"> <field name="NUM">20</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="schedule" id="7vlLoudvc}8H7t])?U4X"> <field name="SCHEDULE">0 22 * * 1-5</field> <statement name="STATEMENT"> <block type="comment" id=")2+bG2DX*rfvD-q)S,kg"> <field name="COMMENT">Mo-Fr 22:00 Nachtabsenkung auf 18°C</field> <next> <block type="variables_set" id="_1(,x|mT(vVLpc:1k8]b"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> <value name="VALUE"> <block type="math_number" id="]n09:)gX@wp0:+J7F8jE"> <field name="NUM">18</field> </block> </value> <next> <block type="controls_if" id="77:GV|nPyr?$2XoX~:n6"> <value name="IF0"> <block type="logic_compare" id="]Tbn*hgSj4w_lNzzgSOF"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="-J{}V9Mqv/-Z_BY7Sis#"> <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="3zH6miGEDa,/=D!`+oK)"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="c8~lN0Md5!]`y*xhm{kv"> <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="6]l(GK/V~rd`F.Tnhpsj"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> <next> <block type="control" id="sjq{}R6K^@1vY7[c6.],"> <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="NF[dn=[OiJhIuB0IyJ;~"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="comment" id="I@D2k[Rlb#E-st0J/o^6" x="-1562" y="-162"> <field name="COMMENT">Wochenende</field> <next> <block type="schedule" id="r7GeKE0]9w:Pv0.7y[mW"> <field name="SCHEDULE">30 6 * * 0,6</field> <statement name="STATEMENT"> <block type="comment" id="5ABX_-Gu|`]SI|^mhSCh"> <field name="COMMENT">Sa-So 06:45 Heizkörper auf 20°</field> <next> <block type="variables_set" id="ZEVIRt5mVrdE8;bU=`a$"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> <value name="VALUE"> <block type="math_number" id="(U`[A%3;$df=v:!U[?{}"> <field name="NUM">20</field> </block> </value> <next> <block type="controls_if" id="%nst-y,fW+2rpwykyw}f"> <value name="IF0"> <block type="logic_compare" id="9I@E(YUgBo^AL8Px]9f8"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="}$@Z~f`Hejm5S$QK^ko;"> <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="rqRc8#lW`Tu9;|7VPmr7"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="y,zC{!liG-3.L~Y,oL!3"> <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="131[],}1`MN{ltthuNrK"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> <next> <block type="control" id="_$r)s8.b.i01kH,ppAwi"> <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=",hH{7qeKeq)oc|S;^:aA"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> <next> <block type="schedule" id="hEdP^CDoFX)(~/pZR4{x"> <field name="SCHEDULE">0 0 * * 0,6</field> <statement name="STATEMENT"> <block type="comment" id="u:C[L~aEPO1ro/8wsm!D"> <field name="COMMENT">Sa-So 00:00 Heizkörper auf 18°</field> <next> <block type="variables_set" id="@5^7wv^^ZaOAeu**||so"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> <value name="VALUE"> <block type="math_number" id="FWPV`Z.99Q=n5/Pr}ouN"> <field name="NUM">18</field> </block> </value> <next> <block type="controls_if" id="9c{1i9QZMmicX6(Y=I`h"> <value name="IF0"> <block type="logic_compare" id="nDH4u+PKGZ?WLHS~!}*j"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="b1~L{XBDcp%r0(PZfvqE"> <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="n*eW|*mXwU);]Tze+?Mt"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="A]6;5Dkc=zOIK9xT.vK("> <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="P,3g@Zaa`L797(D(Txij"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> <next> <block type="control" id="[6Uf{d^qbR=C0N(ZQ~i1"> <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="rTb{O!_dmp47^MS2%Keb"> <field name="VAR" id="CuP,B)0Ri@%j_(A8Y=Kn" variabletype="">Heizprogramm</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </xml>
Bitteschön, und Danke für deine Unterstützung.
-
Ich hoffe das ich keine Fehler drin hab ist doch recht groß das ganze.
-
Vielen Dank, ich muss da erst mal durchblicken, was was nun ist. Wolltest du nicht mit Datenpunkten arbeiten ? Ist das so eine saubere Lösung, die du mir geschickt hast, oder macht man das normalerweise nicht ?
-
Passt so.
Ich hatte in meinem Vorschlag übersehen das du ja schon einen Datenpunkt hast den du auf "wahr" setzt wenn die Fenster auf sind. Ansonsten kann man das so machen. Was du vorher hattest macht man nicht. Die Temperatur aus nur einem Blockly zu setzen ist der richtige Weg.
Ich habe nichts anders gemacht als das setzen der tatsächlichen Werte in einen Funktion auszulagern, die auch gleich die Fenster prüft.
Wenn du die auf verschiedene Blockys aufsplitten willst dann links in ein eigenes und rechts in ein eigenes:
Das hier könnte man noch optimieren:
Durch das Verlagern der Timeouts ersparst du dir eine Abfrage und es ist in sich schlüssiger. -
Glaub jetzt hast du mich komplett verwirrt. Jetzt bin ich komplett lost. Ich versuche mal zu erklären, ob ich das richtig verstehe.
Linke Teil ist klar, der kümmert sich um die Fenster offen oder zu. So auf der rechten Seite oben ist ja das Wochenprogramm.
Dieses schreibt einmal die gewünschte Temp in die Variable "Heizprogramm" und startet einmal einen Trigger ?
Dieser reagiert dann eben, wenn der Cron die Temp setzt, und prüft dann wenn Fenster auf, mache auf 4,5 und wenn Fenster zu setzte Temp aus der Variable "Heizprogramm" ?
Da die Variable unabhängig vom Fenster / Türstatus in die Variable geschrieben wird, holt er sich das dann eben wieder da raus, wenn die Tür zu geht, falls die Tür schon zu ist, schickt die Funktion die Temp an den HT.
EDIT::
Diesen Block gab es so schon immer ?
EDIT 2 ::
Das hier muss aber noch vorhanden sein, sonst fehlt mir ja der Block, setzte WZ_EZ_Heizprogramm. Aber wenn ich das so wie im zweiten Screen optimiere, ist er ja weg.
-
@D3ltoroxp sagte in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Dieses schreibt einmal die gewünschte Temp in die Variable "Heizprogramm" und startet einmal einen Trigger ?
Das ist kein Trigger, das ist eine Funktion. Anstatt die gleichen Bausteine 8 mal zusammenzustecken, nehme ich einen Funktionsbaustein und rufe diesen auf.
Dieser reagiert dann eben, wenn der Cron die Temp setzt, und prüft dann wenn Fenster auf, mache auf 4,5 und wenn Fenster zu setzte Temp aus der Variable "Heizprogramm" ?
richtig.
Da die Variable unabhängig vom Fenster / Türstatus in die Variable geschrieben wird, holt er sich das dann eben wieder da raus, wenn die Tür zu geht, falls die Tür schon zu ist, schickt die Funktion die Temp an den HT.
richtig.
-
@D3ltoroxp sagte in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
EDIT::
Diesen Block gab es so schon immer ?
Verstehe die Frage nicht.
EDIT 2 ::
Das hier muss aber noch vorhanden sein, sonst fehlt mir ja der Block, setzte WZ_EZ_Heizprogramm. Aber wenn ich das so wie im zweiten Screen optimiere, ist er ja weg.
War der vorher da?
-
@ticaki Hier doch im ersten Screen.
Wenn ich den lösche, habe ich auch oben keine Funktionsbausteine, die ich bei den CronJobs mit rein packe.
@ticaki said in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Verstehe die Frage nicht.
Dieser Block
Setze Temperatur mit:
Soll-Temperatur
Fenster aufGabs den schon immer, oder hast du den irgendwie erstellt ?
EDIT ::
Ich hab ja jetzt hier, weder wahr noch falsch..
Ist das dann einfach mache immer wahr und sonst dann falsch ?
-
@D3ltoroxp sagte in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
@ticaki Hier doch im ersten Screen.
Wenn ich den lösche, habe ich auch oben keine Funktionsbausteine, die ich bei den CronJobs mit rein packe.
Ah verstanden, nein den sollst du nicht löschen nur die Bausteine von Falls Object nach Setze Temperatur verschieben.
@ticaki said in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Verstehe die Frage nicht.
Dieser Block
Setze Temperatur mit:
Soll-Temperatur
Fenster aufGabs den schon immer, oder hast du den irgendwie erstellt ?
Unter Funktion im Menu gibt es einen Baustein etwas tun wähle den aus, klicke auf das Rädchen und schiebe Variable(übergabe parameter) zu etwas tun. Nach dem du das getan hast sollte im Menu Funktion ein Baustein sein der so aussieht wie der Setzte Temperatur nur mit deinen Angaben.
-
Mist, das mit dem Editieren klappt nicht immer. Aber will nicht jedes mal nen neuen Post schreiben...
Ich hab es jetzt so...
Mir Platz gleich der Kopf So richtig ?
Ich hab ja jetzt hier, weder wahr noch falsch, ist das dann einfach "mache" immer "wahr" und "sonst" dann "falsch" ?
-
@D3ltoroxp sagte in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Mir Platz gleich der Kopf So richtig ?
Jo sieht gut aus, stimmen die 4.5° die ich eingetragen habe?
Ich hab ja jetzt hier, weder wahr noch falsch, ist das dann einfach "mache" immer "wahr" und "sonst" dann "falsch" ?
Falls prüft auf wahr. Es ist unnötig da ein = wahr hin zu setzen.
-
Ja die 4,5° sind richtig. Dann steht der HT auf OFF.
So einen Teil hab ich jetzt verstanden, einen noch nicht so ganz und zwar in diesem Bereich..
Ich versuche zu verstehen.
Block Nr. 1 erstellt Block Nr.2 , Block Nr 3. erstellt Block Nr.4 . Hierbei legt Block 4 automatisch zwei Variablen an ? Soll-Temp und Fenster auf ?
So Nun triggert der CronJob und Setzt 20 Grad in die Variable und Triggert gleichzeitig Block 2, dieser Triggert dann den Funktionsblock 1 ? Dieser wiederum schreibt dann in die beiden angelegten Variablen, die angefügten Daten, Block Nr. 5 schreibt 20° in die Variable "Soll-Temperatur " und Block Nr. 6 "war / falsch" vom Fenster Datenpunkt in die Variable "Fenster auf " ?
So der untere eingekreiste Block "Falls Objekt" macht was ? Er reagiert quasi auf Fenster auf / zu und Triggert damit den mittleren Funktionsblock, der dann eben meinen HT auf 4,5° stellt und beim schließen dann wieder auf die aktuelle Temp aus dem Wochenprogramm ?
Der mittlere Block wird auch getriggert, wenn die Fenster zu sind, aber der CronJob am nächsten Zeitschaltpunkt ist, da Fenst auf auf falsch, springt der Funktionsblock gleich auf "sonst" und setzt so die nächste Temp aus dem Wochenprogramm ?
Warum nutzt du jetzt unten im eingekreisten Block den "Wert" Block, aber oben den "Wert vom Objekt" Block ?
Das verwirrt mich auch noch, in den Block
"Setze Temperatur mit :
Soll-Temperatur
Fenster aufWird doch durch die angehängten Blöcke, der Wert in die Variable Soll und Fenster auf" gesetzt ? Das macht er dann im oberen Block und im unteren Block ?
Zum Verständnis, der "Setze Temperatur mit :" Block ist quasi komprimiert, der ersetzt eigentlich nur folgendes ?
-
@D3ltoroxp sagte in Fenster offen/Terrasse mit Verzögerung/soll Temp speichern:
Ich versuche zu verstehen.
Block Nr. 1 erstellt Block Nr.2 , Block Nr 3. erstellt Block Nr.4 . Hierbei legt Block 4 automatisch zwei Variablen an ? Soll-Temp und Fenster auf ?
Ja
So Nun triggert der CronJob und Setzt 20 Grad in die Variable und Triggert gleichzeitig Block 2, dieser Triggert dann den Funktionsblock 1 ? Dieser wiederum schreibt dann in die beiden angelegten Variablen, die angefügten Daten, Block Nr. 5 schreibt 20° in die Variable "Soll-Temperatur " und Block Nr. 6 "war / falsch" vom Fenster Datenpunkt in die Variable "Fenster auf " ?
Ja
So der untere eingekreiste Block "Falls Objekt" macht was ? Er reagiert quasi auf Fenster auf / zu und Triggert damit den mittleren Funktionsblock, der dann eben meinen HT auf 4,5° stellt und beim schließen dann wieder auf die aktuelle Temp aus dem Wochenprogramm ?
Ja
Der mittlere Block wird auch getriggert, wenn die Fenster zu sind, aber der CronJob am nächsten Zeitschaltpunkt ist, da Fenst auf auf falsch, springt der Funktionsblock gleich auf "sonst" und setzt so die nächste Temp aus dem Wochenprogramm ?
Ja
Warum nutzt du jetzt unten im eingekreisten Block den "Wert" Block, aber oben den "Wert vom Objekt" Block ?
Weil im Block Falls Objekt gibt es eine lokale Variable die den Wert von Falls Objekt enthält. Wenn ich die Funktion jedoch von woanders aufrufe muß ich mir diesen Wert erst besorgen deshalb "Wert von Objekt"
Das verwirrt mich auch noch, in den Block
"Setze Temperatur mit :
Soll-Temperatur
Fenster aufWird doch durch die angehängten Blöcke, der Wert in die Variable Soll und Fenster auf" gesetzt ? Das macht er dann im oberen Block und im unteren Block ?
EDIT: Vielleicht weiß ich jetzt welche Blöcke du meinst.
Der obere Block ist eine Zusammenfassung der Angaben die ich in einem Zeitplan machen muß. Da wir viele Zeitpläne haben, fasse ich diese halt zusammen um nur einen 1 zeiligen Block pro Zeitplan zu haben, anstatt einem 3 zeiligen.Der untere Block kennt den Wert von Fenster auf schon und deshalb rufe ich dort die Funktion "Setze Temperatur" auf, da ich dort diesen Wert direkt angeben kann.
Zum Verständnis, der "Setze Temperatur mit :" Block ist quasi komprimiert, der ersetzt eigentlich nur folgendes ?
Der Block macht eigentlich alles, oder ich verstehe dich falsch. Setzte Temperatur von WZ ist eine Hilfsfunktion um Platz zu sparen und der Setzte Temperatur block ersetzt das für jeden Zeitplan:
Edit: Präziser der Block oben muß für jeden Zeitplan erstellt werden ODER man macht das so:
EDIT: da ist leider ein Fehler im rechten oberen Block. Da gehört natürlich ein Baustein an die leere Stelle.
Das ist zwar bei einem Zeitplan mehr Arbeit, aber schon bei 2-3 dürfte es weniger Arbeit und weniger Platz sein. Nun und man hat viel weniger Chancen Fehler einzubauen. -
Mit den verschiedenen "Wert" Blöcken hab ich immer noch nicht ganz gerafft, wieso mal so und mal so.
Aber eins hätte ich noch, könntest du mir noch helfen wie ich das ganze nun mit Sommer/Winter verknüpfe, sprich wenn mein Aussensensor, 22° misst, dann wird das Heizprogramm deaktiviert oder eben Off an den HT gesendet und es passiert auch nichts mehr wenn man Tür auf und Zu macht. Sollte der Wert darunter fallen, soll das Heizprogramm wieder gelten und den aktuellen Wert an die HT's schicken.
Geht das so einfach ?