Steuerung SMA SBS

Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Steuerung SMA SBS

Beitrag von Becker »

Hallo,
ich habe für Node-Red eine Steuerung des Sunny Boy Storage per Modbus gebaut, die ich kurz vorstellen wollte:
1.JPG
Die Funktion steckt hinter dem Stern:
func.JPG
Da das prognosebasierte Laden von SMA teilweise funktioniert und auch teilweise nicht bzw. man nie weiß wie der Akku geladen wird und wann gestoppt wird und man keinerlei Eingriffmöglichkeiten hat, habe ich mir selber was gebaut.

Kurze Erklärung:

Hauptschalter -> Modbus schreiben komplett deaktivieren / aktivieren (default = aktivieren)

Modus 1: rein manuelle Vorgabe der Lade oder Entladeleistung, völlig unabhängig vom Netzbezug (default = Modus 2)

Modus 2: Automodus, Regelung nach Energy Meter, also Netzbezug = 0 aber mit Eingriffsmöglichkeiten per Hand.

Zusätzlich Schalter max. Ladeleistung nach SoC begrenzen und Auswahl des max. SoC (default aktiviert mit max. 75%).

Hier steckt die Funktion hinter:
bis 30% SoC wird mit max. 2400W geladen
bis 40% SoC wird mit max. 2000W geladen
bis 50% SoC wird mit max. 1600W geladen
bis 60% SoC wird mit max. 1200W geladen
bis 70,75,80,85 oder 90% (je nach Auswahl im Dropdown) wird mit max. 800W geladen und anschließend gestoppt.

Wenn weniger Leistung zur Verfügung steht, wird natürlich mit weniger Leistung geladen, immer Netzbezug = 0.

Die Funktion kann man sich natürlich selber anpassen nach Belieben.

Warum das ganze?
Im Sommer ist mein Verbrauch (ohne BEV) so gering, dass der Speicher morgens auf 100% geladen wird, den ganzen Tag bei 100% verharrt und nachts minimal bis ~70% entladen wird. Die Lagerung bei 100% lässt die Zellen unnötig altern, was ich nicht möchte.
Gelegentlich sollte man bis 100% laden, um den SoC zu kalibrieren.

Als nächsten Schritt könnte man noch Funktionen einbauen um den Speicher bei einer BEV-Ladung mit max. x W zu entladen und bei y SoC zu stoppen, wenn man nicht manuell eingreifen möchte, das war ursprünglich mein Wunsch für den Winter, um den Hausspeicher nicht mit Vollgas ins BEV zu laden.
Ich habe noch kein BEV ;) kommt aber bald. Spätestens im Herbst geht es dann weiter in Node Red.


Warum die komischen Felder mit BMS und min. Ladeleistung ?
es müssen immer alle 6 Register zyklisch geschrieben werden, daher habe ich alle 6 Register im Dashboard.
gleiches gilt für den Modus 1, hier müssen 2 Register zyklisch geschrieben werden.

So sieht es aus:
nodered1.JPG
nodered2.JPG
Was ist nötig um den Flow zu nutzen ?
Nur Node-Red auf einem RPi 2 oder höher.
Vorher muss unbedingt prognosebasiertes Laden im Sunnyportal deaktiviert werden !
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
Checker99
Beiträge: 1
Registriert: So Aug 08, 2021 2:17 am

Re: Steuerung SMA SBS

Beitrag von Checker99 »

Hallo Becker,

deine Steuerungsmöglichkeit finde ich hoch interessant und würde ich auch gerne bei mir umsetzen.

Könntest du den Flow mal exportieren und zur Verfügung stellen?

Es reicht ja die Standardkonfiguration von Nodered oder?

Schon mal vielen Dank für die Hilfe

Gruß
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Re: Steuerung SMA SBS

Beitrag von Becker »

