NEWS
Überschussnutzung Klimaanlage zum Heizen - Timeouts
-
@ika Ich habe etwas ähnliches am Laufen, allerdings nicht mit Blockly.
Ich trigger tatsächlich auch nach Zeit und schreibe alle 10 Minuten den aktuellen Überschuss rotierend in 3 Datenpunkte. (X:09 und X:39 Uhr schreiben Datenpunkt 1, X:19 und X:49 Uhr schreiben Datenpunkt 2 und X:29 und X:59 Uhr schreiben Datenpunkt 3). Aus den 3 Datenpunkten bilde ich den Mittelwert.
Ich betrachte also die letzte halbe Stunde.Um X:00 Uhr und alle 10 Minuten danach wird dann für jedes der 3 Innengeräte ein Datenpunkt zum Einschalten (true/false) gesetzt.
Die Prüfung beinhaltet neben dem Überschuss noch pro Raum...- Fensterstatus
- Innentemperatur
- Außentemperatur
Wenn alles passt, wird 1 Innengerät eingeschaltet. Ist im nächsten Durchlauf immer noch alles passend, wird das zweite Gerät eingeschaltet...
Abgeschaltet werden sie erst wenn der Überschuss im Mittel bei 50W liegt. Dann auch wieder ein Gerät nach dem anderen.
Wichtig ist zu beachten, dass sobald eine Anlage läuft, der Überschussbetrag anders bewertet werden muss.
-
@ika sagte: Timeouts da sinnvoll einsetze, dass die Anlage - wenn sie an ist - z.B. nur alle 10 minuten checkt, ob sie sich ausschalten sollte?
Beispiel mit 2 Stufen, wobei zusammen mit Stufe 1 (Gerät 1) der Kompressor der Außeneinheit zuschaltet.
-
Hi, ich bin noch nicht dazu gekommen das ganz umzubauen, auch wenn ich eure Scripte - zumindest größtenteils - verstehe.
Daher will ich es morgen mal so versuchen:
Und vielleicht noch zwei Fragen die für euch vielleich klar sind:
- das Stop Block beim Timeout im "schalte ein" Block bewirkt, dass der Timer der Ausführungsverzögerung zurückgesetzt wird oder?
- Was macht der "Verzögerung" Block?
-
@ika sagte: das Stop Block beim Timeout im "schalte ein" Block bewirkt, dass der Timer der Ausführungsverzögerung zurückgesetzt wird oder?
Ja, der Timer wird gestoppt und die Variable
delay
wird auf null zurück gesetzt.@ika sagte in Überschussnutzung Klimaanlage zum Heizen - Timeouts:
Was macht der "Verzögerung" Block?
"nicht Verzögerung delay" verhindert, dass mehrere Timer gleichzeitig laufen, die sich dann nicht mehr stoppen lassen.
-
@ika
hmm, so geht es nicht, da schaltet er dauerhaft ein und aus im Sekundentakt....
muss mir das nochmal anschauen -
ok, ich habe zwischenzeitlich etwas experimentiert. Mit meiner Lösung klappt einstufig eigentlich seht gut. Aber aus irgend einem für mich nicht nachvollziehbaren Grund, klappt das nur einmal zuverlässig. Wenn die Anlage dann einmal abschaltet, schaltet sie mehrmals pro Sekunde ein uns aus. Woran liegt das?
und so sieht die Grafik dazu aus bzw. die Leisutngsaufnahme und Schaltzeitpunkte der Klimaanlage:
Bis auf den Fall um 14 Uhr schaut ist das genau was ich möchte. Vielleicht muss ich irgendwann noch einplanen, dass die Anlage am Anfang zum hochheizen (bzw. runterkühlen im Sommmer) eine Zeit lang mehr Energie benötigt.Ich habe aber jetzt mal das Script nachgebaut, das ich am ehesten glaube zu verstehen und werde es die kommenden Tage (wenn sich die Sonne mal wieder blicken lässt) testen. Was aber machen der Teil "Falls <Wert> von Objekt ID <Power> ohne eine Logik?
Spielereien wie weitere Abfragen zur Umwelt werde ich einbauen, wenn es so funktioniert, wie ich mir das vorstelle.
Ich danke euch!
-
@linedancer Das ist nicht die Stromzufuhr, sondern die Steuerung der Geräte über Wlan. ALso analog dem Ein- oder Ausschalten über die Fernbedienung
-
Hi, ich habe das Script nun an einem sonnigen Tag testen können und es funktioniert eigentlich sehr gut.
Womit ich nicht gerechnet habe ist, dass zwei Geräte (auch wenn das 1. 5KW hat und das 2. mit 1,5 KW deutlich weniger Leistung) die Eingangsleistung (peak ~3800 W, Dauerbetrieb muss ich noch testen) massiv nach oben genschnell ist. Das führte dann zu einer Art Taktung. Im Sommer zum kühlen eingetlich kein Problem. Im Herbst/Winter/Frühling zum Heizen offensichtlich schon.
Einstufig hatte die Anlage deutlich weniger verbraucht (peak ~1300 W und Dauerbetrieb dann rund 800 W) und konnte konstant laufen:
Jetzt würde ich gerne mehrere Anpassungen machen:
- Bis der erste peak überschritten ist dauert es ca. 45 min - erst dann sollte Stude 2 hinzukommen (sprich seperate EInstellung für den delay.)
- Ich versorgen verschiedene Zimmer, ich würde gerne für jedes einen Temperaturgrenze einstellen können (Alternativ über die Anpassung der Wunschraumtemperatur)
- Ich hätte (für den Sommer) gerne die Möglichkeit eine 3. und 4. Stufe hinzuzufügen. Für das 3. Gerät im "Schlafzimmer" (nur im Sommer relevant da gekühlt aber nicht geheizt) und später evtl. die Wallbox bzw. eine Heizung im "Spielezimmer"
Cool wäre, wenn ich durch Schlater in folgender Art festlegen könnte, welche Überschussnutzung aktiv sein soll:
hier: Bezug Gesamtanlage; Überschuss Script aktiv/inaktiv; Wohnen an/aus; Schlafen an/aus; Büro an/ausDas Problem, welche ich habe ist, dass ich folgende zwei Blöcke nicht verstehe. Gerne lese ich mir das auch an, wenn mir jemand einen TIp hat wonach ich suchen muss:
Hier nochmal das aktuelle Script grafisch und als code:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="4Gn:;E{l/[q@N.n`#%N-">ueberschuss</variable> <variable id="{umJ-nLA;h3b;5lV|xVw">temperatur</variable> <variable id="F3DfKKl}(f(-BN6KE?,p">grenzwertEIN</variable> <variable type="timeout" id="delayON">delayON</variable> <variable type="timeout" id="delayOFF">delayOFF</variable> </variables> <block type="on" id="O}Kl~Wy%DO2=[$c!ORLr" x="-2237" y="-555"> <field name="OID">javascript.0.pv.Ueberschuss_gemittelt</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="9rM+k(|MF}@#ANARjH4}"> <field name="VAR" id="4Gn:;E{l/[q@N.n`#%N-">ueberschuss</field> <value name="VALUE"> <block type="math_single" id="-|H9.V;$rWl0DQ`:5O#."> <field name="OP">NEG</field> <value name="NUM"> <shadow type="math_number" id="u2]m-{g-SgBo-+hW^#es"> <field name="NUM">9</field> </shadow> <block type="on_source" id="Az%=-*#Pxl^K$9?L^PrG"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="variables_set" id=";WZ:Ppq9`(9L%qA6Vc!h"> <field name="VAR" id="{umJ-nLA;h3b;5lV|xVw">temperatur</field> <value name="VALUE"> <block type="get_value" id="T1agm|,Fc*ylN9HKcE[Y"> <field name="ATTR">val</field> <field name="OID">hmip.0.devices.3014F711A0000E5D898EA33C.channels.1.actualTemperature</field> </block> </value> <next> <block type="variables_set" id="juY}?yXa:1VPEb4K87Yg"> <field name="VAR" id="F3DfKKl}(f(-BN6KE?,p">grenzwertEIN</field> <value name="VALUE"> <block type="logic_ternary" id="z}!pm(iivex,saz5=:+3"> <value name="IF"> <block type="get_value" id="Fs)4U?An%hb8N*4nkmnL"> <field name="ATTR">val</field> <field name="OID">melcloud.0.devices.115410591.control.power</field> </block> </value> <value name="THEN"> <block type="math_number" id="~wlGGheE~5r@NtqHNf*`"> <field name="NUM">700</field> </block> </value> <value name="ELSE"> <block type="math_number" id="sx!f{_UV(}XAE|c$KDf!"> <field name="NUM">2000</field> </block> </value> </block> </value> <next> <block type="controls_if" id="4oKdE,9$x;2V-h}0s/[X"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="pa4~^1D+6m%5O:;yhn/k"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="3iC[.Nb@j*H+,;3/usv]"> <field name="VAR" id="4Gn:;E{l/[q@N.n`#%N-">ueberschuss</field> </block> </value> <value name="B"> <block type="variables_get" id="^;qG_Plj?2xR9V|9$nY%"> <field name="VAR" id="F3DfKKl}(f(-BN6KE?,p">grenzwertEIN</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_cleartimeout" id="X2w@nJSh3{Zfi?Ew5ZB)"> <field name="NAME">delayON</field> </block> </statement> <value name="IF1"> <block type="logic_multi_and" id="qlG8G/8{}*{)PwfumkdN"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <value name="AND0"> <block type="logic_compare" id="*8g`N/-N4i-J.;I0;y`3"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="Do0R6DT69RD:PH%p#BEK"> <field name="VAR" id="{umJ-nLA;h3b;5lV|xVw">temperatur</field> </block> </value> <value name="B"> <block type="math_number" id="E$0qqdhF8aQhW_L/Kqm,"> <field name="NUM">25</field> </block> </value> </block> </value> <value name="AND1"> <block type="logic_negate" id="rtDV;?lt}Og?RFoVQz,}"> <value name="BOOL"> <block type="timeouts_gettimeout" id="}gW19$A+]F,(#$xu?8XU"> <field name="NAME">delayON</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="BR]Gb};mBCKXr5P3~,!o"> <field name="NAME">delayON</field> <field name="DELAY">5</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="$4quX@F$jevEjdm#i-rI"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_negate" id="^Xd`^;l]E`qZo+i7-P#1"> <value name="BOOL"> <block type="get_value" id="5O8]ve/A}XjW7:gX?Zv|"> <field name="ATTR">val</field> <field name="OID">melcloud.0.devices.115410591.control.power</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="[kprbkovS?*3%jf@Y#aa"> <field name="COMMENT">EG Power Klima</field> <next> <block type="control" id="lo|%n=5M/0j:WBSqWf+M"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">melcloud.0.devices.115410591.control.power</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="uKI$`*$Ed:/Hs;OuOgZ_"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_negate" id="Em$hq=S+Np5t_%/cU!05"> <value name="BOOL"> <block type="get_value" id="h~H1usS*^O/lJ.[*qVg+"> <field name="ATTR">val</field> <field name="OID">melcloud.0.devices.115412909.control.power</field> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="sVHJmjKGm5Q;CH4G{.a;"> <field name="COMMENT">DG Power Klima</field> <next> <block type="control" id="npaB%#$2OKNK2+]/.S)-"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">melcloud.0.devices.115412909.control.power</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="edQCsF00RtWSm9H:u)uo"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </statement> <next> <block type="controls_if" id=")Aa/#{~YgC2qXCg3}A(`"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_multi_and" id="X8Y*^6vbO`}|~[J8BdT="> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <value name="AND0"> <block type="logic_compare" id="QedwPg6grC`o:5LRTL),"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="rB6xa-Mb]G*-mmckyQdy"> <field name="VAR" id="4Gn:;E{l/[q@N.n`#%N-">ueberschuss</field> </block> </value> <value name="B"> <block type="math_number" id="/#ai3yJdU;7Kv[qIAuZs"> <field name="NUM">100</field> </block> </value> </block> </value> <value name="AND1"> <block type="logic_compare" id="k|vAciG0%7f?w5RuBgg2"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="Ye:{AS?Sm[f!xLAG6teq"> <field name="VAR" id="{umJ-nLA;h3b;5lV|xVw">temperatur</field> </block> </value> <value name="B"> <block type="math_number" id="2.ApX;=WA|)6oO3%`|HI"> <field name="NUM">25</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_cleartimeout" id="m.z{TzIDQfl|/[=#RaK."> <field name="NAME">delayOFF</field> </block> </statement> <value name="IF1"> <block type="logic_multi_and" id="mt.Vi`^1yk*Q}u#.JJ[+"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <value name="AND0"> <block type="logic_compare" id="fSHG[5;g,{Nef3F~X/?U"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="9MNFGY.j`KgnEIc3~,q]"> <field name="VAR" id="{umJ-nLA;h3b;5lV|xVw">temperatur</field> </block> </value> <value name="B"> <block type="math_number" id="`9cMKWUdLvf9-YOQJ.cX"> <field name="NUM">25</field> </block> </value> </block> </value> <value name="AND1"> <block type="logic_negate" id="SKw4uGK9I*MpneUwy1Vb"> <value name="BOOL"> <block type="timeouts_gettimeout" id="PG:8V(HFwayC?nKW:49u"> <field name="NAME">delayOFF</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="i^RZHFAT=XkN~Dx05zGB"> <field name="NAME">delayOFF</field> <field name="DELAY">5</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="x*0McL5;K_m#{;6]c8vk"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="get_value" id="A*B-HXA;0?9s2z/XO|uL"> <field name="ATTR">val</field> <field name="OID">melcloud.0.devices.115412909.control.power</field> </block> </value> <statement name="DO0"> <block type="comment" id="az?eM.|@}b=xwJ2uCi:^"> <field name="COMMENT">DG Power Klima</field> <next> <block type="control" id="9{$@H/pJQRq?T9Xd|`J/"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">melcloud.0.devices.115412909.control.power</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="26;D`1LL!)%@)DR8^9q#"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="get_value" id="{d77snzsCj=I9D46~:+O"> <field name="ATTR">val</field> <field name="OID">melcloud.0.devices.115410591.control.power</field> </block> </value> <statement name="DO1"> <block type="comment" id="F[^il?xn^VFWj(a!ZsBj"> <field name="COMMENT">EG Power Klima</field> <next> <block type="control" id="28UBpB@KC1bGC6FIw[J("> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">melcloud.0.devices.115410591.control.power</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="~(E6:hHq$,k4}z-h9T^T"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
@ika sagte: die Eingangsleistung (peak ~3800 W
Dann muss der Einschaltgrenzwert auf mind. 4000 W erhöht werden, damit nicht getaktet wird.
@ika sagte in Überschussnutzung Klimaanlage zum Heizen - Timeouts:
dass ich folgende zwei Blöcke nicht verstehe.
Ich bin davon ausgegangen, dass es sich um ein Multisplit-Gerät handelt, was bedeutet, dass bei Einschalten des ersten Innengerätes (EG) der Kompressor des Außengerätes mit eingeschaltet wird, der die hohe Leistung hat. Bei Zuschalten des zweiten Innengerätes (OG) erhöht sich die Leistung nur noch gering - deshalb der niedrigere Einschaltgrenzwert.
"falls nicht Wert von Power" prüft, ob das betreffende Gerät noch ausgeschaltet ist.
-
@ika sagte: das aktuelle Script
Diese UND-Verknüpfung mit der Temperatur ist kontraproduktiv:
Außerdem sollte man auch für die Temperatur eine Hysterese vorsehen!