Nulleinspeisung DIY mit Balkonsolar

Hallo zusammen,

mein erster Beitrag, ich stelle mich mal kurz vor: bin der Johannes aus Kassel, der aber ursprünglich aus dem Saarland kommt. Ich baue Verbrenner auf Elektro um und helfe anderen dabei es mir gleich zu tun. Ich betreibe das openinverter Forum, das sich mit letzterem Thema beschäftigt.

So, nun zum Thema. Wir haben seit 2014 eine Balkon-Anlage mit ca. 600W Süd/West die ich noch um 300W Ost erweitert habe (auf einem Garagendach). Den Strom kann ich mit dem E-Auto ganz gut nutzen aber allein schon im Namen der Wissenschaft würde ich das gerne noch steigern.

Ich habe aus einem alten Projekt noch ca. 20 kWh an LFP Akkus übrig (ziemlich malträtiert, wahrscheinlich sinds in Wirklichkeit eher 10-15 kWh). Also der Posten wäre schonmal abgedeckt. BMS ist auch vorhanden.

Erste Baustelle wäre Erfassung der Leistung am Anschlusskasten. Wir haben da einen digitalen Zähler mit Rücklaufsperre (eBZ DD3 BZ06 ETA), nur dessen Kommunikationsprotokoll ist mir nicht bekannt. Findet sich das irgendwo? Alternativ würde ich ein Messgerät installieren, das sich in mein WLAN einbucht. Finde ich aber keins, übersehe ich was? Letzte Alternative wäre der komplette Selbstbau, da ich ohnehin Wechselrichter baue kenne ich mich mit Strom- und Spannungsmessung ganz gut aus.

Letzte Baustelle ist dann ein möglichst günstiger 24 oder 48V Batteriewechselrichter, den ich auch per WLAN (zur Not über ein ESP-Modul) steuern kann. Was gibt es da Erschwingliches?

So jetzt schau ich mal weiter im Forum, vielleicht ist da ja das ein oder andere schon beantwortet. Komische Reihenfolge, ne?

Ich antworte mir schonmal selber :wink:
Das Protokoll vom eBZ Zähler scheint einem Standard zu folgen. Habe auch mal gerade die Kamera oben drauf gehalten und in der Tat pulst die IR LED im Sekundentakt. Da werde ich morgen mal mit Phototransistor und Scope anrücken. Und einem seriellen Kabel.

Hallo Johannes,

du hast ein cooles Projekt mit openinverter :+1:

Die Zähler kannst du mit einem IR Lesekopf auslesen und z.B. in ein Smarthome einbinden. Volkszähler ist z.B. so ein Projekt. Ansonsten gibt es 3-phasige Zähler die induktiv arbeiten, z.B. Shelly 3EM oder auch andere Stromzähler die mit Modbus arbeiten und mit einem Raspi oä. ausgelesen werden können. Je nach Wechselrichter gibt es auch passende Zähler um Überschussladen zu bewerkstelligen.

Hybrid-WRs gibt es eine Menge. Es kommt darauf an was du vorhast. Da ist auch hier im Forum eine Glaubensfrage :wink:

Hallo und danke!

Anforderung an den Wechselrichter: billig! Ob er evangelisch oder katholisch ist, ist mir egal. Ich bastele auch gerne etwas mehr statt für rundum-sorglos zu bezahlen

Es muss kein Hybrid-WR sein, kann aber. Letzten Endes soll er nur Leistung x aus der Batterie holen bzw. da rein tun. So Größenordnung 500-1000W

Ok, den Anfang habe ich schonmal gemacht. Einen Phototransistor aus der Bastelkiste mit Montageband auf den Zähler geklebt, dann 10m Klingeldraht durchs Treppenhaus bis zum Steckbrett. 15k Pull-Up, dann zwei mal durch nen TTL Inverter, USB-Serial-Kabel und ein Terminalprogramm 9600 7E1 und schon sehe ich:

/EBZ5DD3BZ06ETA_107

1-0:0.0.0255(1EBZ0100200608)
1-0:96.1.0
255(1EBZ0100200608)
1-0:1.8.0255(007306.09759253kWh)
1-0:16.7.0255(000179.47W)
1-0:36.7.0255(000044.82W)
1-0:56.7.0255(000134.65W)
1-0:76.7.0255(000000.00W)
1-0:32.7.0255(232.6V)
1-0:52.7.0255(233.1V)
1-0:72.7.0255(232.9V)
1-0:96.5.0255(001C0104)
0-0:96.8.0
255(064F18F0)
!

Muss ich morgen mal schauen was er rausgibt, wenn die Sonne scheint.