Habe inzwischen noch mehr entwickelt.
EV-Laden: Die max. Entladeleistung wird auf den Hausverbrauch reduziert, EV-Ladung abgezogen (Wurde hier öfters erfragt)
Prognosebasiertes Laden: Wenn der nächste Tag schlecht* wird, wird die max. Ladeleistung auf Maximum gesetzt, so wird jeder Sonnenstrahl ausgenutzt
min SoC: minimale Entladetiefe des BYD

eine kleine Hysterese ist auch drin, so dass bei absinken von 100 -> 99% nicht nachgeladen wird.

Neues Dashboard:
12.png
Beispiel EV-Laden:
32.JPG

*schlecht über openweathermaps Standordbezogen mit API-Key anhand von Niederschlagsmenge und Bewölkung (%), frei einstell- und kombinierbar.

Falls Interesse: PN
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
TOMMIKNOCKER
Beiträge: 107
Registriert: So Aug 08, 2021 4:20 pm
Wohnort: OWL

Re: Steuerung SMA SBS

Beitrag von TOMMIKNOCKER »

Becker hat geschrieben: Sa Feb 05, 2022 11:33 am Im Anhang die beiden Flows:
Node Red.zip

SBS 5.0 + 2x SB
und
SBS 2.5 + 1x STP

benötigt wird Node-Red, ein openweather Api-Key (kostenlos).

Aus der Palette in Node-Red folgendes installieren (bevor der flow imporiert wird):

node-red-contrib-cron-plus
node-red-contrib-modbus
node-red-contrib-switch-break
node-red-dashboard (fehlte komischerweise bei den beiden)
node-red-node-openweathermap
node-red-contrib-buffer-parser

IP Adressen der Modbus/MQTT Server anpassen, Geo Koordinaten vom eigenen Wohnort mit API Key einfügen.

Vielleicht kann es noch Jemand gebrauchen.
Node Red.zip
(49.22 KiB) 250-mal heruntergeladen
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Re: Steuerung SMA SBS

Beitrag von Becker »

Es gab eine kleine Unschönheit in dem Teil wo der "flow SoC" erstellt wird und zwar wird bei sprunghaftem Anstieg des SoC (wenn das BMS sich verkalkuliert hat, was gelegentlich vor kommt) eine ungerade Zahl gesetzt, was nicht sein sollte.
Habe den Part nun umprogrammiert:
123.PNG

Code: Alles auswählen

