Victron Multiplus Backup Kit für alte PV Anlage

Der Fronius hat nur die Möglichkeit per Kontakt, Frequenz oder Spannung, also faktisch nur Kontakt.
Er hängt dann aber am Spannungsausgang des Victron, Somit geht alles was Richtung Zähler ginge durch den AC-In des Victron.
Den Fronius muss ich also irgendwann abregeln, weil der Victron die Energie nicht mehr abnehmen kann, wenn der Akku voll ist.

Schlau wäre aber, wenn man hier den Verbrauch mit im Auge hätte, nicht nur die Akkuspannung. Träge ist die Steuerung per Relais sicher auch, ebenso der Fronius an sich, daher auch nicht selbst 0% Einspeise-fähig.

Ich schau mal, was chatgpt noch so meint zu wissen..

Wird jetzt wohl eh ein 5000er Set, Dank den guten Tips hier spare ich am Akku was rein.








News:
hab mir mit dem ChatCPT eine Lösung erarbeitet. Es wird nach Last und Akku der Wechselrichter stufig gedrosselt. Dies aber per Shelly Relais, nicht am GX selbst, besser wegen der Leitungswege. Als Failsafe kommt hinter den Shelly noch ein Relais, das den Ausgang umsetzt und Potentialfrei macht. Dann ist der Wechselrichter aus im Standard, wir geben frei in den Stufen 30 60 100

Hab nun den Kopf etwas voll und muss mir noch ansehen, wie ich das technisch realisiert bekomme. Aber wenn die komplette Lösung überarbeitet ist, stelle ich es hier nochmal vor.

So, ich denke das Konzept steht.

            ┌─────────────────────────┐
            │        Cerbo GX         │
            │                         │
            │  Node-RED               │
            │   ├─ Leistungslogik     │
            │   ├─ Verbraucherlogik   │
            │   ├─ Netzlogik (später) │
            │                         │
            │  Relais 1 → Netzrelais  │ (später)
            │  Relais 2 → Verbraucher │
            └─────────┬───────────────┘
                      │ MQTT
        ┌─────────────┴─────────────┐
        │                           │
┌───────▼────────┐         ┌────────▼─────────┐
│ Shelly 2PM G3  │         │ Shelly 1 Gen3    │
│ (WR-Leistung)  │         │ Verbraucher 2    │
└───────┬────────┘         └────────┬─────────┘
        │                             │
  2× Wechsler-Relais             Verbraucher
  (EVU Fronius)

Falls die 5000er Victrons sicher in allen Betriebszuständen die Leistung liefern können, bau ich mir ein Netztrennrelais ein. Dann funktioniert die stufenlose Leistungsregelung per Frequenz und ich schone die Akkus. Das wird sich aber erst nach einem Jahr Betrieb ergeben. Für den Winter und Sonderfälle wird aber auf jeden Fall die Variante mit Relais Verwendung finden müssen.

