Hallo zusammen.
Ich habe mich dann auch mal an das Update gemacht.
Da ich ja 3 Victron MPTT Solarregler und den Victron Shunt über die Venus Software von Victron am laufen habe musste ich erneut einige Flows einfügen. Für alle die es ähnlich haben oder es mal ändern wollen hier die benötigten Flows um die Werte mehrerer MPTT Regler und des Shunts nicht nur auf der Pekaway UI zu sehen sondern auch im Nextion Display mit der neuen Software anzeigen zu lassen. Komischerweise werden die Victron Werte in Pekaway immer in zwei unterschiedlich benannte Globale Variablen gespeichert, der Sinn hat sich mir noch nicht eröffnet (ist nur mehr Arbeit ) deshalb schreibe ich die Werte immer in 2 globale Variablen.
Ihr benötigt in Node Red eine MQQT-in für jeden Wert den ihr Anzeigen lassen möchtet, die passenden Adressen bekommt ihr über die Software MQTT Explorer, das ist aber nix neues.
Für die Anzeige Leistung in Watt auf dem Display hängt ihr diese Function Node hinter die passende MQTT Node:
[{"id":"109769479b23884b","type":"function","z":"ce9322f9ea163f40","name":"Set Power","func":"// Wert aus msg.payload lesen und in eine Zahl konvertieren\nlet power = parseFloat(msg.payload.value);\n\n// Überprüfen, ob der Wert gültig ist\nif (!isNaN(power)) {\n let powerFormatted = power.toFixed(2);\n \n // Speichere den Wert in beiden globalen Variablen\n global.set(\"VE_PanelPower\", powerFormatted);\n global.set(\"mppt_pv_watts\", powerFormatted);\n} else {\n node.warn(\"Panel Power payload is NaN\");\n}\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":80,"wires":[[]]}]
Ich habe 3 MPTT und lasse eine Function Node diese Werte addieren und Anzeigen, dafür könnt ihr nachfolgende Function Node hinter die drei MQTT-In hängen, dabei alle drei Nodes zu dieser einen Function Node führen. Benennt dabei die Regler in MQTT jeweils “Laderegler 1” “Laderegler 2” und "Laderegler 3)
[{"id":"4eab6d6602a4e076","type":"function","z":"78b104440326f430","name":"Summiere Power","func":"// Lade bestehende Werte\nlet power1 = parseFloat(global.get(\"power_laderegler_1\") || 0);\nlet power2 = parseFloat(global.get(\"power_laderegler_2\") || 0);\nlet power3 = parseFloat(global.get(\"power_laderegler_3\") || 0);\n\n// Aktuellen Wert setzen\nlet newPower = parseFloat(msg.payload.value);\nif (isNaN(newPower)) {\n node.warn(\"Panel Power payload is NaN\");\n return null;\n}\n\n// Bestimmen, welcher Laderegler den Wert gesendet hat\nif (msg.topic.includes(\"288\")) {\n power1 = newPower;\n global.set(\"power_laderegler_1\", power1);\n} else if (msg.topic.includes(\"289\")) {\n power2 = newPower;\n global.set(\"power_laderegler_2\", power2);\n} else if (msg.topic.includes(\"290\")) {\n power3 = newPower;\n global.set(\"power_laderegler_3\", power3);\n}\n\n// Gesamtleistung berechnen\nlet totalPower = (power1 + power2 + power3).toFixed(2);\n\n// Speichern in globalen Variablen\nglobal.set(\"VE_PanelPower\", totalPower);\nglobal.set(\"mppt_pv_watts\", totalPower);\n\n// Ausgabe für Debugging\nmsg.payload = { totalPower: totalPower };\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":960,"wires":[[]]}]
Und zum guten Schluss die Function Node die zuständig für die Anzeige der Solarspannung ist, auch hier wieder die Node hinter die passende MQTT-In hängen.
[{"id":"d3abc2aa56c76ec0","type":"function","z":"78b104440326f430","name":"Set Power","func":"// Wert aus msg.payload lesen und in eine Zahl konvertieren\nlet volt = parseFloat(msg.payload.value);\n\n// Überprüfen, ob der Wert gültig ist\nif (!isNaN(volt)) {\n let voltFormatted = volt.toFixed(2);\n \n // Speichere den Wert in beiden globalen Variablen\n global.set(\"VE_PanelVolt\", voltFormatted);\n global.set(\"mppt_pv_volts\", voltFormatted);\n} else {\n node.warn(\"Panel Volt payload is NaN\");\n}\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":550,"y":1260,"wires":[[]]}]
EDIT:
Vieleicht noch das: Ihr müsst an den originalen VE Direct Flows nichts ändern, alles so lassen! Da keine Werte über USB kommen kommen auch keine konflikte!