« Photovoltaik / PV  |

Victron + Node Red - Seite 2

Teilen: facebook    whatsapp    email
Zusammenfassung anzeigen
 1  2 
  •  Puitl
  •   Silber-Award
23.3.2023 - 20.3.2026
38 Antworten | 7 Autoren 38
38
Hat sich schon wer mit Node Red bei seiner Victron-Anlage gespielt?

Würde gerne folgendes umsetzen:
Wenn "AC-In nicht verfügbar" > "DVCC Ladestrombegrenzung = deaktiviert"
Wenn "AC-In verfügbar" > ""DVCC Ladestrombegrenzung = aktiviert > 0A"
(Wenn ich die Begrenzung im normalen Zustand selbst deaktiviere/ändere soll sie auch so bleiben bis eben wieder ein "AC-In Ereignis" auftritt.

Ich bin programmier-technisch ein kompletter Noob^^
Kann mir da wer helfen? 😀

  •  sn0000py
  •   Silber-Award
24.3.2023  (#21)
so nur zur Info, die settings müssen hier settings-user.js benannt werden
und müssen das module.experts = beinhalten und nur eben die Änderungen die man haben will (in meinen Fall das contextStorage)

1
  •  sn0000py
  •   Silber-Award
24.3.2023  (#22)
@Puitl 
Also wenn deine DVCC Ladestrombegrenzung = deaktiviert bedeutet das du 
/Settings/SystemSetup/MaxChargeCurrent  auf 0 setzten willst oder eben auf 200
und im anderen Fall auch auf einen fixen Wert
dann hätte ich glaub ich alles zusammen wie es funktionieren könnte

1
  •  sn0000py
  •   Silber-Award
24.3.2023  (#23)
So und mein PRoblem hab ich auch gelöst, 
ich habe ienfach einen MQTT Input vom victron selbst auf einen virtuellen neu erfunden Namen, der wert dann im ConextStorage file gespeichert und fertig, bei Änderung der PV oder des Verbrauches kann ich dann drauf reagieren (hoffe ich das dann auch alles so funkt :) ) 

1
  •  Puitl
  •   Silber-Award
19.3.2026  (#24)
So nach 3 Jahren widme ich mich mal wieder meinem Wunsch warum ich diesen Thread erstellt habe:
Möchte in Node-Red folgendes umsetzen:
Wenn "Grid-lost/MP im Inverter-Betrieb" > "DVCC Ladestrombegrenzung CCL = 200A"

(Habe CCL im Sommer immer auf 0A damit nur die MPPT MPPT [Maximum Power Point Tracker]´s den Akku laden (DC-feed-In ist aktiv), im Inselmodus würde er mir bei CCL 0A dann eben nicht mehr laden)

Passt das so?


_aktuell/20260319553326.png



_aktuell/20260319927603.png


_aktuell/20260319750813.png



_aktuell/20260319807100.png


Was passiert wenn er vom Inverter-Modus wieder draußen ist? Kann ich dann selbst wieder einen belibigen CCL per Remote-Konsole setzen?

Und:
Was wären die Schritte danach um den Code zu "aktivieren"?

Danke 😀

1
  •  Gawan
  •   Gold-Award
20.3.2026  (#25)

zitat..
Puitl schrieb:

So nach 3 Jahren widme ich mich mal wieder meinem Wunsch warum ich diesen Thread erstellt habe:
Möchte in Node-Red folgendes umsetzen:
Wenn "Grid-lost/MP im Inverter-Betrieb" > "DVCC Ladestrombegrenzung CCL = 200A"

(Habe CCL im Sommer immer auf 0A damit nur die MPPT MPPT [Maximum Power Point Tracker]´s den Akku laden (DC-feed-In ist aktiv), im Inselmodus würde er mir bei CCL 0A dann eben nicht mehr laden)

Passt das so?

Was passiert wenn er vom Inverter-Modus wieder draußen ist? Kann ich dann selbst wieder einen belibigen CCL per Remote-Konsole setzen?

Und:
Was wären die Schritte danach um den Code zu "aktivieren"?

Danke 😀

Ich verwende die ganzen Drag&Drop-Nodes im NR nicht, aber mit einem Funktionsnode ist sowas ein etwas erweiterter Einzeiler 😉
Lässt sich auch mit ChatGPT super umsetzen wenn du mit der Syntax nicht so gut drauf bist

Also du möchtest:

WENN Status == 9   CCL = 200A
SONST CCL = 0A

und jedesmal wenn sich daran was ändert soll er entsprechend umschalten ?


1
  •  Puitl
  •   Silber-Award
20.3.2026  (#26)
Fürs Erste möchte ich WENN Status == 9 CCL = 200A

Wen außerhalb Status == 9 möchte ich den CCL selbst setzen wie ich will

1
  •  Gawan
  •   Gold-Award
20.3.2026  (#27)

zitat..
Puitl schrieb:

Fürs Erste möchte ich WENN Status == 9 CCL = 200A

Wen außerhalb Status == 9 möchte ich den CCL selbst setzen wie ich will

ich mach sowas einfach in einem Function-Node

_aktuell/20260320499419.png

und in dem steht drinnen:

if (msg.payload == 9) {
    msg.payload = 200;
    return msg;
}


d.h. wenn von links der Wert 9 daherkommt setzt er den auf 200 und schickt in rechts wieder raus
"msg.payload" ist der Default-Wert in den Objekten die da in Node-Red herumgeschickt werden

ACHTUNG:   Die Logik schießt JEDESMAL wenn von links ein 9er daherkommt

1
  •  Puitl
  •   Silber-Award
20.3.2026  (#28)
Sehr cool danke dir!
Danach braucht man nur mehr oben auf "Übernahme (deploy) > vollständig" und das Ding ist aktiv?

1
  •  Gawan
  •   Gold-Award
20.3.2026  (#29)

zitat..
Puitl schrieb:

Sehr cool danke dir!
Danach braucht man nur mehr oben auf "Übernahme (deploy) > vollständig" und das Ding ist aktiv?

genau

extrem hilfreich ist das verwenden von DebugNodes - die kannst überall (an jeden ausgang) dazu dranhängen und siehst dann rechts in dem Debug Tab was da genau an Daten hin und hergeschickt wird


_aktuell/20260320500339.png


1
  •  Puitl
  •   Silber-Award
20.3.2026  (#30)

zitat..
Gawan schrieb:

genau

extrem hilfreich ist das verwenden von DebugNodes - die kannst überall (an jeden ausgang) dazu dranhängen und siehst dann rechts in dem Debug Tab was da genau an Daten hin und hergeschickt wird

Den Debug setze ich zum testen ANSTELLE des "Venus settings"?


1
  •  Gawan
  •   Gold-Award
20.3.2026  (#31)

zitat..
Puitl schrieb:

──────..
Gawan schrieb:

genau

extrem hilfreich ist das verwenden von DebugNodes - die kannst überall (an jeden ausgang) dazu dranhängen und siehst dann rechts in dem Debug Tab was da genau an Daten hin und hergeschickt wird
───────────────

Den Debug setze ich zum testen ANSTELLE des "Venus settings"?

nein, den hängst du einfach parallel dazu - dann schickt er das Datenobjekt einmal in die Venus Settings und einmal in den Debugger und zeigt dir was er in die Venus Settings geschickt hat :)

_aktuell/20260320858731.png

EDIT:
Oder zum testen auch nur in den Debug .... da kannst du kreativ sein 😃
 

1
  •  tempo85
  •   Bronze-Award
20.3.2026  (#32)

zitat..
Puitl schrieb: Habe CCL im Sommer immer auf 0A damit nur die MPPT MPPT [Maximum Power Point Tracker]´s den Akku laden (DC-feed-In ist aktiv), im Inselmodus würde er mir bei CCL 0A dann eben nicht mehr laden

Ich würde noch 0 nehmen besser umdi 10.

Denn beim CCL im Netzbetrieb zählt er dem mppt schon mit aber der mppt hält sich nicht daran, soll heißen wenn der mppt 10A liefert also rung 500W wird das Akku laden über AC blockiert. So unmgeht man die waren Meldung. Und sollten alle stricke bezüglich Insel nicht Funktionen Läd der Akku wenigstens mit 500W.


1
  •  Puitl
  •   Silber-Award
20.3.2026  (#33)

zitat..
Gawan schrieb:

ACHTUNG:   Die Logik schießt JEDESMAL wenn von links ein 9er daherkommt

Gerade getestet, funktioniert danke 😀 
Nächste Stufe:
Wenn er wieder weggeht vom Inverter-Betrieb (also alles ungleich 9)
> CCL = jener Wert der davor drin stand.
Sprich der letzte Wert davor müsste wo gespeichert werden.

Das ist schon etwas schwieriger oder? 🙈


1
  •  Gawan
  •   Gold-Award
20.3.2026  (#34)

zitat..
Puitl schrieb:

──────..
Gawan schrieb:

ACHTUNG:   Die Logik schießt JEDESMAL wenn von links ein 9er daherkommt
───────────────

Gerade getestet, funktioniert danke 😀 
Nächste Stufe:
Wenn er wieder weggeht vom Inverter-Betrieb (also alles ungleich 9)
> CCL = jener Wert der davor drin stand.
Sprich der letzte Wert davor müsste wo gespeichert werden.

Das ist schon etwas schwieriger oder? 🙈

nein, ist dann ein Zweizeiler 😁

das geht nur dann nicht ganz auf wenn der Cerbo zwischendurch mal neu gestartet wurde oder sich selbst gestartet hat, dann geht der gespeicherte Wert verloren (bzw. hab ich noch keine Lösung dafür irgendwas persistent im Dateisystem zu speichern ... aber ehrlich gesagt auch noch nicht wirklich danach gesucht)


1
  •  Gawan
  •   Gold-Award
20.3.2026  (#35)
Um einen Wert in den Speicher zu legen nimmst du dieses Kommando:

global.set("NameDesWertes",10);

damit speichert du den Wert in den Kontextdaten unter "global" (geht mit node und flow äquivalent)

_aktuell/20260320316058.png

Beispiel um einen Wert aus msg.payload zu speichern:
global.set("CCL.AlterWert",msg.payload);

mit Punkten kannst du mehrere Ebenen ansprechen
z.b. 
CCL
CCL.AlterWert
CCL.AlterWert.Test
CCL.AlterWert.Prod
etc.

um genau diesen Wert wieder auszulesen nimmst du dann z.B.:
msg.payload = global.get("CCL.AlterWert");

ich hoffe das ist so logisch umzusetzen wie es für mich zu schreiben ist 😌

1
  •  Metzi
20.3.2026  (#36)
[
    {
        "id": "be4ee0e1a9a64797",
        "type": "inject",
        "z": "127c36459fe4709f",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "9",
        "payloadType": "num",
        "x": 150,
        "y": 1760,
        "wires": [
            [
                "d61dcbc6f05ee641"
            ]
        ]
    },
    {
        "id": "d61dcbc6f05ee641",
        "type": "switch",
        "z": "127c36459fe4709f",
        "name": "Erster Ausgang wenn zahl 9 sonst zweiter ausgang",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "9",
                "vt": "num"
            },
            {
                "t": "else"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 470,
        "y": 1800,
        "wires": [
            [
                "1f14eea098e98ff5"
            ],
            [
                "1d01d3e025d23d58"
            ]
        ]
    },
    {
        "id": "fcfbc9f695dff9ba",
        "type": "inject",
        "z": "127c36459fe4709f",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1",
        "payloadType": "num",
        "x": 150,
        "y": 1800,
        "wires": [
            [
                "d61dcbc6f05ee641"
            ]
        ]
    },
    {
        "id": "6d3b0a99543822e1",
        "type": "inject",
        "z": "127c36459fe4709f",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "10",
        "payloadType": "num",
        "x": 150,
        "y": 1840,
        "wires": [
            [
                "d61dcbc6f05ee641"
            ]
        ]
    },
    {
        "id": "1f14eea098e98ff5",
        "type": "change",
        "z": "127c36459fe4709f",
        "name": "setze 0 wenn zahl 9",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "0",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 790,
        "y": 1780,
        "wires": [
            [
                "5236ef2473f8d3e4"
            ]
        ]
    },
    {
        "id": "1d01d3e025d23d58",
        "type": "change",
        "z": "127c36459fe4709f",
        "name": "setze 200 wenn wert nicht 9",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "200",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 820,
        "y": 1820,
        "wires": [
            [
                "5236ef2473f8d3e4"
            ]
        ]
    },
    {
        "id": "5236ef2473f8d3e4",
        "type": "debug",
        "z": "127c36459fe4709f",
        "name": "debug 23",
        "active": true,
        "tosidebar": true,
        "console": false,
&n

1
  •  Metzi
20.3.2026  (#37)
Wennst ohne Funktionnode auskommen willst.
Strg+I dann kannst den Code importieren in Node Red.

_aktuell/20260320983520.png

1
  •  Metzi
20.3.2026  (#38)
[{"id":"be4ee0e1a9a64797","type":"inject","z":"127c36459fe4709f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"9","payloadType":"num","x":150,"y":1760,"wires":[["d61dcbc6f05ee641"]]},{"id":"d61dcbc6f05ee641","type":"switch","z":"127c36459fe4709f","name":"Erster Ausgang wenn zahl 9 sonst zweiter ausgang","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"9","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":470,"y":1800,"wires":[["1f14eea098e98ff5"],["1d01d3e025d23d58"]]},{"id":"fcfbc9f695dff9ba","type":"inject","z":"127c36459fe4709f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":150,"y":1800,"wires":[["d61dcbc6f05ee641"]]},{"id":"6d3b0a99543822e1","type":"inject","z":"127c36459fe4709f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"10","payloadType":"num","x":150,"y":1840,"wires":[["d61dcbc6f05ee641"]]},{"id":"1f14eea098e98ff5","type":"change","z":"127c36459fe4709f","name":"setze 0 wenn zahl 9","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":790,"y":1780,"wires":[["5236ef2473f8d3e4"]]},{"id":"1d01d3e025d23d58","type":"change","z":"127c36459fe4709f","name":"setze 200 wenn wert nicht 9","rules":[{"t":"set","p":"payload","pt":"msg","to":"200","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1820,"wires":[["5236ef2473f8d3e4"]]},{"id":"5236ef2473f8d3e4","type":"debug","z":"127c36459fe4709f","name":"debug 23","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1060,"y":1780,"wires":[]}]

1
 1  2 


Beitrag schreiben / Werbung ausblenden?
Einloggen

 Kostenlos registrieren [Mehr Infos]

Nächstes Thema: Mikrowechselrichter