Jetzt fehlt dir nur noch ein ESP8266 am anderen Ende deines IR-Lesekopf und schon hast du dieses Projekt gebaut: https://github.com/mruettgers/SMLReader

Danke, schon passiert. Ich habe eh schon so eine openinverter Web-Oberfläche und habe es da rein gebaut.

Anbei mal ein kleiner Log von heute morgen. Echt Wahnsinn was man da alles rückschließen kann. Ich könnte jetzt einmal durch die Wohnung gehen und eine Tabelle machen, welches Gerät an welcher Phase wieviel Leistung zieht. Dann kann man aus den Lastsprüngen rückrechnen, was da passiert...

Beispiel heute morgen: Kaffeemaschine (gute alte, mit Heizplatte, 800W), dann den Log gestartet. Wenig später Kaffee fertig, aber Heizplatte taktet noch -> Johannes hat 2 Tassen Kaffee getrunken (ließe sich auch aus der Kochdauer schließen). Wenig später ist die Maschine aus und eine kleine, kurze Last (ca. 100W) wird gefolgt von einer längeren größeren Last (850W) -> Johannes hat sich noch eine Scheibe Brot geschnitten und in den Toaster gesteckt.

Immerhin, was ich mir dann drauf geschmiert habe, sieht man nicht :stuck_out_tongue:

Man sieht auch wie sich die PV langsam reinschleicht. Traurige Erkenntnis: unter 0W zeigt der Zähler nicht an, weder Einzelphasen noch Gesamt. Also meine PV-Leistung werde ich nicht loggen können. Aber egal, für eine 0W (oder besser 10W) Regelung müsste es reichen. Also den Bezug auf 10W drücken bzw. auf 10W anheben.

EDIT2: zeigt doch negative Leistung an, aber der ESP macht positive draus. Mann, mann.

Da ich zu kniggerich bin um einen raspi oder ähnliches immer durchlaufen zu lassen, werde ich alles auf dem ESP implementieren. Erstmal werde ich ihn alles auf meinen ohnehin laufenden webserver loggen lassen, weil Rohdaten sind ja geil. Dann muss ich mal schauen, wie ich das Auto-Ladegerät und einen zusätzlichen Batterie-WR noch ins WLAN bekomme. Das Auto muss ich eigentlich nur ein/aus schalten, unter ca. 1 kW lädt es eh nicht und somit immer mehr als die verfügbare PV Leistung.

EDIT: kurzer Hinweis: in der ESP Core Lib ist das parseFloat-Problem noch nicht behoben. parseFloat() hat Probleme bei zu vielen Dezimalstellen, wie beim Energiezähler der Fall. Habe es von Hand reingepatcht. https://github.com/arduino/ArduinoCore-API/issues/129

Hallo und danke!

Anforderung an den Wechselrichter: billig! Ob er evangelisch oder katholisch ist, ist mir egal. Ich bastele auch gerne etwas mehr statt für rundum-sorglos zu bezahlen

Es muss kein Hybrid-WR sein, kann aber. Letzten Endes soll er nur Leistung x aus der Batterie holen bzw. da rein tun. So Größenordnung 500-1000W
nimm einen Sun 1000 mit Limiter.
nimm einen Sun 1000 mit Limiter.
Habe ich mir angeschaut, aber nicht alles verstanden. Also soweit klar: Er kann die Leistung begrenzen, die aus dem Akku (oder PV) kommt, so dass 0-Einspeisung erfolgt. Allerdings nur auf einer Phase.

Fragen: wie wird der Akku wieder aufgeladen? Gibt es eine Kommunikationsschnittstelle, wo ich die Leistung einfach vorgeben kann?

Schaue mir noch dieses Teil an: https://www.ebay.de/itm/224568011331

Das kann auf jeden Fall den Akku auch laden und hat eine RS232-Schnittstelle. Wie die genau funktioniert, habe ich noch nicht gefunden.

Daten von meinem EBZ werden jetzt schonmal in die Datenbank geschrieben und ich habe eine html-Seite zusammengehackt, die mir in Echtzeit die Werte wieder rausholt. Anbei noch zwei Fotos von der "Hardware" ![20890=3994-Bildschirmfoto-vom-2022-03-24-14-28-52.png|1596x731](upload://9kdVD566b0RQoAggo7oMlHAwQFD.png)

Und nochmal in Ordentlich. Die 500mW fürs ESP Modul kommen vom Allgemeinstrom, ging nicht anders :?

Mein bevorzugter Inverter zur Deckung der Grundlast (ohne Sonne) ist der Soyosource GTN1200 plus etwas Software: https://github.com/syssi/esphome-soyosource-gtn-virtual-meter

Geladen werden muss die Batterie über ein anderes Gerät (idR einem Solar-Laderegler). Der Inverter ist nur für das Leeren der Batterie zuständig. :wink: Der Limiter ist hilfreich, wenn man den Stromzähler als Datenquelle nutzt um den Bedarf zu bestimmen. Der Inverter fährt daraufhin hoch und deckt diesen Bedarf (sofern er unter 900W liegt = max. Leistung des GTN1200). Gibt es keinen Bedarf (ist also dein Stromzähler im negativen Bereich unterwegs) braucht er nichts tun und liefert 0 Watt.

Fragen: wie wird der Akku wieder aufgeladen? Gibt es eine Kommunikationsschnittstelle, wo ich die Leistung einfach vorgeben kann?

Schaue mir noch dieses Teil an: https://www.ebay.de/itm/224568011331

Das kann auf jeden Fall den Akku auch laden und hat eine RS232-Schnittstelle. Wie die genau funktioniert, habe ich noch nicht gefunden.
Das von dir gefundene Gerät gliedert sich voraussichtlich in die Gruppe der PIP-Solar-Inverter ein. Ein hier im Forum bekannter Hersteller trägt den Namen "MPP Solar". Mir fehlt es auch an Übersicht um herleiten zu können, welcher Hersteller von welchem Hersteller kopiert und wann es sich um ein Whitelabel-Produkt handelt. Hier im Forum finden sich einige Teilnehmer die hier eine gute Eingruppierung liefern können. Das Protokoll auf der RS232-Schnittstelle ist bekannt. Leider gibt es pro Firmware-Version/Hersteller unterschiedlichste Ausprägungen. Ich bin mir aber sicher, dass du sie in den Griff bekommst, weil der Verkehr sehr simpel ist. Hier findest du eine Implementierung: https://github.com/esphome/esphome/blob/dev/esphome/components/pipsolar/pipsolar.cpp

Sehr stark vereinfacht schickt der Client periodisch den String "QPIGS" an den Inverter. Dieser antwortet mit eine Kette an Zahlen inkl. Trennzeichen (ein Gemisch aus Ints, Floats und Bools). Diese werden zerpflueckt und mit Hilfe eines scharfen Auges mit einem Namen versehen. Darueberhinaus gibts es von manchen Herstellern PDFs, welche die unterschiedlichen Befehle mäßig beschreiben. Hier eine weitere beliebte Python-Implementierung, welche die Daten via MQTT zur Verfuegung stellt: https://github.com/jblance/mpp-solar

Lange Rede kurzer Sinn: Die Chancen stehen gut, dass das von dir gefundene Gerät leicht zu kontrollieren und zu steuern ist.

Dann fällt mir noch ein letztes Puzzleteil auf, auf welches ich dich hinweisen möchte: Beim GTIL und Soyosource handelt es sich um Grid-Tied-Inverter. Du kannst sie also einfach (an beliebiger Stelle im Haus) in die Steckdose stecken und sie buttern ihre Leistung dazu. Der Stromzaehler dreht also langsamer. Bei den Hybrid-Invertern steckst du "links" den Netzstrom und den Solarstrom hinein und rechts kommt das Ergebnis raus. Hier muessen alle Verbraucher hinter den Hybrid-Inverter angeschlossen werden. Wenn der Strom vom Netzbetreiber weg faellt, versorgt der Hybrid-Inverter alle Verbraucher (auf der rechte Seite) mit Batteriestrom. Die Grid-Tied-Inverter sind auf eine Netzfrequenz angewiesen, welcher sie folgen koennen. Faellt der Strom aus, dann gehen sie in einen Fehlermodus bis die Netzfrequenz wieder da ist.

Mit diesem Wissen solltest du dir die Frage beantworten koennen, welche Geräte je nach Loesung eigentlich alles in den Genuß deines Solar/Batteriestroms kommen sollen/koennen. Es gibt noch eine letzte Gruppe: Hybrid-Inverter inkl. Grid-Tied-Funktionalitaet. Sie unterscheiden sich aber preislich stark von ihren Geschwistern.

Ja, der ist schon mehr nach meinem Geschmack, vielen Dank!

Das Laden muss ich anders organisieren, weil ja wie gesagt eine Anlage auf dem Balkon hängt und die andere einmal ums Haus rum auf der Garage liegt. Die Produktion beider zusammen möchte ich in den Akku laden, wenns nicht gebraucht wird.

Ich habe noch 2 Eltek Flatpack 48V Netzteile hier, die sprechen CAN. Also würde ich mir o.g. Software klauen und auf einem STM32 laufen lassen. Der bekommt wiederum vom ESP seinen Leistungs-Sollwert. Negative schickt er an den Flatpack, positive an den GTN1200.

Die Doku vom PIP hatte ich gefunden: http://www.offgrid.casa/wp-content/uploads/2017/10/HS_MS_MSX_RS232_Protocol_20140822_after_current_upgrade.pdf

Es gibt wirklich viele Infos über die Schnittstelle, aber eine Leistungsvorgabe habe ich nicht gefunden :frowning:

So, habe jetzt mal diesen hier bestellt: https://de.aliexpress.com/item/1005004066049533.html

Der hat sogar schon ein WLAN-Modul, mal sehen wozu das gut ist.

Es gibt wirklich viele Infos über die Schnittstelle, aber eine Leistungsvorgabe habe ich nicht gefunden :(
Ist aber grundsätzlich möglich: http://www.mppsolar.com/manual/PIP-GE/PIP-GE%20manual%20(PF1.0).pdf (nach "maximum charging current" suchen)
So, habe jetzt mal diesen hier bestellt: https://de.aliexpress.com/item/1005004066049533.html

Der hat sogar schon ein WLAN-Modul, mal sehen wozu das gut ist.
Gute Wahl. Auf das WLAN-Modul solltest du mittelfristig verzichten. Es ist grob gesagt ein ESP, welcher dir einen Display-Ersatz auf eine Webseite malt und freizuegig Messdaten per MQTT in eine schlecht ausgebaute Cloud des Herstellers schaufelt.

Guter Hinweis. Vielleicht kann ich es ja umprogrammieren? Steckt das auch in einem seriellen Port oder irgendein Spezial-Port?

Das ESP-Modul funkt jetzt seit 2 Tagen zuverlässig die Werte

Guter Hinweis. Vielleicht kann ich es ja umprogrammieren? Steckt das auch in einem seriellen Port oder irgendein Spezial-Port?
Ich denke ja. Der Hersteller hat bei deiner Version das Display weg gelassen. Das Display in meinem Inverter setzt sich aus dem Bildschirm und eine Treiberplatine zusammen. Auf der Treiberplatine sitzt ein Mikrocontroller der ueber ein 4 adriges Kabel mit dem STM32-Klon auf dem Mainboard des Inverters verbunden ist. Ich gehe davon aus, dass sich auf dem Kabel Plus, Minus, RX und TX finden laesst. Wenn man sich die Muehe macht zu pruefen, an welchen Beinchen des STMs die Kabel ankommen, laesst sich diese These sicher untermauern, dass es sich um eine serielle Verbindung handelt.

Das es sich bei dem Dongle um einen ESP handelt ist geraten. Ich meine mich aber zu erinnern irgendwo mal ein Foto der Innereien gesehen zu haben. Außerdem vermute ich stark, dass das WLAN-Modul zwar mit einem USB-Stecker daher kommt, du jedoch nicht erwarten solltest, dass hier USB gesprochen wird. Stattdessen werden sich an der USB-Buchse des Inverters wieder Plus, Minus, RX und TX finden lassen. ;-) Ich in auf deinen Bericht gespannt!

Die Auflade-Richtung habe ich heute schonmal provisorisch aufgebaut. Ich habe ein Manson Schaltnetzteil mit USB-Schnittstelle, ein paar alte 40Ah LFP Akkus und ein BeagleBone.

Darauf läuft ein simples Python-Skript:

#!/usr/bin/python
import serial, time, requests
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0.2)
lastSolarPower = 0
while True:
try:
ser.flushInput()
ser.write("GETDr")
output = ser.read_until('r')
print (output)
r = requests.get("http://192.168.178.54/cmd?cmd=get%20ptotal")
ptotal = float(r.text)
if len(output) == 10:
voltage = float(output[:4]) / 100
current = float(output[4:-2]) / 100
power = voltage * current
solarpower = power - ptotal
print ("battery power: " + str(power) + "W grid power: " + str(ptotal) + "W solar excess: " + str(solarpower) + "W")
lastSolarPower = (solarpower + lastSolarPower) / 2 #IIR Filter
newcurrent = max(0,lastSolarPower / voltage)
ser.flushInput()
ser.write("CURR%.3dr" % (newcurrent * 10))
print("Setting new current setpoint to " + str(newcurrent))
print (ser.read_until('r'))
except requests.exceptions.ConnectionError:
print ("Connection error, setting current to 0")
ser.write("CURR000r")
continue