Dienstag, 29. Dezember 2020

NibePi reloaded

[2021: Flows überaltert, daher gelöscht]

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.

Anleitung V2

Nibe Flow vom 11.01.2021 **

Anleitung um wichtige Werte im 2 Sekunden Takt abzufragen:

PDF & Download LOG.SET

 

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 

Anleitung vorhandenen Flow löschen & neuen importieren

Sonntag, 22. November 2020

Inbetriebnahme SBS2.5 mit BYD HVS 7.7

Ich durfte als einer der ersten die Kombination (außerhalb der Hersteller Labore) in Betrieb nehmen, als s.g. Betatester.

Im Prinzip läuft die Kombination einwandfrei, solange die Batterie nicht in den Schlafmodus geht (100% voll oder komplett leer).

Nachtrag: nach 2 Wochen bekam ich eine neue Beta Firmware für den Speicher, nun läuft die Kombination endlich richtig.

Die enge Zusammenarbeit mit dem Produktmanagern von SMA und BYD China kann ich nur loben. 

* * * Ich habe ein kleines FAQ zur Inbetriebnahme geschrieben: Link zum pdf  * * *

Hier die Integration in NodeRED:


 

 

 

 

 




















 

 

Mit Anpassung des restlichen PV Flows: Download 

Für Node.js 12 mit 64bit Register: Download 

Sonntag, 4. Oktober 2020

Modbus Integration in NodeRED von SolarEdge

Ein Freund hat einen SolarEdge Hybridwechselrichter und fragte mich ob ich ihm auch so eine Anzeige bauen kann. 

Er besitzt den SE10K-RWS StorEdge Hybrid 48V und den Energiezähler Modbus SE-MTR-3Y-400V-A.

Das Ergebnis:


Der Flow: Download

Sonntag, 13. September 2020

Modbus Integration in Node-RED von SMA

[2021: Beitrag überaltert, Flows entfernt]

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:

kostenloses Testprogramm  / Anleitung von SMA

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.


Sonntag, 19. Juli 2020

Aufrüstung zum KfW40+ Haus durch Speicher

Ich habe den BYD B-Box Premium HVS 7.7 Batteriepeicher mit dem Sunny Boy Storage 2.5 installiert:



Leider kann er noch nicht benutzt werden, da es keine Firmware für den SBS gibt, nun heißt es warten bis September.

Donnerstag, 25. Juni 2020

Erweiterung der Photovoltaikanlage

Die 12 Module (3,36kWp) vom Dach sind auf die Garage gekommen und auf´s Dach 18x LG* 355Wp (6,39kWp) = 9,75kWp.




Ich habe den Sunny Tripower 6.0 verbaut, so dass jetzt max. 3+6kW "verarbeitet" werden können.
Bei Sonne Wolken Mix konnte ich kurzzeitig 9kW sehen.
Bei dauer-Juni-Sonne 8,1kW. Der neue String lag dabei bei 87%.
Die Module auf der Garage haben leider etwas eingebußt da bis 15:15 Uhr teilverschattet und nur noch 15°.

*LG355N1C-V5 NeON 2 

Montag, 1. Juni 2020

IT-Fachartikel: Fernsteuerung Nibe Wärmepumpe

[2021: Beitrag überaltert, Links entfernt]

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. 

Danach Flow importieren: 

siehe Blogeintrag "NibePi Reloaded"
 
-------------------------------------------------------------------------------------------------

Anleitung InstallationLink 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.

Link zu Github (vom Autor)
Anschluss an der WP (alte Seite vom Autor)

** Nachtrag: USB-Adapter klappt, allerdings muss in der Konfig auf USB umgestellt werden:

usb

Freitag, 29. Mai 2020

IT-Fachartikel: Wireguard VPN mit Dual Tunnel IPv4 & IPv6

Da der Hausbau schon lange beendet ist und ich keinen zweiten Blog eröffnen will, werde ich hier nun bei Gelegenheit Fachartikel erstellen.

Seit Jahren verwende ich nun schon Wireguard VPN und bin begeistert.

Ich habe sehr lange versucht einen VPN Tunnel zu bauen der dual läuft, also per IPv4 & IPv6 erreichbar ist und auch im Tunnel beides überträgt. Letzteres habe ich lange nicht geschafft.

Diese Anleitung richtet sich an Wireguard Nutzer, die bereits einen IPv4 Tunnel betreiben und sich grundsätzlich auskennen mit Wireguard, Pi-Hole und Netzwerkeinstellungen.