[
  {
    "id": "config_globals",
    "type": "function",
    "name": "CONFIG – Zentrale Einstellungen",
    "func": "// ======================================================\n// ZENTRALE KONFIGURATION\n// ======================================================\nconst CONFIG = {\n\n  // --------------------------\n  // MQTT / Broker\n  // --------------------------\n  MQTT: {\n    BROKER: \"127.0.0.1\",\n    PORT: 1883\n  },\n\n  // --------------------------\n  // Victron Topics\n  // --------------------------\n  TOPICS: {\n    SOC: \"N/+/system/0/Dc/Battery/Soc\",\n    AC_LOAD: \"N/+/system/0/Ac/Consumption/Total/Power\",\n    GRID_POWER: \"N/+/system/0/Ac/Grid/Total/Power\",\n    GRID_CONNECTED: \"N/+/system/0/Ac/ActiveIn/Connected\"\n  },\n\n  // --------------------------\n  // Shelly Topics\n  // --------------------------\n  SHELLY: {\n    PV_R1: \"shellies/shelly-2pm-gen3/relay/0/command\",\n    PV_R2: \"shellies/shelly-2pm-gen3/relay/1/command\",\n    CONSUMER: \"shellies/shelly-1-gen3/relay/0/command\"\n  },\n\n  // --------------------------\n  // Batterie\n  // --------------------------\n  BATTERY: {\n    SOC_MIN: 20,\n    SOC_STOP_PV: 95\n  },\n\n  // --------------------------\n  // Netz\n  // --------------------------\n  GRID: {\n    IMPORT_LIMIT_W: 50,\n    RECONNECT_SOC: 15\n  },\n\n  // --------------------------\n  // Lastschwellen Haus\n  // --------------------------\n  LOAD: {\n    LOW_W: 1000,\n    MEDIUM_W: 3000,\n    HIGH_W: 5000\n  },\n\n  // --------------------------\n  // Verbraucherfreigaben\n  // --------------------------\n  CONSUMER: {\n    GX_SOC: 90,\n    SHELLY_SOC: 87\n  },\n\n  // --------------------------\n  // Hysterese / Mindestzeit\n  // --------------------------\n  HYST: {\n    SOC: 2,\n    POWER: 200,\n    MIN_SWITCH_SEC: 60\n  }\n\n};\n\nflow.set(\"CONFIG\", CONFIG);\nreturn null;",
    "x": 300,
    "y": 80,
    "wires": []
  },

  {
    "id": "mqtt_soc",
    "type": "mqtt in",
    "name": "SOC",
    "topic": "N/+/system/0/Dc/Battery/Soc",
    "broker": "broker",
    "x": 140,
    "y": 160,
    "wires": [["store_soc"]]
  },
  {
    "id": "store_soc",
    "type": "function",
    "name": "Store SOC",
    "func": "flow.set('soc', Number(msg.payload));\nreturn null;",
    "x": 320,
    "y": 160,
    "wires": []
  },

  {
    "id": "mqtt_load",
    "type": "mqtt in",
    "name": "AC Load",
    "topic": "N/+/system/0/Ac/Consumption/Total/Power",
    "broker": "broker",
    "x": 140,
    "y": 220,
    "wires": [["store_load"]]
  },
  {
    "id": "store_load",
    "type": "function",
    "name": "Store Load",
    "func": "flow.set('load', Number(msg.payload));\nreturn null;",
    "x": 320,
    "y": 220,
    "wires": []
  },

  {
    "id": "mqtt_grid",
    "type": "mqtt in",
    "name": "Grid Power",
    "topic": "N/+/system/0/Ac/Grid/Total/Power",
    "broker": "broker",
    "x": 140,
    "y": 280,
    "wires": [["store_grid"]]
  },
  {
    "id": "store_grid",
    "type": "function",
    "name": "Store Grid",
    "func": "flow.set('grid', Number(msg.payload));\nreturn null;",
    "x": 320,
    "y": 280,
    "wires": []
  },

  {
    "id": "mqtt_grid_state",
    "type": "mqtt in",
    "name": "Grid Connected",
    "topic": "N/+/system/0/Ac/ActiveIn/Connected",
    "broker": "broker",
    "x": 160,
    "y": 340,
    "wires": [["store_grid_state"]]
  },
  {
    "id": "store_grid_state",
    "type": "function",
    "name": "Store Grid State",
    "func": "flow.set('grid_connected', msg.payload === 1);\nreturn null;",
    "x": 360,
    "y": 340,
    "wires": []
  },

  {
    "id": "tick_pv",
    "type": "inject",
    "name": "PV Logic Tick (10s)",
    "repeat": "10",
    "once": true,
    "x": 160,
    "y": 420,
    "wires": [["pv_logic"]]
  },
  {
    "id": "pv_logic",
    "type": "function",
    "name": "PV Leistungslogik mit Hysterese",
    "func": "// Lese CONFIG und Messwerte\nconst C = flow.get('CONFIG');\nconst soc = flow.get('soc') || 0;\nconst load = flow.get('load') || 0;\nconst gridConnected = flow.get('grid_connected');\n\n// Letzte Zustände merken\nlet lastPV1 = flow.get('lastPV1') || 'off';\nlet lastPV2 = flow.get('lastPV2') || 'off';\nlet lastSwitchTime = flow.get('lastSwitchTime') || 0;\nconst now = Date.now();\n\n// --------------------------\n// OFFLINE: volle Freigabe\n// --------------------------\nif (!gridConnected) {\n    flow.set('lastPV1','on');\n    flow.set('lastPV2','on');\n    flow.set('lastSwitchTime', now);\n    return [{payload:'on'}, {payload:'on'}];\n}\n\n// --------------------------\n// Akku laden wenn nicht voll\n// --------------------------\nif (soc < C.BATTERY.SOC_STOP_PV) {\n    flow.set('lastPV1','on');\n    flow.set('lastPV2','on');\n    flow.set('lastSwitchTime', now);\n    return [{payload:'on'}, {payload:'on'}];\n}\n\n// --------------------------\n// Lastgestützte PV-Stufen bei fast vollem Akku\n// --------------------------\nlet pv1 = 'off';\nlet pv2 = 'off';\nif (load >= C.LOAD.HIGH_W) {\n    pv1 = 'on'; pv2 = 'off';\n} else if (load >= C.LOAD.MEDIUM_W) {\n    pv1 = 'off'; pv2 = 'on';\n} else {\n    pv1 = 'off'; pv2 = 'off';\n}\n\n// --------------------------\n// Hysterese SOC & Last\n// --------------------------\nif (lastPV1 === 'on' && pv1 === 'off' && soc > C.BATTERY.SOC_STOP_PV - C.HYST.SOC) { pv1 = 'on'; }\nif (lastPV2 === 'on' && pv2 === 'off' && load > C.LOAD.MEDIUM_W - C.HYST.POWER) { pv2 = 'on'; }\n\n// --------------------------\n// Mindest-Schaltzeit\n// --------------------------\nif ((now - lastSwitchTime)/1000 < C.HYST.MIN_SWITCH_SEC) {\n    pv1 = lastPV1;\n    pv2 = lastPV2;\n} else {\n    flow.set('lastPV1', pv1);\n    flow.set('lastPV2', pv2);\n    flow.set('lastSwitchTime', now);\n}\n\nreturn [{payload: pv1}, {payload: pv2}];",
    "x": 360,
    "y": 420,
    "wires": [["shelly_pv_r1"], ["shelly_pv_r2"]]
  },

  {
    "id": "shelly_pv_r1",
    "type": "mqtt out",
    "name": "Shelly 2PM – Relais 1",
    "topic": "shellies/shelly-2pm-gen3/relay/0/command",
    "broker": "broker",
    "x": 640,
    "y": 400,
    "wires": []
  },
  {
    "id": "shelly_pv_r2",
    "type": "mqtt out",
    "name": "Shelly 2PM – Relais 2",
    "topic": "shellies/shelly-2pm-gen3/relay/1/command",
    "broker": "broker",
    "x": 640,
    "y": 440,
    "wires": []
  },

  {
    "id": "tick_consumer",
    "type": "inject",
    "name": "Consumer Logic Tick (15s)",
    "repeat": "15",
    "once": true,
    "x": 160,
    "y": 520,
    "wires": [["consumer_logic"]]
  },
  {
    "id": "consumer_logic",
    "type": "function",
    "name": "Verbraucherfreigabe Logik",
    "func": "const C = flow.get('CONFIG');\nconst soc = flow.get('soc') || 0;\nconst grid = flow.get('grid') || 0;\n\nconst c1 = (soc >= C.CONSUMER.GX_SOC && grid <= C.GRID.IMPORT_LIMIT_W) ? 1 : 0;\nconst c2 = (soc >= C.CONSUMER.SHELLY_SOC && grid <= C.GRID.IMPORT_LIMIT_W) ? 1 : 0;\n\nreturn [{ payload: c1 }, { payload: c2 }];",
    "x": 380,
    "y": 520,
    "wires": [["gx_relay_2"], ["shelly_consumer"]]
  },

  {
    "id": "gx_relay_2",
    "type": "victron-output-relay",
    "name": "GX Relais 2 – Verbraucher",
    "relay": "2",
    "x": 640,
    "y": 500,
    "wires": []
  },
  {
    "id": "shelly_consumer",
    "type": "mqtt out",
    "name": "Shelly 1 – Verbraucher",
    "topic": "shellies/shelly-1-gen3/relay/0/command",
    "broker": "broker",
    "x": 640,
    "y": 540,
    "wires": []
  },

  {
    "id": "broker",
    "type": "mqtt-broker",
    "name": "Cerbo MQTT",
    "broker": "127.0.0.1",
    "port": "1883"
  }
]