[
    {
        "id": "317b155b199bffe3",
        "type": "comment",
        "z": "2bd6dc17.504c44",
        "name": "von Photovoltaik",
        "info": "BYD SoC",
        "x": 140,
        "y": 1300,
        "wires": []
    },
    {
        "id": "b641559782eac5b2",
        "type": "inject",
        "z": "2bd6dc17.504c44",
        "name": "SoC pro min",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "60",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "SoC",
        "payload": "SoC",
        "payloadType": "global",
        "x": 140,
        "y": 1340,
        "wires": [
            [
                "448791a1bdee7cbe"
            ]
        ]
    },
    {
        "id": "448791a1bdee7cbe",
        "type": "function",
        "z": "2bd6dc17.504c44",
        "name": "gerade Zahl",
        "func": "SoC = msg.payload;\nvar SoC2;\nif (SoC == 1) {\n    SoC2 = SoC;\n}\nelse if (SoC%2 == 0) {\n    SoC2 = SoC;\n}\nelse { \n    return;\n}\nmsg.payload = SoC2;\nmsg.topic = \"SoC\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 390,
        "y": 1340,
        "wires": [
            [
                "bac10f7395157fc6"
            ]
        ]
    },
    {
        "id": "6e8614f50d1cc9d2",
        "type": "inject",
        "z": "2bd6dc17.504c44",
        "name": "Erstinjektion SoC",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": "15",
        "topic": "SoC",
        "payload": "SoC",
        "payloadType": "global",
        "x": 430,
        "y": 1280,
        "wires": [
            [
                "573497770d026541"
            ]
        ]
    },
    {
        "id": "573497770d026541",
        "type": "function",
        "z": "2bd6dc17.504c44",
        "name": "gerade Zahl",
        "func": "SoC = msg.payload;\nvar SoC2;\nif (SoC == 100) {\n    SoC2 = SoC;\n}\nelse if (SoC%2 == 0) {\n    SoC2 = SoC;\n}\nelse { \n    SoC2 = SoC +1;\n}\nmsg.payload = SoC2;\nmsg.topic = \"SoC\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 670,
        "y": 1280,
        "wires": [
            [
                "bac10f7395157fc6"
            ]
        ]
    },
    {
        "id": "bac10f7395157fc6",
        "type": "change",
        "z": "2bd6dc17.504c44",
        "name": "Setze flow.SoC",
        "rules": [
            {
                "t": "set",
                "p": "SoC",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 680,
        "y": 1340,
        "wires": [
            []
        ]
    }
]
bitte ersetzen.

Zusätzlich habe ich noch einen Ein-/Ausschaltschutz bei 100% SoC eingebaut.
Sprich wenn die openWB bei Wolken 10-20s braucht um runter zu regeln, soll nicht der Speicher geweckt werden, denn bis der nach 1min an ist, wird er nicht mehr benötigt.
Dazu habe ich folgendes definiert:
Durchschnittliche Erzeugung über 3min.
Diese dann unter max. Entladeleistung eingesetzt in die Formel:
else if ((Erzeug-Phaus) > 2500 & SoC > 98) {
maxentlade = 0;

Wenn Durchschnittlich über die letzten 3min abzüglich Hausverbrauch mehr als 2500W zur Verfügung stehen bei SoC 99 oder 100%, dann darf nicht entladen werden.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
borish
Beiträge: 6
Registriert: Mo Jun 13, 2022 7:26 pm

Re: Steuerung SMA SBS

Beitrag von borish »

Hallo zusammen,
@ Becker: Klasse Arbeit, respekt.

Nun meine bescheidene Frage:
Ich habe den Flow SBS 2.5 + 1 x STP in Node-RED importiert.
Im Dashboard unter Speichersteuerung wird die Prognose vom nächsten Tag angezeigt
und nicht von heute. Also Prognose, Bewölkung und Regenwahrscheinlichkeit von morgen

Im Dashboard unter Wetter werden die Daten von heute und morgen korrekt angezeigt


Wer kann helfen?
Gruß Boris
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Re: Steuerung SMA SBS

Beitrag von Becker »

hab den Flow noch mal komplett überarbeitet und bin beim Wetter nun auf Solcast gegangen.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
borish
Beiträge: 6
Registriert: Mo Jun 13, 2022 7:26 pm

Re: Steuerung SMA SBS

Beitrag von borish »

Hallo Becker,
vielen Dank für die Antwort,
Brin gerade viel am probieren und eigene mir das eine und das andere durch Testen an.
Kann man den ganzen Flow mit den neuen Wetter mal zum testen haben?
Becker
Beiträge: 765
Registriert: Mi Okt 07, 2020 4:34 pm

Re: Steuerung SMA SBS

Beitrag von Becker »

Ja stelle ich morgen oder am Wochenende rein mit ein paar Anmerkungen.
openWB series2 Buchse (2021)
go-eCharger HOME+ 22 kW (2022)
hominidae
Beiträge: 1159
Registriert: Di Sep 03, 2019 4:13 pm

Re: Steuerung SMA SBS

Beitrag von hominidae »

Becker hat geschrieben: Mi Mär 22, 2023 8:42 pm Ja stelle ich morgen oder am Wochenende rein mit ein paar Anmerkungen.
...mich würde der Part interessieren, wie Du die Regelung der Speicherladung machst (Ziel-SoC und lade-Stromstärke, evtl sogar Ladespannung) auf Basis der PV-Prognose. Solcast habe ich ja auch am Start, wie Du weisst...allerdings ein Victron System im Einsatz.
Könnetst Du dazu auch ein paar Worte drüber verlieren, oder gar einen Subflow veröffentlichen? :?: :D
Antworten