Wartungslauf Dieselgenerator, Node Red Skript zum abschalten der MPPTs gesucht

Hallo in die Runde

ich such eine Lösung , bzw Node Red Skript für folgendes Problem:

In einer Offgrid Solaranlage erfolgt alle 28 Tage der routinemäßige Wartungslauf des Dieselgenerators welche über den Cerbo GX gesteuert ist. So weit so gut.

Damit der Dieselgenerators die ganze Zeit auf Volllast läuft ist es notwendig, dass die Batterien keinen zu hohen SOC aufweisen noch dass die beiden SmartSolar MPPT RS zeitgleich laden.

Hat jemand hierfür schon ein mal ein Node Red Skript geschrieben, dass er mir zur Verfügung stellen könnte, bzw. eine andere technische Lösung?

Danke

hallo,
wenn du nicht ueber die multis laedst, einfach den dvcc-ladestrom auf 0 stellen.

wenn du ueber die multis laedst, kannst ueber das control node solar fuer die solarcharger jeden einzelnen mppt ausschalten.

tschuess

[
{
“id”: “2e38b39b4ee82905”,
“type”: “victron-output-solarcharger”,
“z”: “1de424fd10efcf68”,
“service”: “com.victronenergy.solarcharger/0”,
“path”: “/Mode”,
“serviceObj”: {
“service”: “com.victronenergy.solarcharger/0”,
“name”: “MPPT 1”
},
“pathObj”: {
“path”: “/Mode”,
“type”: “enum”,
“name”: “Charger on/off”,
“enum”: {
“1”: “On”,
“4”: “Off”
},
“writable”: true
},
“initial”: “”,
“name”: “”,
“onlyChanges”: false,
“x”: 710,
“y”: 100,
“wires”:
},
{
“id”: “78c3ea8588861d0d”,
“type”: “victron-output-solarcharger”,
“z”: “1de424fd10efcf68”,
“service”: “com.victronenergy.solarcharger/1”,
“path”: “/Mode”,
“serviceObj”: {
“service”: “com.victronenergy.solarcharger/1”,
“name”: “MPPT 2”
},
“pathObj”: {
“path”: “/Mode”,
“type”: “enum”,
“name”: “Charger on/off”,
“enum”: {
“1”: “On”,
“4”: “Off”
},
“writable”: true
},
“initial”: “”,
“name”: “”,
“onlyChanges”: false,
“x”: 710,
“y”: 140,
“wires”:
},
{
“id”: “e8bb639199be0eb0”,
“type”: “function”,
“z”: “1de424fd10efcf68”,
“name”: “function 1”,
“func”: “var MPPT=1;\nvar DATE = new Date();\nvar SEK = DATE.getTime()/1000;\nvar START=context.SEK;\nvar I=global.get("MPPT"+MPPT+"_I");\nvar TO=global.get("MPPT_TO")*1;\nvar PAUSE=global.get("MPPT_PAUSE")*1;\nvar ST = 1;\nvar debug="";\nvar T = SEK - START;\n//node.warn(T+" "+PAUSE);\nvar ON=global.get("MPPT_ON")*1;\nvar PPV;\nif ((PPV=global.get("pv_power"))==null) PPV=0;\nif (I<0 && ON==0 && PPV==0) {\n ST = 4;\n if (T<TO) return;\n DEBUG="I<0 "+I;\n} else {\n if (I>0) {\n return;\n }\n var ST1 = global.get("MPPT"+MPPT+"_ON");\n// node.warn("ST1 "+ST1);\n if (ST1==1) {\n return;\n }\n if (T>PAUSE || ON!=0) {\n// node.warn("T>PAUSE ");\n ST=1;\n context.SEK=SEK;\n DEBUG="T>60";\n } else {\n if (ST1==4) {\n return;\n }\n ST1 = global.get("MPPT"+MPPT+"_OP");\n if (ST1==0) return;\n DEBUG="ausschalten";\n ST=4;\n }\n}\nmsg.payload=ST;\nmsg.debug=DEBUG;\nreturn msg;”,
“outputs”: 1,
“timeout”: “”,
“noerr”: 0,
“initialize”: “// Der Code hier wird ausgeführt,\n// wenn der Node gestartet wird\nvar DATE = new Date();\nvar SEK = DATE.getTime()/1000;\ncontext.SEK=SEK;\n”,
“finalize”: “”,
“libs”: ,
“x”: 300,
“y”: 100,
“wires”: [
[
“cb7d202b8ba4f155”,
“2e38b39b4ee82905”
]
]
},
{
“id”: “797e26f78b2743bd”,
“type”: “function”,
“z”: “1de424fd10efcf68”,
“name”: “function 2”,
“func”: “var MPPT=2;\nvar DATE=new Date();\nvar SEK = DATE.getTime()/1000;\nvar START=context.SEK;\nvar I=global.get("MPPT"+MPPT+"_I");\nvar TO=global.get("MPPT_TO")*1;\nvar PAUSE=global.get("MPPT_PAUSE")*1;\nvar ST = 1;\nvar debug="";\nvar T = SEK - START;\n//node.warn(T+" "+PAUSE);\nvar ON=global.get("MPPT_ON")*1;\nvar PPV;\nif ((PPV=global.get("pv_power"))==null) PPV=0;\nif (I<0 && ON==0 && PPV==0) {\n ST = 4;\n if (T<TO) return;\n DEBUG="I<0 "+I;\n} else {\n if (I>0) {\n return;\n }\n var ST1 = global.get("MPPT"+MPPT+"_ON");\n// node.warn("ST1 "+ST1);\n if (ST1==1) {\n return;\n }\n if (T>PAUSE || ON!=0) {\n// node.warn("T>PAUSE ");\n ST=1;\n context.SEK=SEK;\n DEBUG="T>60";\n } else {\n if (ST1==4) {\n return;\n }\n ST1 = global.get("MPPT"+MPPT+"_OP");\n if (ST1==0) return;\n DEBUG="ausschalten";\n ST=4;\n }\n}\nmsg.payload=ST;\nmsg.debug=DEBUG;\nreturn msg;”,
“outputs”: 1,
“timeout”: “”,
“noerr”: 0,
“initialize”: “// Der Code hier wird ausgeführt,\n// wenn der Node gestartet wird\nvar DATE = new Date();\nvar SEK = DATE.getTime()/1000;\ncontext.SEK=SEK;\n”,
“finalize”: “”,
“libs”: ,
“x”: 300,
“y”: 140,
“wires”: [
[
“aed6a90be840c290”,
“78c3ea8588861d0d”
]
]
}
]