Bitte beachten, die Zeilenumbrüche sind hier nicht zu sehen, kommt erst mit dem Import.

Wer Ahnung hat, ob das so laufen kann, darf gern sein Statement abgeben. Bin mir noch nicht so sicher, ob das auch alles passt. Daher sind auch alle Konfigparameter oben, damit ich erst mit sehr großen Reserven fahren kann, falls was nicht so läuft wie geplant. Dann kann man ja anpassen.

Der Kontext noch dazu:

Onlinebetrieb: Fronius wird per Kontakt freigegeben bei Last oder Bedarf am Akku. Keine Rückspeisung ins Netz.

Offlinebetrieb: Fronius wird per Kontakt voll Freigegeben, Abregelung per Frequenz

3x Victon Multiplus 5000 mit Cerbo GX und 25Kwh Akku

Fronius

Karte eingebaut für Leistungsstufen, Zwischen-Relais verbaut um Freizugeben statt zu sperren. Ausgang am Shelly aus = Wechselrichter aus.
Frequenz - Leistungsregelung aktiv

Victron-Einstellung

In VEConfigure:

Grid Code / Assistants

  • :check_mark: Frequency Shift Power Control aktiv

  • Start bei z. B. 50,2 Hz

  • Volle Drosselung bei 52 Hz

    • Alle Geräte identisch parametrieren

    • Master auf Phase L1

    Wichtige Punkte

    • ESS aktiv

    • Grid Setpoint = 0 W (oder leicht positiv)

    • Frequency Shift aktiv (s. oben)

    • Kein Einspeisen ins Netz

