leider geht bei mir mit keiner Version mehr hat einer ggf noch einen Tipp
Die logon Daten sind defenitiv correct!
P.s. habe eine KIA un einen Hyundai !
leider geht bei mir mit keiner Version mehr hat einer ggf noch einen Tipp
Die logon Daten sind defenitiv correct!
P.s. habe eine KIA un einen Hyundai !
Hallo in die Runde ich hoffe das Schript passt hier rein.
Das Script wurde mit Unterstüzung div Forenmitglieder optimiert großer Dank geht an @Paul53 @Homoran
Es kann genutzt werden von allen; die ein E3DC Hauskraftwerk ihr eigen nennen.
Mit diesem einfachen Script könnt Ihr euer Hauskraft werk in Abhänigkeit vom Tibberstrompreis aus dem Netz nachladen.
welche IOBroker Plugins werden zusätzlich benötigt
E3DC-rscp
und ein Tibber Adapter (egal welcher es müssen nur die entsprechnden Werte genutzt werden.
Ziel für mich war, wenn Strom günstig ist und der Akku einen zu geringen Ladestand ausweist, diesen einfach bis zu einem gewissen % Satz nachzuladen ( Die lade Endadeverluste muss man natürlich einbeziehen.)
Ich habe mich extra gegen eine komplizierte Steuerung (wie z.b PV Wettervorhersage etc) entschieden.
Das Script besteht bei mir aus zwei Teilen.
Erster Teil bezieht sich auf die reine Ladung des Akkus bei entsprechend günstigem Strompreis.
Der zweite Teil setzt beim E3DC die Entladesperrzeiten auf "true"
Hintergrund diser Steuerung in meinen Fall:
Wenn der Strom günstig ist, möchte ich natürlich auch mein Auto laden, das aber rein nur aus dem Netz und nicht aus dem Akku ! In meinen Fall mit einen Go E-Charger!
code_text
// Beschreibe diese Funktion …
async function Ladeschaltung() {
Modus = compareTime('00:00', '23:59', 'between') && laden && getState('tibber.0.priceInfo.current.total').val <= (getState('tibber.0.priceInfo.current.total').val <= 0.175) ? 4 : 0;
if (Modus != getState('e3dc-rscp.0.EMS.SET_POWER_MODE').val) {
setState('e3dc-rscp.0.EMS.SET_POWER_MODE' /* Lademodus (gesendet) */, Modus);
setStateDelayed('e3dc-rscp.0.EMS.SET_POWER_VALUE' /* Eingestellte Ladeleistung (gesendet) */, 9000, 5000, false);
}
}
// Beschreibe diese Funktion …
async function Endladesperre() {
Modus2 = getState('go-e.1.car').val == 2 ? true : false;
if (Modus2 != getState('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.00-Monday.IDLE_PERIOD_ACTIVE').val) {
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.00-Monday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 1000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.01-Tuesday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 2000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.02-Wednesday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 3000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.03-Thursday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 4000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.04-Friday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 5000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.05-Saturday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 6000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.06-Sunday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 7000, false);
}
}
// Akku Kappa prüfen
laden = getState('modbus.0.holdingRegisters.40083_Batterie_SOC').val < 90;
on({ id: 'modbus.0.holdingRegisters.40083_Batterie_SOC' /* Batterie-SOC in Prozent */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if ((obj.state ? obj.state.val : "") >= 90) {
laden = false;
} else if ((obj.state ? obj.state.val : "") < 50) {
laden = true;
}
await Ladeschaltung();
});
on({ id: 'tibber.0.priceInfo.current.total' /* total */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
await Ladeschaltung();
});
// Entladesperrzeiten setzten
on({ id: 'go-e.1.car' /* PWM Signalisierung (car) */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
await Endladesperre();
});
Viel Spass bei ausprobieren !!!
@arteck dann weiterhin schönes entspannen P.S habe jetzt nochmal alles Adapter gelöscht und Version 3.1.16 installiert und siehe da Hyundai geht wieder KIA leider noch nicht... Keine Ahnung warum hhabe aber parallel auch auf die neue Hyundai Android App myHyundai gewechselt also die es es bei KIA auch schon gibt
leider geht bei mir mit keiner Version mehr hat einer ggf noch einen Tipp
Die logon Daten sind defenitiv correct!
P.s. habe eine KIA un einen Hyundai !
@arnod ne musste ich bis dato nicht... hat alles geklappt ohne den 4 SEC Trigger ... Ich setzte bei Objekt SET_POWER_MODE entwender "0" für Normal bzw. "4" für Grid_Charge udn dann noch die Ladeleistung "z.b 9000 Watt mehr nicht.
Wobei es jetzt wieder läuft nachdem ich E3DC_rscp und mein Blocky wieder neu installiert habe sehr komisch.. Ich hatte im Zuge des ausprobierens deines Scriptes auch die Abfrageintervallwerte angepasst nach deinen Vorgaben ggf war das das Problem.... Danke trotzdem.. wie gesagt bei mir klappt das ohne den 4 SEC Trigger schon seid über einem Jahr !!! frag mich aber bitte nicht warum.
Hatte dazu ja auch mal eine Anleitung hier ins Forum gepostet ....
E3DC Hauskraftwerk via Tibber laden
Hi in die Runde ich verzeifel gerade ein wenig.. bis dato klappte das LAden via selbst gebautem Skript gesteuert via Tibber preis immer in die ich die s.u. Datenpunkte des E3Dc via e3dc-escp getriggert habe ohne Probleme... Jetzt wollte ich mal E3DC Controll ausprobieren und seid dem klappt mein einfaches Script nicht mehr wo ist mein Ich habe die E3dc Controll Programmanteile alle deaktiviert aber es geht nicht mehr !!! dann alles gelöscht klappt auch nicht !!
Folgende Trigger setze ich... den Set_POWER_MODE auf Grid_Charge (4)
mit folgenden Programmzeilen !
bis dato klappe immer alles jetzt leider nicht mehr hat einer ggf eine Tip ?
Wie ist das aktuelle Verhalten..... er fängt kurz an zu laden aus dem Netz hört dann aber wieder auf...
Danke und Grüße
@ronniboy Hi ich nutze das Script noch genau so und den Trigger auf Powervalue setzte ich doch
@robbi12 mhhh was meinst du genau du musst das Script natürlich noch auf dein System anpassen (DatenPunkte etc) wenn du Evcc nutzt dann wäre das z.b der erste Punkt den du abändern musst .. ich Nutze z.b openWB)
hie rnoch mal das Script ohne die deaktivten Teilen die im letzten noch drin waren
<block xmlns="https://developers.google.com/blockly/xml" type="procedures_defnoreturn" id="5/;3|HSfY1DAjxt5?Boe" x="-1312" y="262.4">
<field name="NAME">Ladeschaltung</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK">
<block type="variables_set" id="}Fqs{clkugC%PJw|,#%x">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
<value name="VALUE">
<block type="logic_ternary" id="[.r)hU4YsaqlemuDNLsW" inline="false">
<value name="IF">
<block type="logic_operation" id="H*{$FtGE0%O3m5jr4c21" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="time_compare" id="wZye_u#FX4S:_:^FGt5M">
<mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true"></mutation>
<field name="OPTION">between</field>
<field name="START_TIME">00:00</field>
<field name="END_TIME">23:59</field>
</block>
</value>
<value name="B">
<block type="logic_operation" id="ER[=B#TFc_ndUaaaTNRt" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="!*+rWx@,]$AW+i93=Mn*">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
</block>
</value>
<value name="B">
<block type="logic_compare" id="=8#@vo)?z[cBMw:{FplF">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="E@n3z2oC/LJYxONikYzn">
<field name="ATTR">val</field>
<field name="OID">tibberlink.0.Homes.344a4436-7f96-4251-9a15-1dda22b8cbe3.CurrentPrice.total</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="GWdA~Yt7%EBIt:MB7mUx">
<field name="OP">DIVIDE</field>
<value name="A">
<shadow type="math_number" id="XFc}i=E5`-sQo,q=EB3s">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="Mg4(^8mm2m1m-!KR:KNU">
<field name="ATTR">val</field>
<field name="OID">mqtt.0.openWB.global.awattar.MaxPriceForCharging</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="b|b]G0E|N?lfzh|zDNi0">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="THEN">
<block type="math_number" id="o#}VxYa6c$I+LFI1+swW">
<field name="NUM">4</field>
</block>
</value>
<value name="ELSE">
<block type="math_number" id="-Ex~STFr^1*sZg6W]l9t">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id=":;ok#KZ[]ZEu0T|P=kkc">
<value name="IF0">
<block type="logic_compare" id="Et5%B.C)v{VpjEE{Uu:m">
<field name="OP">NEQ</field>
<value name="A">
<block type="variables_get" id="#_L2|M#CMg$RtVppuO;i">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
</block>
</value>
<value name="B">
<block type="get_value" id="%_p_e*RYch*Ordw=@WAO">
<field name="ATTR">val</field>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_MODE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="/N-q:7/s~*M1MC``1^c,">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_MODE</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="88O=,bjBm3i_+(?W{@lF">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
</block>
</value>
<next>
<block type="control" id="#s@xa/|zj!h~d)F5W#i_">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_VALUE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">5</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="7SgL{z$d[1n.T^;9?W0X">
<field name="NUM">9000</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="0Y=so_Zpfh)R*xO_xNNF">laden</variable>
<variable id="sna]-E(|pedUs57eb$2`">Modus</variable>
<variable id=":HUM}NcSr6pr)*_tZ%K~">Modus2</variable>
</variables>
<block type="comment" id="wYGKOV@m;DSPr+gVMqP?" x="-1737" y="13">
<field name="COMMENT">Akku Kappa prüfen </field>
</block>
<block type="on" id="KFi=aS{@Kx{roq-j!Xe7" disabled="true" x="-1037" y="38">
<field name="OID">modbus.0.holdingRegisters.40083_Batterie_SOC</field>
<field name="CONDITION">any</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="9N6u3).GRGvc)1gm;X|!">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="QWTMu`{ISH)Q+@B6L/%v">
<field name="OP">GTE</field>
<value name="A">
<block type="on_source" id="T;.A|P5(O7jN0G*;H~!m">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="]I19$BZjvJ!+)um^!_HI">
<field name="NUM">90</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="ssF!(q$ucIV!^0/gI.DE">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_boolean" id="!-5fe:)bt2D^o55`~V6e">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="vM=KXc6DPa*}Pr$Te~L4">
<field name="OP">LT</field>
<value name="A">
<block type="on_source" id="W{$9=T9Riae0N%gbqi:f">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="/sBQS6(EU]m?-Y-d0IOy">
<field name="NUM">60</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="variables_set" id="=Q8){LXrePz%dE.!$~N0">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_boolean" id="[N(Y1gE!ZR0xnH[0xv6C">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</statement>
<next>
<block type="procedures_callnoreturn" id="Yhrcf/j6f8Y~(@|y8Io|">
<mutation name="Ladeschaltung"></mutation>
</block>
</next>
</block>
</statement>
</block>
<block type="variables_set" id="x9m5V3x?MUQf?=|sIA)O" x="-1701" y="103">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_compare" id="!y@{Jc}M%Bx)@xDEF[e6">
<field name="OP">LT</field>
<value name="A">
<block type="get_value" id="tLKe{e977sRsinM3RlD2">
<field name="ATTR">val</field>
<field name="OID">modbus.0.holdingRegisters.40083_Batterie_SOC</field>
</block>
</value>
<value name="B">
<block type="math_number" id="0G.cUP$cs(uN^d_e0)`e">
<field name="NUM">90</field>
</block>
</value>
</block>
</value>
<next>
<block type="on_ext" id="i[kzA$?k0Au)PSJj3NUX">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="W+V%)[~WW^AK@Ec{McC:">
<field name="oid">tibberlink.0.Homes.344a4436-7f96-4251-9a15-1dda22b8cbe3.CurrentPrice.total</field>
</shadow>
</value>
<value name="OID1">
<shadow type="field_oid" id="[H;K_$kk#fvdMgmVK,H/">
<field name="oid">e3dc-rscp.0.EMS.BAT_SOC</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="UmNudO+,rEct.^!V?j5b">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="AKgs?gRA*]lIT5e*HvC+">
<field name="OP">GTE</field>
<value name="A">
<block type="on_source" id="$?3+?crUY.`!=+a2kY!;">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="~$z+Ztl$p~8dlt{5`M5W">
<field name="NUM">90</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="sC?yyd#svq#4)f^QMN(d">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_boolean" id="Lk_)ggA/}P[lL1Y+iyGT">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="hoS~CwMU$B(3;8*@;w?C">
<field name="OP">LT</field>
<value name="A">
<block type="on_source" id="6,~f[|=t71GEEl9]YdEU">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Xz9JLpxA+K`5Vh:tlc$n">
<field name="NUM">60</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="variables_set" id="ocdHdKy}TTE*!BBxZ5Gl">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_boolean" id="x-2MJ)({x}%|.E3G~8nt">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</statement>
<next>
<block type="procedures_callnoreturn" id="Wzv?*kolrctW9wZ!.uI@">
<mutation name="Ladeschaltung"></mutation>
</block>
</next>
</block>
</statement>
<next>
<block type="on" id=":2,QS4x0YvzuIG??Qk{6">
<field name="OID">tibberlink.0.Homes.344a4436-7f96-4251-9a15-1dda22b8cbe3.CurrentPrice.total</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="procedures_callnoreturn" id="kECB%]i[JX!ln^uC{3KS">
<mutation name="Ladeschaltung"></mutation>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defnoreturn" id="5/;3|HSfY1DAjxt5?Boe" x="-1312" y="313">
<field name="NAME">Ladeschaltung</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK">
<block type="variables_set" id="}Fqs{clkugC%PJw|,#%x">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
<value name="VALUE">
<block type="logic_ternary" id="[.r)hU4YsaqlemuDNLsW" inline="false">
<value name="IF">
<block type="logic_operation" id="H*{$FtGE0%O3m5jr4c21" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="time_compare" id="wZye_u#FX4S:_:^FGt5M">
<mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true"></mutation>
<field name="OPTION">between</field>
<field name="START_TIME">00:00</field>
<field name="END_TIME">23:59</field>
</block>
</value>
<value name="B">
<block type="logic_operation" id="ER[=B#TFc_ndUaaaTNRt" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="!*+rWx@,]$AW+i93=Mn*">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
</block>
</value>
<value name="B">
<block type="logic_compare" id="=8#@vo)?z[cBMw:{FplF">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="E@n3z2oC/LJYxONikYzn">
<field name="ATTR">val</field>
<field name="OID">tibberlink.0.Homes.344a4436-7f96-4251-9a15-1dda22b8cbe3.CurrentPrice.total</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="GWdA~Yt7%EBIt:MB7mUx">
<field name="OP">DIVIDE</field>
<value name="A">
<shadow type="math_number" id="XFc}i=E5`-sQo,q=EB3s">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="Mg4(^8mm2m1m-!KR:KNU">
<field name="ATTR">val</field>
<field name="OID">mqtt.0.openWB.global.awattar.MaxPriceForCharging</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="b|b]G0E|N?lfzh|zDNi0">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="THEN">
<block type="math_number" id="o#}VxYa6c$I+LFI1+swW">
<field name="NUM">4</field>
</block>
</value>
<value name="ELSE">
<block type="math_number" id="-Ex~STFr^1*sZg6W]l9t">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id=":;ok#KZ[]ZEu0T|P=kkc">
<value name="IF0">
<block type="logic_compare" id="Et5%B.C)v{VpjEE{Uu:m">
<field name="OP">NEQ</field>
<value name="A">
<block type="variables_get" id="#_L2|M#CMg$RtVppuO;i">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
</block>
</value>
<value name="B">
<block type="get_value" id="%_p_e*RYch*Ordw=@WAO">
<field name="ATTR">val</field>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_MODE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="/N-q:7/s~*M1MC``1^c,">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_MODE</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="88O=,bjBm3i_+(?W{@lF">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
</block>
</value>
<next>
<block type="control" id="#s@xa/|zj!h~d)F5W#i_">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_VALUE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">5</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="7SgL{z$d[1n.T^;9?W0X">
<field name="NUM">9000</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
<block type="logic_compare" id="wF64?Si9r?dwKy]_EDI," disabled="true" x="-412" y="338">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="SeKBpiJu(74N$cpJcunB">
<field name="ATTR">val</field>
<field name="OID">tibber.0.priceInfo.current.total</field>
</block>
</value>
<value name="B">
<block type="math_number" id="G8B$puW6XG_@^WC4)xou">
<field name="NUM">0.175</field>
</block>
</value>
</block>
<block type="comment" id="Ti|wD85x|9vJ|jQkdkC." x="-1512" y="763">
<field name="COMMENT">Entladesperrzeiten setzten </field>
<next>
<block type="on" id="IIm+KjOL:(hXR[e|*WE{">
<field name="OID">go-e.1.car</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="procedures_callnoreturn" id="7h}sCENa/zpk*Nt~ZBVc">
<mutation name="Endladesperre"></mutation>
</block>
</statement>
</block>
</next>
</block>
<block type="procedures_defnoreturn" id="wZzT|Qsccu:rd|,.;1Z-" x="-1512" y="938">
<field name="NAME">Endladesperre</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK">
<block type="variables_set" id="5*C{VGE_Dxz}J=P657-P">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
<value name="VALUE">
<block type="logic_ternary" id="fq`!8q%cl%)d=Ixn1_Hl">
<value name="IF">
<block type="logic_operation" id="E]@LMsU2],iqOI4VcarV">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="sqp/G2tE45TP4w64%Hx,">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="s[Mrpp-{OnFlKb{`Qr7|">
<field name="ATTR">val</field>
<field name="OID">go-e.1.car</field>
</block>
</value>
<value name="B">
<block type="math_number" id=":3T$q[mhTuRd2gtv@Q=a">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="0*6%m8W!.RY8k~PXGF@0">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="vcPnw^PDiIlR``5H4SHJ">
<field name="ATTR">val</field>
<field name="OID">mqtt.0.openWB.global.ChargeMode</field>
</block>
</value>
<value name="B">
<block type="math_number" id="J0dUc^1a%dpvJZn:~h|6">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="THEN">
<block type="logic_boolean" id="?/u~qD1:Nk{[YN}VPcJZ">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ELSE">
<block type="logic_boolean" id=",x??(^xPFEaGr(CV)yt}">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id="VXEP_o7e$E$G%i4UeHf9">
<value name="IF0">
<block type="logic_compare" id="x}#J]4N8U:kxEu[z2C_1">
<field name="OP">NEQ</field>
<value name="A">
<block type="variables_get" id="t@o(k7Y_cK5@;br)n1!f">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<value name="B">
<block type="get_value" id="JeuFg+eo_?g(5fZ|?KDM">
<field name="ATTR">val</field>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.00-Monday.IDLE_PERIOD_ACTIVE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id=",v4{PWtN7j=IbT,{?9wu">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.00-Monday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="C-UAIh|@3K@q4FbUsZY6">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id=";bo#Od1yavuvBA0M7MPB">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.01-Tuesday.IDLE_PERIOD_ACTIVE</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="variables_get" id="fm2`{!(Wvx1^zTh}k1?}">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id=";KkLypI!01qn~g%gPOJu">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.02-Wednesday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">3</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="+sPa([CU]vgKBmHNq+:-">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id="v8QU_)qgLDHjau}SpUMd">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.03-Thursday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">4</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="#0OV]H%qAXHD.x*iMrdL">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id="9h}O1NWT4D]+,lWk!0sj">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.04-Friday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">5</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="].%%C*600cCsr/FuC_S|">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id=".nyo-LMoZbB4G7bY|8QU">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.05-Saturday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">6</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="u8X-iz3T{bt,0MHrap:X">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id="DB_AQFx-Ijot);%W#^@g">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.06-Sunday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">7</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="*E+#K/MUZjz*lZWg%slf">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</xml>
Re: E3DC Hauskraftwerk via Tibber laden
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="0Y=so_Zpfh)R*xO_xNNF">laden</variable>
<variable id="sna]-E(|pedUs57eb$2`">Modus</variable>
<variable id=":HUM}NcSr6pr)*_tZ%K~">Modus2</variable>
</variables>
<block type="comment" id="wYGKOV@m;DSPr+gVMqP?" x="-1737" y="13">
<field name="COMMENT">Akku Kappa prüfen </field>
</block>
<block type="on" id="KFi=aS{@Kx{roq-j!Xe7" disabled="true" x="-1037" y="38">
<field name="OID">modbus.0.holdingRegisters.40083_Batterie_SOC</field>
<field name="CONDITION">any</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="9N6u3).GRGvc)1gm;X|!">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="QWTMu`{ISH)Q+@B6L/%v">
<field name="OP">GTE</field>
<value name="A">
<block type="on_source" id="T;.A|P5(O7jN0G*;H~!m">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="]I19$BZjvJ!+)um^!_HI">
<field name="NUM">90</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="ssF!(q$ucIV!^0/gI.DE">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_boolean" id="!-5fe:)bt2D^o55`~V6e">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="vM=KXc6DPa*}Pr$Te~L4">
<field name="OP">LT</field>
<value name="A">
<block type="on_source" id="W{$9=T9Riae0N%gbqi:f">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="/sBQS6(EU]m?-Y-d0IOy">
<field name="NUM">60</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="variables_set" id="=Q8){LXrePz%dE.!$~N0">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_boolean" id="[N(Y1gE!ZR0xnH[0xv6C">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</statement>
<next>
<block type="procedures_callnoreturn" id="Yhrcf/j6f8Y~(@|y8Io|">
<mutation name="Ladeschaltung"></mutation>
</block>
</next>
</block>
</statement>
</block>
<block type="variables_set" id="x9m5V3x?MUQf?=|sIA)O" x="-1701" y="103">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_compare" id="!y@{Jc}M%Bx)@xDEF[e6">
<field name="OP">LT</field>
<value name="A">
<block type="get_value" id="tLKe{e977sRsinM3RlD2">
<field name="ATTR">val</field>
<field name="OID">modbus.0.holdingRegisters.40083_Batterie_SOC</field>
</block>
</value>
<value name="B">
<block type="math_number" id="0G.cUP$cs(uN^d_e0)`e">
<field name="NUM">90</field>
</block>
</value>
</block>
</value>
<next>
<block type="on_ext" id="i[kzA$?k0Au)PSJj3NUX">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="W+V%)[~WW^AK@Ec{McC:">
<field name="oid">tibberlink.0.Homes.344a4436-7f96-4251-9a15-1dda22b8cbe3.CurrentPrice.total</field>
</shadow>
</value>
<value name="OID1">
<shadow type="field_oid" id="[H;K_$kk#fvdMgmVK,H/">
<field name="oid">e3dc-rscp.0.EMS.BAT_SOC</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="UmNudO+,rEct.^!V?j5b">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="AKgs?gRA*]lIT5e*HvC+">
<field name="OP">GTE</field>
<value name="A">
<block type="on_source" id="$?3+?crUY.`!=+a2kY!;">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="~$z+Ztl$p~8dlt{5`M5W">
<field name="NUM">90</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="sC?yyd#svq#4)f^QMN(d">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_boolean" id="Lk_)ggA/}P[lL1Y+iyGT">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="hoS~CwMU$B(3;8*@;w?C">
<field name="OP">LT</field>
<value name="A">
<block type="on_source" id="6,~f[|=t71GEEl9]YdEU">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Xz9JLpxA+K`5Vh:tlc$n">
<field name="NUM">60</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="variables_set" id="ocdHdKy}TTE*!BBxZ5Gl">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
<value name="VALUE">
<block type="logic_boolean" id="x-2MJ)({x}%|.E3G~8nt">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</statement>
<next>
<block type="procedures_callnoreturn" id="Wzv?*kolrctW9wZ!.uI@">
<mutation name="Ladeschaltung"></mutation>
</block>
</next>
</block>
</statement>
<next>
<block type="on" id=":2,QS4x0YvzuIG??Qk{6">
<field name="OID">tibberlink.0.Homes.344a4436-7f96-4251-9a15-1dda22b8cbe3.CurrentPrice.total</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="procedures_callnoreturn" id="kECB%]i[JX!ln^uC{3KS">
<mutation name="Ladeschaltung"></mutation>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defnoreturn" id="5/;3|HSfY1DAjxt5?Boe" x="-1312" y="313">
<field name="NAME">Ladeschaltung</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK">
<block type="variables_set" id="}Fqs{clkugC%PJw|,#%x">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
<value name="VALUE">
<block type="logic_ternary" id="[.r)hU4YsaqlemuDNLsW" inline="false">
<value name="IF">
<block type="logic_operation" id="H*{$FtGE0%O3m5jr4c21" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="time_compare" id="wZye_u#FX4S:_:^FGt5M">
<mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true"></mutation>
<field name="OPTION">between</field>
<field name="START_TIME">00:00</field>
<field name="END_TIME">23:59</field>
</block>
</value>
<value name="B">
<block type="logic_operation" id="ER[=B#TFc_ndUaaaTNRt" inline="false">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="!*+rWx@,]$AW+i93=Mn*">
<field name="VAR" id="0Y=so_Zpfh)R*xO_xNNF">laden</field>
</block>
</value>
<value name="B">
<block type="logic_compare" id="=8#@vo)?z[cBMw:{FplF">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="E@n3z2oC/LJYxONikYzn">
<field name="ATTR">val</field>
<field name="OID">tibberlink.0.Homes.344a4436-7f96-4251-9a15-1dda22b8cbe3.CurrentPrice.total</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="GWdA~Yt7%EBIt:MB7mUx">
<field name="OP">DIVIDE</field>
<value name="A">
<shadow type="math_number" id="XFc}i=E5`-sQo,q=EB3s">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="Mg4(^8mm2m1m-!KR:KNU">
<field name="ATTR">val</field>
<field name="OID">mqtt.0.openWB.global.awattar.MaxPriceForCharging</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="b|b]G0E|N?lfzh|zDNi0">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="THEN">
<block type="math_number" id="o#}VxYa6c$I+LFI1+swW">
<field name="NUM">4</field>
</block>
</value>
<value name="ELSE">
<block type="math_number" id="-Ex~STFr^1*sZg6W]l9t">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id=":;ok#KZ[]ZEu0T|P=kkc">
<value name="IF0">
<block type="logic_compare" id="Et5%B.C)v{VpjEE{Uu:m">
<field name="OP">NEQ</field>
<value name="A">
<block type="variables_get" id="#_L2|M#CMg$RtVppuO;i">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
</block>
</value>
<value name="B">
<block type="get_value" id="%_p_e*RYch*Ordw=@WAO">
<field name="ATTR">val</field>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_MODE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="/N-q:7/s~*M1MC``1^c,">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_MODE</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="88O=,bjBm3i_+(?W{@lF">
<field name="VAR" id="sna]-E(|pedUs57eb$2`">Modus</field>
</block>
</value>
<next>
<block type="control" id="#s@xa/|zj!h~d)F5W#i_">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.SET_POWER_VALUE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">5</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="math_number" id="7SgL{z$d[1n.T^;9?W0X">
<field name="NUM">9000</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
<block type="logic_compare" id="wF64?Si9r?dwKy]_EDI," disabled="true" x="-412" y="338">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="SeKBpiJu(74N$cpJcunB">
<field name="ATTR">val</field>
<field name="OID">tibber.0.priceInfo.current.total</field>
</block>
</value>
<value name="B">
<block type="math_number" id="G8B$puW6XG_@^WC4)xou">
<field name="NUM">0.175</field>
</block>
</value>
</block>
<block type="comment" id="Ti|wD85x|9vJ|jQkdkC." x="-1512" y="763">
<field name="COMMENT">Entladesperrzeiten setzten </field>
<next>
<block type="on" id="IIm+KjOL:(hXR[e|*WE{">
<field name="OID">go-e.1.car</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="procedures_callnoreturn" id="7h}sCENa/zpk*Nt~ZBVc">
<mutation name="Endladesperre"></mutation>
</block>
</statement>
</block>
</next>
</block>
<block type="procedures_defnoreturn" id="wZzT|Qsccu:rd|,.;1Z-" x="-1512" y="938">
<field name="NAME">Endladesperre</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK">
<block type="variables_set" id="5*C{VGE_Dxz}J=P657-P">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
<value name="VALUE">
<block type="logic_ternary" id="fq`!8q%cl%)d=Ixn1_Hl">
<value name="IF">
<block type="logic_operation" id="E]@LMsU2],iqOI4VcarV">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="sqp/G2tE45TP4w64%Hx,">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="s[Mrpp-{OnFlKb{`Qr7|">
<field name="ATTR">val</field>
<field name="OID">go-e.1.car</field>
</block>
</value>
<value name="B">
<block type="math_number" id=":3T$q[mhTuRd2gtv@Q=a">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="0*6%m8W!.RY8k~PXGF@0">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="vcPnw^PDiIlR``5H4SHJ">
<field name="ATTR">val</field>
<field name="OID">mqtt.0.openWB.global.ChargeMode</field>
</block>
</value>
<value name="B">
<block type="math_number" id="J0dUc^1a%dpvJZn:~h|6">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="THEN">
<block type="logic_boolean" id="?/u~qD1:Nk{[YN}VPcJZ">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ELSE">
<block type="logic_boolean" id=",x??(^xPFEaGr(CV)yt}">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id="VXEP_o7e$E$G%i4UeHf9">
<value name="IF0">
<block type="logic_compare" id="x}#J]4N8U:kxEu[z2C_1">
<field name="OP">NEQ</field>
<value name="A">
<block type="variables_get" id="t@o(k7Y_cK5@;br)n1!f">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<value name="B">
<block type="get_value" id="JeuFg+eo_?g(5fZ|?KDM">
<field name="ATTR">val</field>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.00-Monday.IDLE_PERIOD_ACTIVE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id=",v4{PWtN7j=IbT,{?9wu">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.00-Monday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="C-UAIh|@3K@q4FbUsZY6">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id=";bo#Od1yavuvBA0M7MPB">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.01-Tuesday.IDLE_PERIOD_ACTIVE</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="variables_get" id="fm2`{!(Wvx1^zTh}k1?}">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id=";KkLypI!01qn~g%gPOJu">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.02-Wednesday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">3</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="+sPa([CU]vgKBmHNq+:-">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id="v8QU_)qgLDHjau}SpUMd">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.03-Thursday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">4</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="#0OV]H%qAXHD.x*iMrdL">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id="9h}O1NWT4D]+,lWk!0sj">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.04-Friday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">5</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="].%%C*600cCsr/FuC_S|">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id=".nyo-LMoZbB4G7bY|8QU">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.05-Saturday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">6</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="u8X-iz3T{bt,0MHrap:X">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
<next>
<block type="control" id="DB_AQFx-Ijot);%W#^@g">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
<field name="OID">e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.06-Sunday.IDLE_PERIOD_ACTIVE</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">7</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="*E+#K/MUZjz*lZWg%slf">
<field name="VAR" id=":HUM}NcSr6pr)*_tZ%K~">Modus2</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</xml>
Hallo in die Runde ich hoffe das Schript passt hier rein.
Das Script wurde mit Unterstüzung div Forenmitglieder optimiert großer Dank geht an @Paul53 @Homoran
Es kann genutzt werden von allen; die ein E3DC Hauskraftwerk ihr eigen nennen.
Mit diesem einfachen Script könnt Ihr euer Hauskraft werk in Abhänigkeit vom Tibberstrompreis aus dem Netz nachladen.
welche IOBroker Plugins werden zusätzlich benötigt
E3DC-rscp
und ein Tibber Adapter (egal welcher es müssen nur die entsprechnden Werte genutzt werden.
Ziel für mich war, wenn Strom günstig ist und der Akku einen zu geringen Ladestand ausweist, diesen einfach bis zu einem gewissen % Satz nachzuladen ( Die lade Endadeverluste muss man natürlich einbeziehen.)
Ich habe mich extra gegen eine komplizierte Steuerung (wie z.b PV Wettervorhersage etc) entschieden.
Das Script besteht bei mir aus zwei Teilen.
Erster Teil bezieht sich auf die reine Ladung des Akkus bei entsprechend günstigem Strompreis.
Der zweite Teil setzt beim E3DC die Entladesperrzeiten auf "true"
Hintergrund diser Steuerung in meinen Fall:
Wenn der Strom günstig ist, möchte ich natürlich auch mein Auto laden, das aber rein nur aus dem Netz und nicht aus dem Akku ! In meinen Fall mit einen Go E-Charger!
code_text
// Beschreibe diese Funktion …
async function Ladeschaltung() {
Modus = compareTime('00:00', '23:59', 'between') && laden && getState('tibber.0.priceInfo.current.total').val <= (getState('tibber.0.priceInfo.current.total').val <= 0.175) ? 4 : 0;
if (Modus != getState('e3dc-rscp.0.EMS.SET_POWER_MODE').val) {
setState('e3dc-rscp.0.EMS.SET_POWER_MODE' /* Lademodus (gesendet) */, Modus);
setStateDelayed('e3dc-rscp.0.EMS.SET_POWER_VALUE' /* Eingestellte Ladeleistung (gesendet) */, 9000, 5000, false);
}
}
// Beschreibe diese Funktion …
async function Endladesperre() {
Modus2 = getState('go-e.1.car').val == 2 ? true : false;
if (Modus2 != getState('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.00-Monday.IDLE_PERIOD_ACTIVE').val) {
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.00-Monday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 1000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.01-Tuesday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 2000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.02-Wednesday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 3000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.03-Thursday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 4000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.04-Friday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 5000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.05-Saturday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 6000, false);
setStateDelayed('e3dc-rscp.0.EMS.IDLE_PERIODS_DISCHARGE.06-Sunday.IDLE_PERIOD_ACTIVE' /* Ruhezeit aktiv */, Modus2, 7000, false);
}
}
// Akku Kappa prüfen
laden = getState('modbus.0.holdingRegisters.40083_Batterie_SOC').val < 90;
on({ id: 'modbus.0.holdingRegisters.40083_Batterie_SOC' /* Batterie-SOC in Prozent */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if ((obj.state ? obj.state.val : "") >= 90) {
laden = false;
} else if ((obj.state ? obj.state.val : "") < 50) {
laden = true;
}
await Ladeschaltung();
});
on({ id: 'tibber.0.priceInfo.current.total' /* total */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
await Ladeschaltung();
});
// Entladesperrzeiten setzten
on({ id: 'go-e.1.car' /* PWM Signalisierung (car) */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
await Endladesperre();
});
Viel Spass bei ausprobieren !!!
@homoran anstatt Loading als Trigger zu nehmen war die Lösung der Einmfache Wert also "2" Danke natürlich auch an dich ...