Hallo,
Wenn man den Wartungslauf auf morgens z.b 4:00 stellt sind doch in aller Regel alle Bedingungen erfüllt.

Ich würde einfach das gleiche Signal, welches den Generator startet, nutzen um den Remote-Kontakt der MPPTs zu öffnen, ganz ohne komplizierte Programmierung.

hallo,
das geht nicht bei allen mppts!

tschuess

Aber bei den MPPT RS die DirkW hat!

hallo,
stimmt, die haben eine entsprechende bruecke, die grossen mppts >=60A auch.

tschuess

Hallo in die Runde

und Danke für die vielen Rückmeldungen und an Ferdinand für das Skript.…

Noch ein paar Details:

4KW Diesel lädt über MP2 8k, 8xUC5000, Diesel lief diesen Winter außerhalb des Wartungslaufs 4h! 2x MPPT RS 200A, 23KW PV Tagesstrombedarf ca 8KW. Echtes Off-Grid…

Also wenn Menschen in der Nähe des Diesels schlafen ist 0400 als Startzeit nicht die gewünschte Lösung…sozialverträglich wurde 0800-1000 gewählt.

Das Pylontech BMS fängt bei den magischen 89% an herunterzuregeln, sprich es muss ein ausreichend niedriger SOC vorhanden sein (ca 70%) damit sich der Diesel am Folgetag 2h lang unter Volllast austoben kann. Dazu wäre es ideal am Vortrag den SOC auf einstellbare (ca. 80% zu begrenzen) und am Tag des Wartungslaufs komplett bis zu dessen Ende abzuschalten. Die MPPT RS beim Wartungslauf abzuschalten mag im Winter gehen, im Sommer wird ab 6:30 schon kräftig geladen und die beiden MPPT RS gewinnen fast immer.