Mit welcher Begründung darf der vorhandene PV.-Wechelrichter nit mehr ans Netz?
Und darfst du auf einmal gar nix mehr einspeisen?

Achso…. Gar keine Netzeinspeisung?

Normalerweise bekommt man zwar keine EEG Vergütung mehr sondern nur den Marktwert ohne Zuschüsse soweit ich weiß kann man auch komplett auf das Geld verzichten aber das heißt nicht dass man nicht Einspeisen darf. Selbst wenn es nur 2 Cent je kWh abwirft ist das doch besser als nichts und Du brauchst den ganzen Aufwand nicht betreiben.

Hier wäre dann Nulleinspeisung das Schlagwort, auch das ist mit einer Modbusverbindung zum Fronius möglich.

Dennibu und Matthias, Die Fragen haben nichts mit der aktuellen Lösung zu tun - führen auch zu keiner. Ich stelle sie einstweilen zurück und beantworte dann ausführlich.

Nun ist mir erst mal wichtig den genannten Ansatz zu verfolgen, und da wäre es gut, wenn jemand das Wissen hätte, das Ganze nochmals zu verifizieren.

Die Beantwortung der Frage könnte aber auch den ganzen Aufwand überflüssig machen…
Deswegen habe ich ganz oben auch schon mal danach gefragt.

Oh Mann
dann mach ich halt nochmal nen Thread, schön langsam ist es eh schon zugemüllt… Dann kann man hier weiter quatschen.

Die Anlage wurde neu erstellt, besteht aus 17 Jahre alten, gebrauchten Modulen, welche in einer Förderung waren und nach Förderbedingungen nach 20 Jahren ZU ENTSORGEN sind
Nun hat der Vorbesitzer die paar Hundert Module einfach als defekt deklariert, um den alten Preis noch 3 Jahre für die neuen Module zu bekommen, hat nun mehr Leistung am Dach. Das wurde vom Netzbetreiber alles akzeptiert obwohl 1. Kein einziges der von mir erstandenen Module defekt ist und 2. der nun höhere Leistung fährt.
Na jedenfalls sind die nun aus der Förderung und dürfen nach den Statuten nicht mehr an´s Netz, Diskussionen Hierüber richtet bitte direkt an Bayernwerk.
Ich von meiner Seite habe kein Interesse an einer Klage für 2ct pro KWH.
Da dieses Problem viele betrifft, behilft man sich ja mittlerweile mit Nulleinspeiseanlagen und Akku. Vielleicht wächst ja unserer Regierung nochmal etwas Hirn hin, das es sinnlos ist alte Module zu entsorgen. Dann speise ich gerne ein, ändert aber nix, kommt dann gleich.

Zum Laden der Batterie wird mit Absicht ein Fronius IG Plus verwendet, da dieser günstig zu bekommen ist und mit Hoher Spannung zurecht kommt. Die sind auch noch viel im Einsatz, so bekommt man auch Ersatzeile. Dazu sind die Sharp Na 901 Dünnschichtmodule, welche aus Mechanischen, optischen und finanziellen Gründen verwendet werden auf Masse zu erden. Sonst degradieren die. Dazu hat die Anlage eine hohe Kapazität, womit Trafolose Wechselrichter nach eigenen Tests nicht zurecht kommen. Konnte auch für 75€ ein zusätzliches Gerät erstehen und bin damit versorgt. Der IG Plus 100v3 Plus ist aber noch etwas älter, kann nicht per Modbus geregelt werden meines Wissens (korregiert mich gerne). Daher ist das Frequenzshifting die priorisierte Möglichkeit. Geht aber nur Offline, also für Online noch das Relais.

Die Pv Anlage ist ein Zaun, ich habe lange Kabelwege, da ist es nur mit Hochvoltsystem sinnvoll. Wir reden von insgesamt 175m

Vergleichbare Laderegler sind sehr selten und sehr teuer.

So, nun noch zu “ändert aber nix”

Ich habe relativ leicht, durch versezten des Zählerschranks in den Keller, die Möglichkeit das Haus hinter den Victron zu setzen. Somit bin ich voll Autark. Bin zwar nicht der Preper, aber wenn es mitläuft ist es auch kein Thema. Das System wäre ja in der Leistung in anderer Ausführung nicht billiger. Mir ist auch klar, das es im Winter nur für das Licht und den Kühlschrank reicht, aber das ist ja schon mehr als der Rest hier haben wird.

Und wie gesagt, Was ich investieren muss ist Hirnschmalz, nicht Geld - zumindest nicht viel.

Natürlich gibt es dann auch einen Umschalter, um die Victrons rauszunehmen und direkt am Netz zu laufen, falls an der Anlage mal was abraucht.

Übrigends. Was ich anfangs selbst noch nicht wusste, deswegen hab ich meine Module gekauft. Die Module werden mittlerweile Palettenweise verschenkt. Wir haben den Unterholzner Solar in der Nähe, die müssen die sonst teuer entsorgen. Langfristig werden die dann, sofern sie den Transport überstehen, sicher im Ausland laufen. Habe schon gehört das Kroatien ein großer Abnehmer sein soll.

Hätt da noch eine andere Frage.
Für die initiale Konfiguration der Mulitplus 2 Geräte braucht man diesen USB Dongle, mit dem Cerbo geht das nicht?

Später will ich alles über den Cerbo konfigurieren, da die Anlage nicht im Haus ist.

hallo,

also mit einem multi geht es auch mit dem cerbo, mit mehreren wohl nicht.

tschuess