SD Karte mit Raspberry Imager
flashen, hier direkt ein WLAN angeben, welches man bei der weiteren Einrichtung verwenden will.
(Später kann man dann noch das WLAN einrichten, welches dann Vorort existiert).
Nach der Installation per SSH auf das PI verbinden
sudo apt update
sudo apt upgrade
sudo reboot
Dauert (vorallem bei älteren Pi) sehr lange.
sudo curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
In der Console prüfen ob es funktioniert hat:
docker
Pi in docker Gruppe hinzufügen, dass man Container starten kann als pi user:
sudo usermod -aG docker pi
Anschließend ausloggen und neu einloggen als pi user!
https://nodered.org/docs/getting-started/docker
sudo docker run -d --restart unless-stopped -p 1880:1880 -p 502:502 -v node_red_data:/data --name mynodered nodered/node-red
-d = detached (keine logs in der aktuellen shell)
-it = attached (man sieht alles in der aktuellen shell, kann diese aber dann auch nicht mehr verwenden
-p 1880:1880 (Port von Node-Red mappen und von außen zugänglich machen)
-p 502:502 (Port des ModbusTCP Server mappen und von außen zugänglich machen)
Kontrolle ob der Container läuft:
docker ps
docker volume ls
Im Browser die IP mit Port 1880 an surfen (zB http://192.168.178.40:1800) -> node-red ist erreichbar
Zum Beenden des Containers:
docker rm -f mynodered
Damit beim Start (boot) des Pi auch docker automatisch gestartet wird:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
(Der node-red Container wird immer gestartet wenn docker gestartet wird, wenn "--restart unless-stopped" oben mitgegeben wurde)
Damit das RaspberryPi sich direkt mit dem WLAN am Ort wo man es verwenden will verbindet, muss man vorher die Verbindung mit dem NetworkManager einrichten einrichten:
sudo nmtui
(Manuell müsste es auch gehen, dann muss man eine "<Wifi-Name>.nmconnection" Datei anlegen, siehe https://forums.raspberrypi.com/viewtopic.php?t=360175)
- node-red-contrib-shelly zum Auslesen der PV Erzeugung von einem Shelly (nur benötigt für Variante 1)
- node-red-contrib-modbus zum Schreiben der Daten mittels Modbus in den Fronius Wechselrichter
- node-red-contrib-buffer-parser zum einfachen Konvertieren von Registern zu lesbaren Werten und zurück (optional)
Damit im Fronius SolarWeb neben dem Fronius Wechselrichter auch ein externer Erzeuger (zB Balkonkraftwerk) oder Verbraucher (zB Ladepunkt) berücksichtigt wird, muss man diese dem Fronius Wechselrichter als externen Energiezähler (GEN24) zugänglich machen.
Dazu wird ein ModbusTCP Server angelegt der den Energiezähler so simuliert, dass der Fronius Wechselrichter sich aus dem Register dieses Modbus Servers die Werte holen kann.
In die Register des Modbus Server muss man neben Standardwerte zur Identifikation als Energiezähler noch den benötigten AC Power value (Total) [W]
des Erzeugers/Verbrauchers in die dafür vorgesehen Register schreiben.
Die Register Mappings können hier von Fronius runtergeladen werden, oder siehe im Anhang.
(Beachten ob im Fronius Wechselrichter "Float" oder "Int+SF" eingestellt ist!)
In node-red den Flow (angelehnt an diesen flow aus dem node-red Forum) importieren. Nach einem boot/deployment werden automatisch die einmalig benötigten Daten in den Modbus Server geschrieben. Außerdem wird jede Sekunde beim Shelly die Erzeugungsdaten abgefragt und diese (muss negativ sein, da Erzeugung) in den Modbus Server geschrieben. (Es stehen weitere lesende Operationen im flow bereit, diese werden aber für den Anwendungsfall nicht benötigt und sie nur zur Kontrolle da.)
- Shelly IP Adresse im Node anpassen
In node-red den Flow (angelehnt an diesen flow aus dem node-red Forum) importieren. Nach einem boot/deployment werden automatisch die einmalig benötigten Daten in den Modbus Server geschrieben. Außerdem wird jede Sekunde ein http request an die Ladesäule gesendet und die Verbrauchsdaten abgefragt und diese (muss positiv sein, da Verbrauch) in den Modbus Server geschrieben. (Es stehen weitere lesende Operationen im flow bereit, diese werden aber für den Anwendungsfall nicht benötigt und sie nur zur Kontrolle da.)
- http request Adresse im Node überprüfen, müsste aber generisch für Anwendungsfälle mit nur einem Ladepunkt so passen
- wenn die IP Adresse
http://ecb1.local
nicht aufgelöst werden kann, muss die tatsächliche IP der Ladestation eingetragen werden
Im Web Interface des Fronius Wechselrichters muss man nun noch den Modbus Server als Energiezähler hinzufügen:
- RaspberryPi IP Adresse mit Port 502 und UnitID 3
Anschließend kann man den Unterschied zwischen SolarWeb und dem Fronius Wechselrichter sehen.
In dem Fall, wurde ein PV-Erzeuger (Variante 1) eingebunden:
Damit man das Raspberry Pi über node-red neustarten und ausschalten kann, muss man den Flow importieren. Der User, der den Docker Container startet hat aber leider nur die Rechte einen Reboot zu machen. Für Shutdown braucht speziell die Erlaubnis den shutdown Befehl auszuführen. -> visudo!???