ConnectorScript

EcoFlow: „Klebender“ Shelly zur Überschussladung und das chgPauseFlag

Nun schon zum 2. Mal in Folge, hat mich die Zuverlässigkeit der Shelly Relais zur Durchführung einer Überschussladung enttäuscht. Da musste eine zuverlässige Alternative her: das EcoFlow chgPauseFlag hilft.

Das Problem stellt sich nach etwaigen Schaltoperationen am Shelly so dar, als das das Relais zu „kleben“ scheint. Man kann zwar ein klacken des Relais vernehmen, wirklich geschaltet wird aber hingegen nicht. Das Relais verbleibt in der bisherigen Stellung. Sprich: „entweder an oder eben aus“.

Ein leichtes klopfen auf den Shelly führt zwar dann zum Schalten des Relais – aber wer möchte schon permanent neben dem Shelly sitzen…? 🙂

Zudem möchte ich hier nicht ständig die Shellys tauschen müssen. Also musste eine zuverlässige Lösung her, um die Überschussladung der DELTA 2 MAX via AC auch weiterhin sicherzustellen.

Über das chgPauseFlag (Charge Pause Flag) der DELTA 2 Max lässich dieses realisieren. Grundsätzlich liegt dann am Lade-AC der D2M immer Spannung an. Der Ladevorgang als solches wird aber über ein pausieren der D2M selbst gesteuert.

Über die EcoFlow App ist diese Funktion nicht verfügbar. Über den EcoFlow Developer Zugang (MQTT) zur D2M hingegen schon.

Da mein „finales“ Setup auf eben dieser Vorgehensweise basiert, war eine Umsetzung schnell realisiert.

Hierfür habe ich in meinem „modifizierten“ und auf meine Anforderungen angepasstes Connector-Script (iobroker) eine entsprechende Funktion implementiert, die ausgehend vom FHEM gemeldeten Ladestatus (Laden an/aus) das erforderliche Flag in der D2M via MQTT Topic setzt.

Gem. Developer Dokumentation sieht die Topic Nutzung wie folgt aus:

{
    "id": 123,
    "version": "1.0",
    "moduleType": 3,
    "operateType": "acChgCfg",
    "params": {
        "fastChgWatts": 2400,
        "slowChgWatts": 500,
        "chgPauseFlag": 0
    }
}

Hierbei gilt zu beachten, dass man ein wenig umgedreht denken muss.

chgPauseFlag = 1 (Ladung wird angehalten/pausiert)

chgPauseFlag = 0 (Ladung wird durchgeführt)

Das Script (ohne client publish)(iobroker)

function setACCharge(deviceSN, chargestate) {

const oldchargevalue= getState(ConfigData.statesPrefix + „.“ + deviceSN + „.chgPauseFlag“).val

  if (chargestate == „on“)

    {

        chargestate = 0;

    }

else

    {

        chargestate = 1;

    }

    if ((oldchargevalue != chargestate)) {

    setState(ConfigData.stateMQ,“ok“);

    if (!client || !certification) {

        console.error(„MQTT-Client oder Zertifizierung nicht bereit.“);

        setState(ConfigData.stateMQ,“Clienterror“);

        return;

    }

    const setTopic = `/open/${certification.certificateAccount}/${deviceSN}/set`;

    const message = {

        „id“:123456789,

         „version“: „1.0“,

         „sn“: deviceSN,

          „moduleType“: 3,

           „operateType“: „acChgCfg“,

            „params“:

            {

                „fastChgWatts“: fastChargeWatts,

                „slowChgWatts“: slowChargeWatts,

                „chgPauseFlag“: chargestate

            }

                 };

}

Die Werte fastChargeWatts, slowChargeWatts, deviceSN und chargestate werden entsprechend als Variablen übergeben. Dieses ausgehend von der initialien MQTT/API Anbindung und den Werten wie sie primär aus FHEM übergeben werden.

Die „setState“ Anweisungen dienen der Datenübergabe an FHEM und der dort realisierten Alarmierung bzw. Darstellung aud den Tablets im Haus.

Eingehend erfolgt eine Überprüfung dahingehend, ob sich der Wert des FHEM Dummies (Laden ja/nein) zum aktuellen chgPauseFlag überhaupt geändert hat. Damit vermeiden wir unnötige MQTT posts und schonen so den API Key (Stichwort: verbrannte API Accounts).

Das Setup

Das Setup sieht wie folgt aus:

  1. Die 5,26 kWp inkl. BYD 5.1 Akku verrichtet ihr Werk weitesgehend unabhängig (Alle erforderlichen Daten werden aber durch FHEM in Echtzeit erfasst)
  2. Ist der BYD voll geladen und ausreichend Überschuss vorhanden (an sich immer der Fall), wird das chgPauseFlag der D2M auf 0 gesetzt und diese mit „akkuschonenden“ 500W geladen.
  3. Sobald der Überschuss nicht ausreichend, die D2M voll geladen oder aber eine Einspeisung durch die BYD erfolgt, wird das chgPauseFlag wieder auf 1 gesetzt.
  4. Sind alle Rahmenbedingungen erneut erfüllt, beginnt der Spaß von vorn
  5. die D2M speist bei nicht mehr vorhandenem Solarertrag konstante 250 W ins Hausnetz ein (PowerStream).
  6. Der BYD liefert den Rest
  7. Ist die D2M nach 7-8 Stunden leer, übernimmt der BYD automatisch die Vollversorgung.

In den Sommer-und Frühjahrsmonaten schaffe ich es so locker über die Nacht (bei normaler Verbrauchernutzung). Wenn es gut läuft, ist der BYD um 8 Uhr Morgens noch zu 30-40 % geladen.

Bei Fragen zum ConnectorScript bzw. meiner angepassten Variante, stehe ich gern zur Verfügung. Einfach die Kommentarfunktion nutzen oder aber via Kontakt eine Verbindung mit mir herstellen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert