Ich wollte gern das Projekt NibePi mit einem aktuellen Raspian Buster selbst aufsetzen und habe dazu eine Anleitung geschrieben.
Warum? Weil ich gern ein normales R/W System haben wollte, was auf dem aktuellsten Stand ist, um den RPi so auch anderweitig nutzen zu können. Das "NibePi Clean" Image basiert auf Raspian Stretch und ist als "Read only" konfiguriert. Da ich mit Node Red auch noch meine Wechselrichter per Modbus auslese, stieß ich hier irgendwann an die Grenze, da auch Node Red und Node.js veraltert sind.
Ich verwende meinen alten RPi 3B mit RS485 Adapter (Kosten < 50€).
Per VPN kann man so die Wärmepumpe von überall aus steuern inkl. Servicemenü.
Der Stromverbrauch des RPi 3B liegt bei 1,7W.
Als Neukauf würde ich den RPi 2B empfehlen (neu < 35€), der hat weder Wlan noch Bluetooth.
Mein RS485 Adapter: Hersteller JOY-IT, Artikelnummer RB-RS485 (10,50€). Oder USB-RS485-Adapter (3,22€) Link zu Reichelt
** Hinweis: wichtige Fehlerkorrekturen, daher alle alten Versionen gelöscht
Da ich die Nibe Wärmepumpe von Zuhause und unterwegs aus über Node-RED bediene, habe ich zusätzlich noch einige Werte von meiner PV-Anlage in ein Tab integriert:
Hier eine Anleitung und der Flow:
Als erstes muss in den Wechselrichtern Modbus TCP aktiviert werden.
Bei WR ohne Webinterface muss man es über den Sunny Explorer machen.
Anschließend testet man ob der Modbus auch funktioniert:
das hatte bei mir auf Anhieb mit beiden Wechselrichtern geklappt, am besten mit Register 30775 (dort seht ihr dann bei "+1" die Leistung).
Node RED
In der Palette muss "node-red-contrib-modbus" & "node-red-contrib-buffer-parser" installiert werden.
Hier mein Flow für meinen SB3000-TL21 und STP6.0-3AV-40:
Unter Hintergrundwissen findet man für alle möglichen SMA Wechselrichter die Register.
Viele Register sind gleich.
Wichtig: die Daten des Energy Meter (Home Manager 2.0) zieht sich der STP6.0 über Speedwire und nur deshalb kann ich sie über den STP6.0 per Modbus TCP abfragen! Der HM kann nicht per Modbus abgefragt werden, dafür aber anderweitig (siehe Blogeintrag).
Im Webinterface vom STP6.0 muss ein Energymeter konfiguriert sein:
Wenn ihr z.B. zwei Wechselrichter ohne Webinterface und damit auch ohne Zugriff auf das Energy Meter habt, müsst ihr die Register die den Hausanschluss abfragen löschen (der Objektname in der Registerbschreibung beginnt mit "Metering.xxx").
Anzupassen sind: "Modbus Getter" --> "Server" --> IP und Port anpassen.
Die alte Version (durchgestrichen) war technisch nicht korrekt, sie funktionierte zwar erstaunlich gut bis auf zwei Werte: Wenn die Blindleistung negativ wurde oder die Spannung über 655V stieg.
Warum ist das so?
Wir fragen 32 Bit Werte ab s.g. S32 oder U32.
Zitat aus der SMA Anleitung: Ein Modbus-Register ist 16 Bit breit. Für breitere Daten werden zusammenhängende ModbusRegister verwendet und als Datenblock betrachtet. Die Adresse des ersten Modbus-Registers in einem Datenblock ist die Startadresse des Datenblocks. Die Anzahl der zusammenhängenden Modbus-Register ergibt sich aus dem Datentyp und dem Offset zwischen den Registeradressen.
Also S32 = Vorzeichenbehafteter Integer (32 Bit) 0x8000 0000 (NaN) und U32 = Vorzeichenloser Integer (32 Bit) 0xFFFF FFFF (NaN)
D.h. ein Register besteht aus zwei 8 Bit Werten (oder auch zwei x 1 Byte), Beispiel:
Bis ich das verstanden hatte, hat es etwas gedauert (es hat ja auch so funktioniert), noch mal Danke an die Helfer des Node-RED Forums, besonders Stephen McLaughlin.
Vorher habe ich nur einen 16 Bit Wert abgefragt (Quantity 1 und 3 im Beispiel)
Um ein Register korrekt abzufragen und wieder zusammen zu setzen braucht es in NodeRED den "Buffer Parser".
Ich frage zusammenhängende Register der Reihe nach ab, bei zu vielen parallelen Abfragen stürzt der Modbusserver ab!
Im Buffer Parser kann ich die abzufragenden Werte über das Offset bestimmen, sowie den Datentyp (S32 oder U32) und ggf. den Faktor (am FIX_ zu erkennen).
Ohne DC Spannung (nachts) schaltet der Hauptprozessor des WR ab:
Daher bitte nicht wundern, wenn nachts viele Werte auf 0x 8000 0000 - den s.g. NaN (not a number) springen, Dezimal = -2147483648.
Da der SBS 2.5 immer noch keine Firmware für den BYD Speicher bekommen hat, ist er noch nicht integriert. Werde ich dann hoffentlich diesen Monat im Oktober noch nachholen.
Dank eines (oder einiger) pfiffiger Schweden, kann man günstig per Raspberry Pi das Nibe Modbus Modul 40 (~800€) simulieren.
Hier meine Umsetzung in Node-RED für die F1x55:
Ich verwende meinen alten RPi 3B mit RS485 Adapter (Kosten < 50€).
Per VPN kann man so die Wärmepumpe von überall aus steuern inkl. Servicemenü.
Der Stromverbrauch des RPi 3B liegt bei 1,7W.
Als Neukauf würde ich den RPi 2B empfehlen (neu < 35€), der hat weder Wlan noch Bluetooth. Wenn es Wlan sein soll, wie vom Autor empfohlen den RPi ZeroW, den kann man mit 12-5V Adapter in der Wärmepumpe betreiben. Für die normalen RPi reicht die Leistung der internen 12V Versorung nicht aus (zumindest nicht nach Datenblatt), bitte 5,1V Netzteil benutzen.
Mein RS485 Adapter: Hersteller JOY-IT, Artikelnummer RB-RS485 (10,50€). Sollte aber auch mit einem USB-RS485-Adapter klappen (nicht** getestet, 3,30€).
* * * * * * Aktuelle Flows von mir * * * * * * Es muss zuerst eine Funktion nachinstalliert werden: => Palette verwalten => installieren => Suche nach "contrib-calculate" => installieren.
Anleitung Installation: Link zum PDF Anleitung Ergänzung:Link zum PDF / Download LOG.SET Ergänzung Uhrzeit: Die Zeitzone ist auf Schweden voreingestellt, zum ändern in der Konsole: "sudo dpkg-reconfigure tzdata" Vorher wieder Schreibzugriff aktivieren und anschließend wieder nur Lesezugriff aktivieren. Uhrzeit auslesen mit "uptime" in der Konsole.