Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. E3DC Hauskraftwerk via Tibber laden

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

E3DC Hauskraftwerk via Tibber laden

Scheduled Pinned Locked Moved Blockly
17 Posts 10 Posters 7.1k Views 11 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D dataeasy

    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

    3b4bb836-315c-48d5-940d-4398eebdea0b-grafik.png

    und ein Tibber Adapter (egal welcher es müssen nur die entsprechnden Werte genutzt werden.

    716f5082-4bce-4cdd-ae58-7c113944458c-grafik.png

    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.

    82a61abc-22ea-43b3-87d8-2cc4b99fd815-grafik.png

    Der zweite Teil setzt beim E3DC die Entladesperrzeiten auf "true"

    1de5d1bb-fdb6-4c9e-bd2b-9aaca25d7a11-grafik.png

    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!

    f3003f7b-78c1-4736-bb46-b06bb8a0e18d-grafik.png

    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 !!!

    D Offline
    D Offline
    dpcFan
    wrote on last edited by dpcFan
    #8

    @dataeasy @Mazze Warum nicht gleich nach den Sternen greifen?

    Nun habe ich ja die Möglichkeit, den Speicher per Script zum Laden zu bewegen, nun will ich diese Funktion in ein Gesamtkonzept einbetten und den Winter mit der Niedrigstrom-Logik von fl_dutch (Youtube: How To: dynamische Strompreise von Tibber optimal nutzen) kombinieren! Hier kommt Node-Red zu Einsatz, ist aber kein Problem, da im Grunde sich da nur Datenpunkte treffen, Deine Logik wird vom fl_Dutch Node-Red Script genutzt.

    Gesamtflow.png

    Hat da schon jemand Erfahrung zu? Das Node-Red an sich lüft bei mir gut, nur die Node "ps-strategy-Lowest-Price" will am Ausgang "On" nicht (beim Erreichen der Billigphase) "true" ausgeben, selbst, wenn ich beide Ausgänge (On/Off) auf den Datenpunkt lege, müsste beim Erreichen der Phase treu geschrieben und beim verlassen der Phase false! Leider nicht, ich kann meine komplette Logik gerne mal zur Verfügung stellen, damit Ihr wisst, wovon ich rede...

    Hier mal die Config der Node, evtl. liegt da schon der Hase im Pfeffer:
    Node_Lowest_Price_Config.png

    Das bekommt die Node als Input:

    {"priceData":[{"value":0.1664,"start":"2023-12-23T00:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T01:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T02:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T03:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T04:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T05:00:00.000+01:00"},{"value":0.1665,"start":"2023-12-23T06:00:00.000+01:00"},{"value":0.1752,"start":"2023-12-23T07:00:00.000+01:00"},{"value":0.1901,"start":"2023-12-23T08:00:00.000+01:00"},{"value":0.2164,"start":"2023-12-23T09:00:00.000+01:00"},{"value":0.2159,"start":"2023-12-23T10:00:00.000+01:00"},{"value":0.221,"start":"2023-12-23T11:00:00.000+01:00"},{"value":0.2227,"start":"2023-12-23T12:00:00.000+01:00"},{"value":0.2256,"start":"2023-12-23T13:00:00.000+01:00"},{"value":0.2286,"start":"2023-12-23T14:00:00.000+01:00"},{"value":0.2303,"start":"2023-12-23T15:00:00.000+01:00"},{"value":0.2354,"start":"2023-12-23T16:00:00.000+01:00"},{"value":0.2474,"start":"2023-12-23T17:00:00.000+01:00"},{"value":0.2454,"start":"2023-12-23T18:00:00.000+01:00"},{"value":0.2396,"start":"2023-12-23T19:00:00.000+01:00"},{"value":0.2302,"start":"2023-12-23T20:00:00.000+01:00"},{"value":0.2158,"start":"2023-12-23T21:00:00.000+01:00"},{"value":0.1905,"start":"2023-12-23T22:00:00.000+01:00"},{"value":0.1755,"start":"2023-12-23T23:00:00.000+01:00"}],"source":"Tibber"}
    
    

    Und das ist Output:

    {"schedule":[{"time":"2023-12-23T00:00:00.000+01:00","value":false,"countHours":24}],"hours":[{"start":"2023-12-23T00:00:00.000+01:00","price":0.1664,"onOff":false,"saving":null},{"start":"2023-12-23T01:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T02:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T03:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T04:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T05:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T06:00:00.000+01:00","price":0.1665,"onOff":false,"saving":null},{"start":"2023-12-23T07:00:00.000+01:00","price":0.1752,"onOff":false,"saving":null},{"start":"2023-12-23T08:00:00.000+01:00","price":0.1901,"onOff":false,"saving":null},{"start":"2023-12-23T09:00:00.000+01:00","price":0.2164,"onOff":false,"saving":null},{"start":"2023-12-23T10:00:00.000+01:00","price":0.2159,"onOff":false,"saving":null},{"start":"2023-12-23T11:00:00.000+01:00","price":0.221,"onOff":false,"saving":null},{"start":"2023-12-23T12:00:00.000+01:00","price":0.2227,"onOff":false,"saving":null},{"start":"2023-12-23T13:00:00.000+01:00","price":0.2256,"onOff":false,"saving":null},{"start":"2023-12-23T14:00:00.000+01:00","price":0.2286,"onOff":false,"saving":null},{"start":"2023-12-23T15:00:00.000+01:00","price":0.2303,"onOff":false,"saving":null},{"start":"2023-12-23T16:00:00.000+01:00","price":0.2354,"onOff":false,"saving":null},{"start":"2023-12-23T17:00:00.000+01:00","price":0.2474,"onOff":false,"saving":null},{"start":"2023-12-23T18:00:00.000+01:00","price":0.2454,"onOff":false,"saving":null},{"start":"2023-12-23T19:00:00.000+01:00","price":0.2396,"onOff":false,"saving":null},{"start":"2023-12-23T20:00:00.000+01:00","price":0.2302,"onOff":false,"saving":null},{"start":"2023-12-23T21:00:00.000+01:00","price":0.2158,"onOff":false,"saving":null},{"start":"2023-12-23T22:00:00.000+01:00","price":0.1905,"onOff":false,"saving":null},{"start":"2023-12-23T23:00:00.000+01:00","price":0.1755,"onOff":false,"saving":null}],"source":"Tibber","config":{"fromTime":"00","toTime":"00","hoursOn":1,"maxPrice":0.3,"doNotSplit":false,"sendCurrentValueWhenRescheduling":true,"outputIfNoSchedule":false,"outputOutsidePeriod":false,"outputValueForOn":true,"outputValueForOff":false,"outputValueForOntype":"bool","outputValueForOfftype":"bool","override":"auto","contextStorage":"memory","hasChanged":false},"time":"2023-12-23T07:43:39.523+00:00","version":"4.1.5","strategyNodeId":"5aec03a7d05d5184","current":false}
    

    Wenn diese Logik also mal fertig ist, dann will ich mit der preiswerten Phase den Speicher laden und die (bei Tibber normal) 8-10Uhr teure Phase dann mit dem Speicher überbrücken, so kommt man auf einen niedrigeren Durchschnittspreis pro Tag im Winter.

    Oder was meint Ihr?

    Schöne Feiertage und einen guten Rutsch ...

    R 1 Reply Last reply
    0
    • F Offline
      F Offline
      funzel
      wrote on last edited by
      #9

      Ich habe es mal als JavaScript hinzugefügt und meine Tibberdatenpunkte durch die von TibberLink getascht. Allerdings bekomme ich den Fehler, dass der Name "Modus" und "Modus2" nicht bekannt sind.

      Als Blockly geht es auch nicht. @dataeasy kannst du eventuell einfach dein Blockly nachreichen? Danke!

      D 1 Reply Last reply
      0
      • D dpcFan

        @mazze Jetzt ja, siehe FB Eintrag! Beim Senden nicht BESTÄTIGT anklicken ... blöd von mir, aber ich komm drüber weg :-)

        jh537J Offline
        jh537J Offline
        jh537
        wrote on last edited by jh537
        #10

        @dpcfan was meinst du damit?

        Jetzt ja, siehe FB Eintrag! Beim Senden nicht BESTÄTIGT anklicken ... blöd von mir, aber ich komm drüber weg 🙂
        
        1 Reply Last reply
        0
        • F funzel

          Ich habe es mal als JavaScript hinzugefügt und meine Tibberdatenpunkte durch die von TibberLink getascht. Allerdings bekomme ich den Fehler, dass der Name "Modus" und "Modus2" nicht bekannt sind.

          Als Blockly geht es auch nicht. @dataeasy kannst du eventuell einfach dein Blockly nachreichen? Danke!

          D Offline
          D Offline
          dataeasy
          wrote on last edited by
          #11

          @funzel

          <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>
          
          R 1 Reply Last reply
          0
          • D dataeasy

            @funzel

            <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>
            
            R Offline
            R Offline
            Robbi12
            wrote on last edited by
            #12

            @dataeasy Hallo. Ich würde es gerne testen.

            Wenn ich deine Sachen im blockly inportiere ist da ein wenig alles durcheinander. Ebenfalls gibt es einen Block in der Farbe braun den ich so noch nicht gesehen habe. Hier sind auch Werte vom Modbus drin. Brauch ich den? Eigentlich ist ja E3RSCP für die Steuerung da.
            Hat es schon jemand hinbekommen.

            Ziel ist für mich: Auto über EVCC laden wenn Strom günstig (Tibber), E3DC nachladen wenn Strom günstig (Tibber) und kein Laden aus der Batterie.

            Danke

            D 1 Reply Last reply
            0
            • D dpcFan

              @dataeasy @Mazze Warum nicht gleich nach den Sternen greifen?

              Nun habe ich ja die Möglichkeit, den Speicher per Script zum Laden zu bewegen, nun will ich diese Funktion in ein Gesamtkonzept einbetten und den Winter mit der Niedrigstrom-Logik von fl_dutch (Youtube: How To: dynamische Strompreise von Tibber optimal nutzen) kombinieren! Hier kommt Node-Red zu Einsatz, ist aber kein Problem, da im Grunde sich da nur Datenpunkte treffen, Deine Logik wird vom fl_Dutch Node-Red Script genutzt.

              Gesamtflow.png

              Hat da schon jemand Erfahrung zu? Das Node-Red an sich lüft bei mir gut, nur die Node "ps-strategy-Lowest-Price" will am Ausgang "On" nicht (beim Erreichen der Billigphase) "true" ausgeben, selbst, wenn ich beide Ausgänge (On/Off) auf den Datenpunkt lege, müsste beim Erreichen der Phase treu geschrieben und beim verlassen der Phase false! Leider nicht, ich kann meine komplette Logik gerne mal zur Verfügung stellen, damit Ihr wisst, wovon ich rede...

              Hier mal die Config der Node, evtl. liegt da schon der Hase im Pfeffer:
              Node_Lowest_Price_Config.png

              Das bekommt die Node als Input:

              {"priceData":[{"value":0.1664,"start":"2023-12-23T00:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T01:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T02:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T03:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T04:00:00.000+01:00"},{"value":0.1663,"start":"2023-12-23T05:00:00.000+01:00"},{"value":0.1665,"start":"2023-12-23T06:00:00.000+01:00"},{"value":0.1752,"start":"2023-12-23T07:00:00.000+01:00"},{"value":0.1901,"start":"2023-12-23T08:00:00.000+01:00"},{"value":0.2164,"start":"2023-12-23T09:00:00.000+01:00"},{"value":0.2159,"start":"2023-12-23T10:00:00.000+01:00"},{"value":0.221,"start":"2023-12-23T11:00:00.000+01:00"},{"value":0.2227,"start":"2023-12-23T12:00:00.000+01:00"},{"value":0.2256,"start":"2023-12-23T13:00:00.000+01:00"},{"value":0.2286,"start":"2023-12-23T14:00:00.000+01:00"},{"value":0.2303,"start":"2023-12-23T15:00:00.000+01:00"},{"value":0.2354,"start":"2023-12-23T16:00:00.000+01:00"},{"value":0.2474,"start":"2023-12-23T17:00:00.000+01:00"},{"value":0.2454,"start":"2023-12-23T18:00:00.000+01:00"},{"value":0.2396,"start":"2023-12-23T19:00:00.000+01:00"},{"value":0.2302,"start":"2023-12-23T20:00:00.000+01:00"},{"value":0.2158,"start":"2023-12-23T21:00:00.000+01:00"},{"value":0.1905,"start":"2023-12-23T22:00:00.000+01:00"},{"value":0.1755,"start":"2023-12-23T23:00:00.000+01:00"}],"source":"Tibber"}
              
              

              Und das ist Output:

              {"schedule":[{"time":"2023-12-23T00:00:00.000+01:00","value":false,"countHours":24}],"hours":[{"start":"2023-12-23T00:00:00.000+01:00","price":0.1664,"onOff":false,"saving":null},{"start":"2023-12-23T01:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T02:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T03:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T04:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T05:00:00.000+01:00","price":0.1663,"onOff":false,"saving":null},{"start":"2023-12-23T06:00:00.000+01:00","price":0.1665,"onOff":false,"saving":null},{"start":"2023-12-23T07:00:00.000+01:00","price":0.1752,"onOff":false,"saving":null},{"start":"2023-12-23T08:00:00.000+01:00","price":0.1901,"onOff":false,"saving":null},{"start":"2023-12-23T09:00:00.000+01:00","price":0.2164,"onOff":false,"saving":null},{"start":"2023-12-23T10:00:00.000+01:00","price":0.2159,"onOff":false,"saving":null},{"start":"2023-12-23T11:00:00.000+01:00","price":0.221,"onOff":false,"saving":null},{"start":"2023-12-23T12:00:00.000+01:00","price":0.2227,"onOff":false,"saving":null},{"start":"2023-12-23T13:00:00.000+01:00","price":0.2256,"onOff":false,"saving":null},{"start":"2023-12-23T14:00:00.000+01:00","price":0.2286,"onOff":false,"saving":null},{"start":"2023-12-23T15:00:00.000+01:00","price":0.2303,"onOff":false,"saving":null},{"start":"2023-12-23T16:00:00.000+01:00","price":0.2354,"onOff":false,"saving":null},{"start":"2023-12-23T17:00:00.000+01:00","price":0.2474,"onOff":false,"saving":null},{"start":"2023-12-23T18:00:00.000+01:00","price":0.2454,"onOff":false,"saving":null},{"start":"2023-12-23T19:00:00.000+01:00","price":0.2396,"onOff":false,"saving":null},{"start":"2023-12-23T20:00:00.000+01:00","price":0.2302,"onOff":false,"saving":null},{"start":"2023-12-23T21:00:00.000+01:00","price":0.2158,"onOff":false,"saving":null},{"start":"2023-12-23T22:00:00.000+01:00","price":0.1905,"onOff":false,"saving":null},{"start":"2023-12-23T23:00:00.000+01:00","price":0.1755,"onOff":false,"saving":null}],"source":"Tibber","config":{"fromTime":"00","toTime":"00","hoursOn":1,"maxPrice":0.3,"doNotSplit":false,"sendCurrentValueWhenRescheduling":true,"outputIfNoSchedule":false,"outputOutsidePeriod":false,"outputValueForOn":true,"outputValueForOff":false,"outputValueForOntype":"bool","outputValueForOfftype":"bool","override":"auto","contextStorage":"memory","hasChanged":false},"time":"2023-12-23T07:43:39.523+00:00","version":"4.1.5","strategyNodeId":"5aec03a7d05d5184","current":false}
              

              Wenn diese Logik also mal fertig ist, dann will ich mit der preiswerten Phase den Speicher laden und die (bei Tibber normal) 8-10Uhr teure Phase dann mit dem Speicher überbrücken, so kommt man auf einen niedrigeren Durchschnittspreis pro Tag im Winter.

              Oder was meint Ihr?

              Schöne Feiertage und einen guten Rutsch ...

              R Offline
              R Offline
              Robbi12
              wrote on last edited by
              #13

              @dpcfan Hallo. Läuft es bei dir nun? Ich würde es gerne probieren, habe aber mit Nodered nichts am Hut.
              Müsste ich dann installieren. Bekommt man das irgendwie dann importiert?

              1 Reply Last reply
              0
              • R Robbi12

                @dataeasy Hallo. Ich würde es gerne testen.

                Wenn ich deine Sachen im blockly inportiere ist da ein wenig alles durcheinander. Ebenfalls gibt es einen Block in der Farbe braun den ich so noch nicht gesehen habe. Hier sind auch Werte vom Modbus drin. Brauch ich den? Eigentlich ist ja E3RSCP für die Steuerung da.
                Hat es schon jemand hinbekommen.

                Ziel ist für mich: Auto über EVCC laden wenn Strom günstig (Tibber), E3DC nachladen wenn Strom günstig (Tibber) und kein Laden aus der Batterie.

                Danke

                D Offline
                D Offline
                dataeasy
                wrote on last edited by
                #14

                @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>
                
                R 1 Reply Last reply
                0
                • D dataeasy

                  @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>
                  
                  R Offline
                  R Offline
                  Ron 0
                  wrote on last edited by
                  #15

                  @dataeasy Hallo zusammen,

                  Ich weiß nicht, ob es mittlerweile einen neueren Thread als diesen hier gibt. Aber wenn nicht hätte ich ein paar Fragen zum Skript.

                  Grüße
                  Ron

                  1 Reply Last reply
                  0
                  • D dataeasy

                    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

                    3b4bb836-315c-48d5-940d-4398eebdea0b-grafik.png

                    und ein Tibber Adapter (egal welcher es müssen nur die entsprechnden Werte genutzt werden.

                    716f5082-4bce-4cdd-ae58-7c113944458c-grafik.png

                    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.

                    82a61abc-22ea-43b3-87d8-2cc4b99fd815-grafik.png

                    Der zweite Teil setzt beim E3DC die Entladesperrzeiten auf "true"

                    1de5d1bb-fdb6-4c9e-bd2b-9aaca25d7a11-grafik.png

                    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!

                    f3003f7b-78c1-4736-bb46-b06bb8a0e18d-grafik.png

                    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 !!!

                    R Offline
                    R Offline
                    Ronniboy
                    wrote on last edited by
                    #16

                    @dataeasy
                    Hallo es ist schon ein paar Monate her das Du diesen Skript geschreiben hast.
                    Setzt Du in deiner Anlage diese Version ein oder gibt es Überarbeitungen oder Anpassungen?

                    Aus dem Umfeld „E3DC-Controll“ habe ich folgende Info erhalten:

                    e3dc-rscp.0.EMS.SET_POWER_VALUE alle 4 sek. die Ladeleistung eintragen.
                    Diesen 4 sek Intervall finde ich nicht bei dir.
                    LG Ronni

                    D 1 Reply Last reply
                    0
                    • R Ronniboy

                      @dataeasy
                      Hallo es ist schon ein paar Monate her das Du diesen Skript geschreiben hast.
                      Setzt Du in deiner Anlage diese Version ein oder gibt es Überarbeitungen oder Anpassungen?

                      Aus dem Umfeld „E3DC-Controll“ habe ich folgende Info erhalten:

                      e3dc-rscp.0.EMS.SET_POWER_VALUE alle 4 sek. die Ladeleistung eintragen.
                      Diesen 4 sek Intervall finde ich nicht bei dir.
                      LG Ronni

                      D Offline
                      D Offline
                      dataeasy
                      wrote on last edited by
                      #17

                      @ronniboy Hi ich nutze das Script noch genau so und den Trigger auf Powervalue setzte ich doch

                      fdbd3af8-db5e-4d7b-b292-75763075cc7c-grafik.png

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      642

                      Online

                      32.7k

                      Users

                      82.3k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe