Giter Site home page Giter Site logo

raspberry-pi-docker-node-red's Introduction

Übersicht der Anwendungen: Folie1.JPG

Wie man ein RaspberryPi mit docker und node-red einrichtet

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

Pi updaten

sudo apt update
sudo apt upgrade
sudo reboot

Dauert (vorallem bei älteren Pi) sehr lange.

Docker installieren:

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!

node-red als docker Container starten

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

docker Einstellungen

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)

WLAN

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)

Dependecies in node-red Palette installieren

Externer Zähler im Fronius Wechselrichter

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!)

Variante 1: Einen Balkonwechselrichter als externen PV-Erzeuger registrieren

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.)

Nach dem Import des flows muss noch folgendes gemacht werden:

  • Shelly IP Adresse im Node anpassen

Variante 2: Einen Hardy Barth Ladepunkt als externen Verbraucher registrieren

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.)

Nach dem Import des flows muss noch folgendes gemacht werden:

  • 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

Anzeige im SolarWeb

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

Energiezaehler im Fronius

Anschließend kann man den Unterschied zwischen SolarWeb und dem Fronius Wechselrichter sehen. In dem Fall, wurde ein PV-Erzeuger (Variante 1) eingebunden: Vergleich Fronius Wechselrichter und SolarWeb

WORK IN PROGRESS: Nice to have

Reboot/Shutdown über node-red

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!???

raspberry-pi-docker-node-red's People

Contributors

matthiasos avatar oliossi avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

oliossi

raspberry-pi-docker-node-red's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.