Die erste Einrichtung habe ich damals nach dieser Anleitung durchgeführt:
Link Github / Link Github 2
Mit dem Script aus Link 2 kann man schnell viele Clienten anlegen inkl. QR-Codes, anstatt alle Schlüsselpaare manuell zu erstellen.

Ich verwende eine FritzBox welche jedem Netzwerkgerät neben der öffentlichen auch eine private IPv6 zuteilt, das muss man jedoch einstellen unter: Heimnetz - Netzwerk - Netzwerkeinstellungen - IPv6-Konfiguration:
gelber Kasten











(Als loker DNS Server trägt man später unten die IPv6 Adresse des Raspberry ein, um Pi-Hole für IPv4 & IPv6 zu nutzen.)

So bekommt jedes IPv6 fähige Netzwerkgerät mindestens 3 Adresse:
1. öffentlich, beginnt mit 2003: (bei der Telekom, Providerabhängig)
2. privat, beginnt mit fd00: (ich habe mich für den Prävix fd00:aaaa: entschieden)
3. link lokal, beginnt mit fe80: (wird sich immer selber von jedem Gerät zugewiesen)
Siehe auch Bereiche im Link: Erklärung

Als erstes öffnet man  /etc/dhcpcd.conf und stellt um auf eine feste, aus der MAC-Adresse generierte IPv6 (oberer Pfeil)













wenn man diese hat (neu starten, "ip a"), trägt man sie ein (unterer gelber Pfeil).

Die IPv4 Adresse habt ihr wahrscheinlich schon fest vergeben, wenn ihr Pi-Hole bereits nutzt, genauso wie Router & DNS. (DNS 127.0.0.1 bedeutet dass der Raspberry selber der DNS Server ist, das stellt PiHole bei der Konfiguration so ein).

Als nächstes kann man in /etc/sysctl.conf  IPv6 Forwarding aktivieren (langer gelber Pfeil), IPv4 Forwarding müsste schon aktiviert sein wenn man Wireguard mit IPv4 nutzt (kurzer gelber Pfeil):


 










Nun kann man die wg0.config anpassen indem man sie mit IPv6 Adressen bestückt & und die Firewall "iptables6" anpasst (alles gelb markiert):










Die IP Adressen für den Tunnel sind von mir frei gewählt aus dem privaten Bereich (192.168.99.x & fd08:x), wichtig ist, dass sie aus einem anderen Bereich sind als die Netze, die ihr miteinander verbindet (FritzBox klassisch 192.168.178.x & fd00:x)

Wireguard neu starten (sudo wg-quick down wg0 & sudo wg-quick up wg0) und schauen ob es keine Fehlermeldung gibt.

Abschließend die Portweiterleitung bzw. Öffnung (51820 UDP) in der FritzBox für IPv4 & IPv6 aktivieren, darauf achten dass die richtige IPv6 Interface-ID eingetragen ist ! 














Pi-Hole müsst ihr ggf. noch mal neu konfigurieren mit "pihole -r".
Als letztes die Konfig auf den Clienten anpassen, hier ein Beispiel:












 
Man kann zwei identische Profile anlegen*:
1. IPv4 - Endpunkt z.B. xy.myfritz.net (man wird per IPv4 verbunden)
2. IPv6 - Endpunkt  z.B. xy.dynv6.net (man wird per IPv6 verbunden)
Die restliche Konfig bleibt gleich.
Man kann so z.B. in einem reinen IPv4 Netz (wie im Moment bei O2) durch den Wireguard Tunnel das Internet per IPv4 und IPv6 benutzen inkl. Pi-Hole.

* gilt natürlich nur wenn man Zuhause eine echte IPv4 Adresse bekommt

-------------------------------------------------------------------------------------------

Man kann verschiedene Clienten Profile anlegen und diese anschließend als QR-Code bereit stellen zum schnellen abscannen per Handy/Tablet.
1. Profile manuell in Ordnern anlegen z.B. in Dokumente/Profil/profil.config
2.  "sudo apt-get install qrencode"
3. z.B. cd /home/pi/Documents/Handy1
4. qrencode -t ansiutf8 < handy1_IPv4.conf   => QR Code wird in der Konsole angezeigt (zum testen)
5. qrencode -o IPv4.png < handy1_IPv4.conf => QR Code wird als .png gespeichert