NEWS
Wärmepumpensteuerung für dynamischen Stromtarif
-
Hallo Leute,
ich such mir seit Wochen einen Wolf und trete auf der Stelle, daher starte ich einen neuen Fred.
Wunsch:
- Steuerung meiner Wärmepumpe abhängig vom Stromtarif des Tages
- Wenn der Preis unterm Schnitt liegt, dann die Wärmepumpe etwas höher fahren
- Wenn der Preis hoch ist, dann reduzieren / deaktivieren
- Warmwasserzubereitung in die günstige Zeit legen
folgendes Foto hab ich mal von Smartenergy als Beispiel ausgeliehen:
Ausgangssituation / verfügbare Hardware:
- Server mit IObroker (logisch)
- Die Spotmarkt Tarife kann man dort z.b. über Awattar, apg-info, tibber, ... oder andere als Datenpunkte herunterladen
(Vom Regelungsprinzip sollte es egal sein woher die Spotmarkt Tarif herkommen, da sich die Kurven halbwegs decken oder parallel verkaufen sollten) - Wärmepumpe Panasonic WH-MDC07J3E5 (das allseits beliebte Modell auch unter Geisha / Heisha / ... bekannt)
- Steuerung dieser wäre über Heishamon oder externe SG-Ready möglich
- Einbindung der PV wäre nett, aber erstmal irrelevant, da im Winter nix vom Dach kommt
Marktanalyse:
- Awattar bietet mit Tado eine smarte Wärmepumpensteuerung, die kann aber nicht mit meiner Wärmepumpe
- OpenEMS kann keine Wärmesteuerung
- SmartFox - Steuerung über dynamische Stromtarife kommt erst.
Leute jetzt seid ihr dran
Erster Schritt wäre mal die Berechnung der Stunden / Phasen.Vielen Dank!!!
-
@skol und was hast du bisher zusammengebastelt?
-
Also die Daten vom APX Spot Markt bekomme ich entweder über eine der folgenden Adapter:
und vermutlich gibts noch mehr.
Die Preise sollten hübsch parallel laufen, wenn sie sich alle nach dem gleichen Spotmarkt richtenAPG liefert ein paar nette Features
- Preis über/unter Limit (kann man im Adapter einstellen)
- Durchschnittspreis über den Tag
-
@skol und wo klemmt es bei deinem Skript?
-
Hab ehrlich gesagt keine Ahnung wo ich am besten Anfange.
Meine Blockly Skripte bisher sind sehr einfach - Wetterwarnung, Beamerleinwand Steuerung, ..
Mit Arrays oder komplizierten Dingen hatte ich noch keine Berührung. shame -
@skol ach so!
im Forum gibt es etliche Skripte und Blocklys für die optimale Nutzung von Tibber & Co.
hatte gedacht du hättest damit schon angefangen. -
Bin da schon einiges durch, hab aber einfach nichts brauchbares gefunden.
Suche bereits seit 2 Wochen. -
@skol sagte: APG liefert ein paar nette Features
Auch eine nach Preisen sortierte Liste von Stunden. Man könnte sie so auswerten:
-
Danke für den ersten Ansatz.
Warum springt er mir nicht in den Wahr bereich bei der Abfrage?
z.b. Stunde = 23 und der Wert ist in der Liste unter den 8 billigsten Stunden?
Noch ein paar Fragen:
- Wie kann man abhängig vom Stundenpreis was machen?
Wenn der Strom negativ ist --> alles an was geht - Wenn der Strom auch in den teuren Stunden unter 10 Cent liegt, dann brauch ich nicht "sparen" durch eine Verbrauchsoptimierung.
- Wie kann man abhängig vom Stundenpreis was machen?
-
@skol sagte: Warum springt er mir nicht in den Wahr bereich bei der Abfrage?
Das passiert laut Liste "short" heute nur zwischen 0 und 7 Uhr (8 billigste Stunden heute).
[4,3,2,5,1,6,7,0,9,10,8,11,12,13,14,23,15,21,22,20,16,19,18,17]
-
Bei mir in Österreich schaut die Liste ein wenig anders aus.
Aber jetzt funktioniert es, keine Ahnung wieso. -
Interessant: jetzt hab ich auch die andere Liste.
[4,3,5,0,6,2,1,13,12,7,11,8,14,10,9,15,23,21,22,16,20,19,18,17]
Wie oft startest du den CRON Job von APG-Info? -
@skol sagte: Wie oft startest du den CRON Job von APG-Info?
So wie vorgegeben: 5 s nach 0:00, 13:00 und 15:00 Uhr. Deshalb werden um 0:00 Uhr die Werte von morgen genommen.
-
@skol sagte: Wie kann man abhängig vom Stundenpreis was machen?
Man kann den Preis aus Datenpunkten einlesen:
- unter "today". Dann muss man recht aufwändig die ID aus der aktuellen Stunde konstruieren, z.B. "02_to_03" aus der Stunde 2.
- unter "today_sorted". Über den Index in der sortierten Liste kann man den Preis aus einem Array-JSON ermitteln.
-
Danke! das ist eine Super Idee.
Könntest du mir mal dein ganzes Skript zum Import zu Verfügung stellen? Da sind vermutlich noch ein paar Goldstücke drinnen.
-
Das Blockly sieht gut aus. Für "Netzvorgabe" würde ich eine Variable verwenden und zum Schluss in den Datenpunkt schreiben.
Wird die VariableOffPeak
irgendwo verwendet und zurück gesetzt?EDIT: Es muss zur vollen Stunde getriggert werden, da sich die Liste nach ca. 0:00:30 Uhr nicht mehr ändert. Dass sie um 0:00:00 Uhr noch alt ist, wird dadurch berücksichtigt, dass zu diesem Zeitpunkt die Liste von morgen eingelesen wird, die der Liste von heute danach (ab ca. 0:00:30 Uhr) entspricht.
Wenn erst um 0:01 Uhr getriggert wird, muss in jedem Fall die Liste von heute eingelesen werde - in der Hoffnung, dass sie bereits aktualisiert wurde. -
Für alle die es interessiert - das komplette Blockly Script.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</variable> <variable id="$.ijy$M(?#p3+mCj!46[">ListSortedShort</variable> <variable id="NML2~Nw#WB6?jY9.a5ZI">MaxPrice</variable> <variable id="5%QL||{X_O:R=,]c,P~n">MinPrice</variable> <variable id="QU`)rxXu.-mP[4mf%Lne">i</variable> <variable id="eq6mJJ6^ou{5c0Hq5bV/">CurrentPrice</variable> <variable id="Cfxj8bn=[48.:vebkZGA">OffPeak</variable> </variables> <block type="comment" id="dBYlFB]~K.NQy%yR#;7r" x="-238" y="-12"> <field name="COMMENT">Steuere Netzvorgabe abhängig vom Strompreis</field> <next> <block type="control" id="^%irA!jkRYL=3@r^jJWd"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <comment pinned="false" h="148" w="351">Netzvorgabe: 0... Standard (keine Regelung, kein WW) 1... Standard WW (keine Regelung, WW ein) 2... Erhöhung normal (WW aus) 3... Erhöhung normal (WW ein) 4... Erhöhung Max (mit WW Erhöhung) 5... Reduzierung (ohne WW) – SG 1 </comment> <value name="VALUE"> <block type="math_number" id="g#QsPEKJp639[2E,*2r/"> <field name="NUM">0</field> </block> </value> <next> <block type="schedule" id="f/td+AGC-sB8.9/%9Z@r"> <field name="SCHEDULE">10 0 * * * *</field> <statement name="STATEMENT"> <block type="comment" id="KMkVdSs5{L|2w4m3D.y*"> <field name="COMMENT">Prüfe Stündlich</field> <next> <block type="variables_set" id=".qdwHP3l$+R_csuP=8D9"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> <value name="VALUE"> <block type="time_get" id="0UzJkl$/?2nBW.5_oQ7R"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">h</field> </block> </value> <next> <block type="variables_set" id="KPX.Kh:(QgQ)}O?$LLR*"> <field name="VAR" id="$.ijy$M(?#p3+mCj!46[">ListSortedShort</field> <value name="VALUE"> <block type="convert_json2object" id="u$m;OUg.)l=~5z.$}-LD"> <value name="VALUE"> <block type="logic_ternary" id="/W3N:Cmqk=5S3T2kg|1d"> <value name="IF"> <block type="logic_compare" id="ChMPe({%BrA);vHX0^(H"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="-[5HR;W6WJcFY=+(U0`j"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="math_number" id="nJp$4$U93M%12Lv.`y2,"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="get_value" id="~tjI7NxKK/oWcfuV@H)}"> <field name="ATTR">val</field> <field name="OID">apg-info.0.marketprice.today_sorted.short</field> </block> </value> <value name="ELSE"> <block type="get_value" id="F425uXhv7eK0(FKc;=_c"> <field name="ATTR">val</field> <field name="OID">apg-info.0.marketprice.tomorrow_sorted.short</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="XnqO1%a^o%/jwFzxcl2J"> <field name="VAR" id="NML2~Nw#WB6?jY9.a5ZI">MaxPrice</field> <value name="VALUE"> <block type="get_attr" id="J5P~GZZeT1B_?)(l|ebo"> <value name="PATH"> <shadow type="text" id="N(:R6{lE%AB@qn_67T3F"> <field name="TEXT">1</field> </shadow> </value> <value name="OBJECT"> <block type="logic_ternary" id="qFn(|;VsIC).gE5rILY]"> <value name="IF"> <block type="logic_compare" id="]X[FT_Q16/KZ`wfc#}D("> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="1C0$b}c.U[gX]SG~O^n@"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="math_number" id=")F)@uli^s4o$wL#i;.k."> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="get_value_var" id="b,-i-!8{l/Bqk/u}J`wh"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text" id=":+Wj[)X=7==Odf]~ngi8"> <field name="TEXT">apg-info.0.marketprice.today_sorted.23</field> </block> </value> </block> </value> <value name="ELSE"> <block type="get_value_var" id=")$UsS:b*m}sS@OB,@~OE"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text" id="+dj#Sw^V+v|=,5](t,8L"> <field name="TEXT">apg-info.0.marketprice.tomorrow_sorted.23</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="{HRrNn-=,Wudll]dN|qS"> <field name="VAR" id="5%QL||{X_O:R=,]c,P~n">MinPrice</field> <value name="VALUE"> <block type="get_attr" id="7@r$?~kB_++u;PVT-fG`"> <value name="PATH"> <shadow type="text" id="Lx`LE@*rSt{vhNsK{%`S"> <field name="TEXT">1</field> </shadow> </value> <value name="OBJECT"> <block type="logic_ternary" id="A.1kHN5gx9,X.EunEf~^"> <value name="IF"> <block type="logic_compare" id="8es2dQCYWFCHgVWn2z+h"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="yocha@3SFDqFN8WM;_Vl"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="math_number" id="zpz=dT=_TYI?WO,ZRZ_E"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="get_value_var" id="%2PzT|)zkl`.tN}JMkRx"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text" id="aCu`{gCP@gHP]F`)O7Rp"> <field name="TEXT">apg-info.0.marketprice.today_sorted.0</field> </block> </value> </block> </value> <value name="ELSE"> <block type="get_value_var" id="uPzhBVzB|ElY/Pcg(meM"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text" id="_|tAIlcUKt4,![r~e_3_"> <field name="TEXT">apg-info.0.marketprice.tomorrow_sorted.0</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="T_H(6r)j*Hqd9-kQ`;Xx"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="WY)c7J0ob24[PfgcF/u8"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="?$Qr]db;ya]UuljL}=~x"> <field name="TEXT">APG: Liste sortiert: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id=":}C2aN5*sqQQjHFpT!Nt"> <field name="VAR" id="$.ijy$M(?#p3+mCj!46[">ListSortedShort</field> </block> </value> </block> </value> <next> <block type="debug" id="09C_!}=tM*iEJkvG6tmR"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Lqs90-bo4=,1hLa$)YjC"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="{n}$}a_p{uWY4d#uwmN}"> <field name="TEXT">APG: Liste sortiert tomorrow: </field> </block> </value> <value name="ADD1"> <block type="get_value" id="|!n)o6J8P=s1$Kc$x8b5"> <field name="ATTR">val</field> <field name="OID">apg-info.0.marketprice.tomorrow_sorted.short</field> </block> </value> </block> </value> <next> <block type="debug" id="?^_z:z)QY)%G:7sba@T."> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="7;uQ,c)p[1UB0_t#Gi3E"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="[Q[g^z4-X5DT1}){mWT~"> <field name="TEXT">APG: maximaler Tagespreis: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="el3h,C3A;f!vw9=D.wwU"> <field name="VAR" id="NML2~Nw#WB6?jY9.a5ZI">MaxPrice</field> </block> </value> </block> </value> <next> <block type="debug" id="ZU+#KE2mn,!}R=-~}Z@F"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="rE%q39_LLI`Jy^lt,o3k"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="eAM.*bNH8Bu.k!qg~ieq"> <field name="TEXT">APG: minimaler Tagespreis: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="|1C@hq@I)3x~c]$rd}XX"> <field name="VAR" id="5%QL||{X_O:R=,]c,P~n">MinPrice</field> </block> </value> </block> </value> <next> <block type="comment" id="Cxd_W!5l^hn|Z*t],$!^"> <field name="COMMENT">Prüfe die sortierte Liste</field> <next> <block type="controls_for" id="CaCv!}@Yh4=lG!(|#957"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> <value name="FROM"> <shadow type="math_number" id="%GY{o2mw_oIIf)@N=*Cy"> <field name="NUM">1</field> </shadow> </value> <value name="TO"> <shadow type="math_number" id="kjlyj*@V$$SImzN,ZmeJ"> <field name="NUM">24</field> </shadow> </value> <value name="BY"> <shadow type="math_number" id="{U]p:zc6a:/EcmA_,zH}"> <field name="NUM">1</field> </shadow> </value> <statement name="DO"> <block type="comment" id="n_os8%Xd-](JeTeMs16q"> <field name="COMMENT">Suche den Index der aktuellen Stunde</field> <next> <block type="controls_if" id="5h8?oJRj@w#~p}!FsvVY"> <value name="IF0"> <block type="logic_compare" id="*X$pAQ`0x4mVzc0)XL|_"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id=",Dj#p)4IC`+x1|$Z#!Bt"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="lists_getIndex" id="FpU#ulRh+x_Uur5{4U/y"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="3sD|DbwVYWFYB((EgpR-"> <field name="VAR" id="$.ijy$M(?#p3+mCj!46[">ListSortedShort</field> </block> </value> <value name="AT"> <block type="variables_get" id="pfXP-SNG`xD4Fvzpa1F_"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_flow_statements" id="=MVzaBxri=(DD71[y:pu"> <field name="FLOW">BREAK</field> </block> </statement> </block> </next> </block> </statement> <next> <block type="debug" id="5e|5NZj(WSrid{s=]GAL"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Rx_U64Q8F|UOeuA4y,]l"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="`X_FuSR32WSRAL8qaMBW"> <field name="TEXT">APG: Element: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="M1%LRyy2:,Z7TIVMYIp1"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> </block> </value> <next> <block type="comment" id="cq;:w/t}BzUbDy).%9vk"> <field name="COMMENT">Lese aktuellen Preis aus</field> <next> <block type="variables_set" id="!#:DeBWCxB~$8v|)#{6i"> <field name="VAR" id="eq6mJJ6^ou{5c0Hq5bV/">CurrentPrice</field> <value name="VALUE"> <block type="get_attr" id="~%.{n3#1NFWCXGk*!y3`"> <value name="PATH"> <shadow type="text" id="tnNVdFzywOZVm1fOYZJy"> <field name="TEXT">1</field> </shadow> </value> <value name="OBJECT"> <block type="logic_ternary" id="ZChyz6;jB|9syFY2`u?7"> <value name="IF"> <block type="logic_compare" id="wjqM:BaoERJ8uvrHt|ie"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="A)?a%m92rha0?ha4`J(Q"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="math_number" id="~|4FlBKu}`0sb#BVh{J1"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="get_value_var" id="L9z~6kTF.@F3g9(wy)jE"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="dn{2Q]wh7vtG30V0C.lc"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id=".9w.Cv)U;Y40nlL%.b{W"> <field name="TEXT">apg-info.0.marketprice.today_sorted.</field> </block> </value> <value name="ADD1"> <block type="math_arithmetic" id="fLX]i;U|?QJ*|soD41_n"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="ctcnyn$E~wzgOz,Q{3;f"> <field name="NUM">5</field> </shadow> <block type="variables_get" id="Ia*5USTyB%=O];VRg9N4"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <shadow type="math_number" id="*r#:g3%)qw-[)N8jL1_q"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <value name="ELSE"> <block type="get_value_var" id="})Oa67^YdUyb|66:dG.]"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id=".ukJa]Bpk]x873/hMkVD"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="XL32Q)z5JuK$q[$k6LPg"> <field name="TEXT">apg-info.0.marketprice.tomorrow_sorted.</field> </block> </value> <value name="ADD1"> <block type="math_arithmetic" id="Z^;f7+RTmYWA(g9M}QK,"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="ctcnyn$E~wzgOz,Q{3;f"> <field name="NUM">5</field> </shadow> <block type="variables_get" id="_O_c.}Kf,0mO6mU+.{Li"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <shadow type="math_number" id="5]5^rrqz`4mnbe.0J+J{"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="lQ]iDNf`,Dy;+j-CvV%~"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="EjD9`6@t|_/9jH^f$dM^"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="mxTxi|d0?Zsuw4ltc@VP"> <field name="TEXT">APG: aktueller Preis: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="We86c[+:d8*SXF9%L%zr"> <field name="VAR" id="eq6mJJ6^ou{5c0Hq5bV/">CurrentPrice</field> </block> </value> </block> </value> <next> <block type="controls_if" id="*}%7cx0UNSeZ@I-kJ{$|"> <mutation elseif="3" else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="+(=W/Xm!MP44iUux_?F1"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="s5z_i%m206fw$%BA{9RW"> <field name="VAR" id="eq6mJJ6^ou{5c0Hq5bV/">CurrentPrice</field> </block> </value> <value name="B"> <block type="math_number" id="j%LU^w9L.SQF.ac5giy:"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="uL_Vo2ldA~DHzDaFC0x1"> <field name="COMMENT">Strompreis SUPERbillig = alles Einschalten</field> <next> <block type="debug" id="X@d{UA~pd7I#dJ6:ApBm"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="r^HlY4;c*GND{X/?Xg@A"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="k?}#Hyp$JO:aCuSmsQ^b"> <field name="TEXT">APG: Current Preis: NEGATIV Verbraucher Einschalten!!! - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="L87CZ2wYgX{ntpJ(E.EZ"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="YvMSHk:dd.ldSo%g[q/e"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="|HN*O;Wlwps;?RR}00Cf"> <field name="NUM">4</field> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="{.`Y0r`$MU.%#yk_;%*V"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="D^XKCRAoj3yu.SV[Q33m"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <block type="math_number" id="8^zkcrD,(?:Uq|EW(t]w"> <field name="NUM">3</field> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="s2=z9}Dlh{uo`K:3ijkE"> <field name="COMMENT">günstigste 3 Stunden - Warmwasserbetrieb</field> <next> <block type="debug" id="W9g!D?BBo`o}gqpok$p."> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="U[Dl{FJR(UE;G4+pg1Cr"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="kWfa[#PIM+F:SX*R~Z1T"> <field name="TEXT">APG: OffPeak + Warmwasser - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="EEr{Q_|HRhs,,[rua[61"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="iw+fJDGq^6HF~~V#p9eB"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="`K8[XX68+xI1IY*5W5NG"> <field name="NUM">3</field> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF2"> <block type="logic_compare" id=";u)urOxy`G|a%71./H?b"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="dslF:@MMzoEerk_{Z:6r"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <block type="math_number" id=":6{F+wxbT^l7VIdjh:%Y"> <field name="NUM">8</field> </block> </value> </block> </value> <statement name="DO2"> <block type="comment" id=",N6GO4998exNnULxj9oH"> <field name="COMMENT">Strompreis Offpeak - 8 günstigste Stunden</field> <next> <block type="variables_set" id="ZJ@ae%p?2s~@}TK@_:4Z"> <field name="VAR" id="Cfxj8bn=[48.:vebkZGA">OffPeak</field> <value name="VALUE"> <block type="logic_boolean" id="5K,{ow;3Qs2US1OC0_}U"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="Fom^Upc)*?GWvGp;2pWs"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="3U_OJuL1uT7NMs+LU]:_"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id=")g!JG@8AfO/~%RuLDb$T"> <field name="TEXT">APG: OffPeak - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="u7lkPgj.mUD2hOztT2~="> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="G7lF%({PdeYU8$HjLzoo"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="dn`[{$GbhQHAx7]=4@UY"> <field name="NUM">2</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF3"> <block type="logic_compare" id="3^=dy$0t.-O_EPFwn1un"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="xJQ=Si+rJr)rio(dOgbs"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <block type="math_number" id="BO1^8aC-WM#sytRBa/k?"> <field name="NUM">18</field> </block> </value> </block> </value> <statement name="DO3"> <block type="comment" id="{pM;c6;:u0$DqE3czx8P"> <field name="COMMENT">Strompreis Shoulder - mittlere 10h</field> <next> <block type="debug" id="(ZQ5fz3o7T1ME*6sgG-t"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="!tKg`M1j|~|#T6F~P=fu"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="H8[FVoox54B/%V)B{/l:"> <field name="TEXT">APG: Shoulder - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="$r[W_5d$,0zEF+u7ewxQ"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="(k$[CoSX`+29v}e`N/#a"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="A+K+b1^zu0`6R8pYlHf7"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="comment" id="(C$,MswQG:kE$%n(^8zK"> <field name="COMMENT">Strompreis Preak: 6 teuerste Stunden</field> <next> <block type="debug" id="eGG2-P2i-%#MEKKCgmFO"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="??Ac8{3E6/=5?]@:~JQb"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="gAF6by,3skcS`)eQ0~v#"> <field name="TEXT">APG: Peak - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="3HauEmu{9=1nKlrcrkW8"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="YE]m{-axuxa+iL7-viKW"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="}FLKUT*+H=^axWqJr7C="> <field name="NUM">5</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </xml>