@ Matthias: Der Generator wird mit zwei Finder 80.51.0.240 als Einschaltwischrelais gesteuert.
Da müsste man noch was dazu bauen um die MPPT RS abzuschalten, es bräuchte einen Öffner bei Generatorbetrieb ein

Gruß

Dirk

hallo,
du kannst die mppts mit zusaetzlichen nodes zeitgesteuert oder soc-gesteuert abschalten.

wenn du aber keine moeglichkeit hast, den strom zu verbrauchen, kannst du den soc auch nicht absenken. aber du koenntest einen heizluefter oder auch mehrere anschliessen, um den generator zu belasten.

tschuess

Hallo Ferdi,

danke für die Tipps.
Ich schau mir die Möglichkeiten mit Node Red mal die Tage an wie auch dein Skript.

Die SOC Absenkung erfolgt über den Nachtverbrauch im Haus…der ist aber nicht so sehr hoch.
An einen Heizlüfter /Warmwasserheizung per einen Shelly als Last zu steuern hatte ich auch gedacht.

Im Augenblick werden die MPPT am Vortag manuell am Schalter ausgeschaltet und an Ende des Wartungslaufs wieder eingeschaltet.

Ein zu großer Automatisierungsgrad ist von Seiten der Bewohner (leider) nicht gewünscht

Gruß
Dirk

Hallo @DirkW ,

wahrscheinlich würde ich die Node node-red-contrib-cron verwenden und von dort anschließend z. B. per MQTT die PV-Regler in den gewünschten Zustand versetzen.

Über den Cronjob könntest Du auch das Ein- und Ausschalten des Generators wie auch die Wiederinbetriebnahme der PV-Regler steuern.

Viele Grüße
Oliver

Hi Ferdi,

ich bekomme Syntaxfehler beim importieren in Node Red.
Kannst du bitte den Flow nochmals als Fließtext posten.

Tausend Dank

Gruß
Dirk

hallo,
du darfst nur den teil von der 1. rechteckigen klammer bis zum ende importieren!

tschuess

Hallo Ferdi,

Natürlich nur [ bis ] :wink:
da sind zu viel CR im Code, auch wenn ich dir raus mache stoße ich an irgendwelche Parser Fehlermeldungen. Magst du dir das nochmals in einer ruhigen Minute anschauen?

Gruß
Dirk

Du kannst den kompletten Code mit Fehlerbeschreibung an KI als Aufgabe stellen… funktioniert prima. Wenn nicht auf Anhieb dann immer wieder die Fehlermeldung an KI.

Ich hoffe auf ein einfaches Copy & Paste :wink:

hallo,
ich habe mir das mal angesehen, das problem ist, dass das forum den flow nicht richtig ausgibt. das problem sind die ankreuzfelder, die das forum im flow darstellt! und ich habe keine ahnung, warum das so ist.

aber es sieht so aus, dass [ und ] durch ([ ]) ersetzt wird! du kannst den code also auch entsprechend editieren.

ich habe dir einen flow, bei dem ich die mppts ein- und ausschalte mal exportiert.

flows (19).zip (2,6 KB)

anstatt der funktion um die mppts ein und aus zu schalten, kannst du natuerlich auch einen switch oder einen digitalen eingang mit schalter benutzen.

copy & paste funktioniert wohl mit flows nur eingeschraenkt.

tschuess

Hi Ferdi,

danke fürs nochmals nachschauen…

Gruß

Dirk