Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. E3DC Hauskraftwerk via Tibber laden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

E3DC Hauskraftwerk via Tibber laden

Geplant Angeheftet Gesperrt Verschoben Blockly
17 Beiträge 10 Kommentatoren 6.6k Aufrufe 11 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • 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
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    0
    • F Offline
      F Offline
      funzel
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      763

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe