NEWS
Fenster offen/Terrasse mit Verzögerung/soll Temp speichern
-
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? -
@ticaki Ja, da hab ich für jeden HT nen eigenes Blockly. Ganz simpel.
z.b.
-
Dann kombiniere doch beide Skripte setzte im Heizköperskript eine Variable mit der Temperatur und am ende dieses Blocklys setzt du dieses Temperatur auf das Gerät und in dem Fenster auf/zu Skript schaltest du den HT aus oder auf die in der Variable enthaltene Temperatur.
-
@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.