Solarspeicher (stationär): Unterschied zwischen den Versionen
Zeile 714: | Zeile 714: | ||
Die theoretischen Grundlagen zur Wlan Steckdose sind unter folgenden Links zu finden: | Die theoretischen Grundlagen zur Wlan Steckdose sind unter folgenden Links zu finden: | ||
− | + | *Generelle Bechreibung der Sonoff S20: | |
<ref>[http://sonoff.itead.cc/en/products/residential/s20-socket www.itead.cc],.</ref> | <ref>[http://sonoff.itead.cc/en/products/residential/s20-socket www.itead.cc],.</ref> | ||
− | Unter Youtube sind folgende Tutorials zu empfehlen: | + | Unter Youtube sind folgende Tutorials zu empfehlen:<br> |
− | + | 1. Sonoff Teil 4 - FHEM-Integration haus-automatisierung | |
<ref>[https://www.youtube.com/watch?v=BzeSkapYDrU www.youtube.com],.</ref> | <ref>[https://www.youtube.com/watch?v=BzeSkapYDrU www.youtube.com],.</ref> | ||
− | + | 2. Sonoff Teil 17 - Die verfügbaren Befehle und die Konsole | |
<ref>[https://www.youtube.com/watch?v=anCUWB-Ere8 www.youtube.com],.</ref> | <ref>[https://www.youtube.com/watch?v=anCUWB-Ere8 www.youtube.com],.</ref> | ||
Weitere Infos zur Sonoff-Tasmota Steckdose sind unter Github zu finden: | Weitere Infos zur Sonoff-Tasmota Steckdose sind unter Github zu finden: | ||
− | + | 1. <ref>[https://github.com/arendst/Sonoff-Tasmota/wiki/Commands www.github.com],.</ref> | |
− | + | 2. <ref>[https://github.com/arendst/Sonoff-Tasmota/wiki/MQTT-Overview www.github.com],.</ref> | |
Weitere Infos zum MQTT Protokoll sind unter folgenden Links zu finden: | Weitere Infos zum MQTT Protokoll sind unter folgenden Links zu finden: | ||
− | + | 1. Beschreibung des MQTT (Message Queue Telemetry Transport) Protokolls | |
<ref>[https://de.wikipedia.org/wiki/MQTT www.wikipedia.org],.</ref> | <ref>[https://de.wikipedia.org/wiki/MQTT www.wikipedia.org],.</ref> | ||
<ref>[https://www.heise.de/developer/artikel/Kommunikation-ueber-MQTT-3238975.html www.wikipedia.org],.</ref> | <ref>[https://www.heise.de/developer/artikel/Kommunikation-ueber-MQTT-3238975.html www.wikipedia.org],.</ref> | ||
− | + | 2. Funkkommunikation zwischen Raspberry Pi’s mittels MQTT Broker/Client | |
<ref>[https://tutorials-raspberrypi.de/datenaustausch-raspberry-pi-mqtt-broker-client/ www.tutorials-raspberrypi.de],.</ref> | <ref>[https://tutorials-raspberrypi.de/datenaustausch-raspberry-pi-mqtt-broker-client/ www.tutorials-raspberrypi.de],.</ref> | ||
Um die Steckdose über das Raspberry selbst ansteuern zu können, muss die Firmware des IC’s ESP8266 geflasht werden: | Um die Steckdose über das Raspberry selbst ansteuern zu können, muss die Firmware des IC’s ESP8266 geflasht werden: | ||
− | + | * Eine Beschreibung und ein Wiki sind hierzu unter folgenden Links zu finden: | |
<ref>[https://github.com/arendst/Sonoff-Tasmota www.github.com],.</ref> | <ref>[https://github.com/arendst/Sonoff-Tasmota www.github.com],.</ref> | ||
<ref>[https://github.com/arendst/Sonoff-Tasmota/wiki www.github.com],.</ref> | <ref>[https://github.com/arendst/Sonoff-Tasmota/wiki www.github.com],.</ref> | ||
− | + | *Das unter folgendem Link vorhandene Tutorial erklärt den Hardwareanschluss des IC’s ESP8266 zu flashen: | |
<ref>[https://github.com/arendst/Sonoff-Tasmota/wiki/sonoff-s20 www.github.com],.</ref> | <ref>[https://github.com/arendst/Sonoff-Tasmota/wiki/sonoff-s20 www.github.com],.</ref> | ||
− | + | *Folgendes Tutorial beschreibt den Software-flash mit dem Esp-Tool: | |
<ref>[https://github.com/arendst/Sonoff-Tasmota/wiki/Esptool www.github.com],.</ref> | <ref>[https://github.com/arendst/Sonoff-Tasmota/wiki/Esptool www.github.com],.</ref> |
Version vom 26. November 2019, 16:10 Uhr
Wiki in Arbeit....[1]
Kurzbeschreibung
Das vorliegende Open Source Projekt „Soldorado Solarspeicher“ von OPEN SOLAR SYSTEMS basiert auf der Idee unabhängig von teuren kommerziellen Solarspeicherprodukten sowie unabhängig von der EEG Vergütung einen professionellen, kostengünstigen und intelligenten Solarspeicher zu entwickeln, der es ermöglicht auch bei PV Anlagen auf kleineren Dach- oder Balkonflächen den Grundlaststrom in einem Haushalt regenerativ abzudecken. Schon mit 4 Solarmodulen (ca. 1 kWP) und einer Speichergröße von 1,8 kW können ca. 35 % des eigenen Stromjahresverbrauches durch Eigenerzeugung selbst gedeckt werden.
Die Investitionskosten liegen weit unter den kommerziell angebotenen Produkten. Somit besteht auch für Menschen mit wenig zur Verfügung stehender Fläche die Möglichkeit aktiv etwas für die Umwelt und langfristig etwas für den eigenen Geldbeutel und die eigene Unabhängigkeit zu tun.
Da im ersten möglichen Fall keine Einspeisung ins öffentliche Stromnetz erfolgt, wird der nicht benötigte Strom im Akkumulator zwischengespeichert und nach Erreichen der vollen Akkumulatorkapazität zur Brauchwassererwärmung genutzt.
Im zweiten möglichen Fall erfolgt die Beladung des Akkumulators und die Einspeisung ins Netz parallel (Rücklaufsperre bzw. Zweirichtungszähler vom Netzbetreiber notwendig).
Um die optimale Speicher- und PV Anlagengröße in Bezug auf die Wirtschaftlichkeit und Amortisation des Gesamtsystems zu ermitteln, wird zuerst eine detaillierte, stündlich aufgelöste Jahressystemsimulation in Abhängigkeit des Stromlastprofiles des jeweiligen Haushaltes durchgeführt.
Zur optimalen Auslegung steht ein umfangreiches Exceltool zur Verfügung.
Zur Erhöhung des elektrischen Eigenverbrauchs können Funksteckdosen von der intelligenten Regelung gezielt angesteuert werden, um in Zeiten hoher Solareinstrahlung elektrische Verbraucher wie E-Bikeladung, Wasch- oder Geschirrspülmaschinen zu aktivieren.
Die Onlinevisualisierung erfolgt auf zwei Weboberflächen. Für die detaillierte Datenauswertung des Gesamtsystems erfolgt dies über das Web Frontend des „Volkszählers“. Um einen schnellen Überblick über aktuelle Verbrauchsdaten, Wetteraussichten, Speicherladung, Speicherstatus und eingesparte CO2 Summe zu erhalten, erfolgt dies über das Dashboard von Node-red, einer Plattform zur Integration und Programmierung von Akteuren des sogenannten Internet of things (Internet der Dinge).
Die offenen und hier dokumentierten Schnittstellen über Arduino, Raspberry bzw. Volkszähler bieten Entwickler darüber hinaus die Möglichkeit den Programmiercode weiter zu verfeinern und bspw. die Onlinevisualisierung ihren Bedürfnissen individuell anzupassen oder weitere intelligente Verbraucher anzusteuern.
Der hier dokumentierte Aufbau des Solarspeichers basiert auf Open-Source Hard- und Software und unterliegt der GNU General Public License v3.0.
Hinter Soldorado Open Solar Systems stehen wir freien Entwickler Thomas Plaz und Frank Richter. Sämtliche Verbesserungen und Weiterentwicklungen sind von uns Entwicklern ausdrücklich erwünscht, um eine schnelle Verbreitung zu ermöglichen und die Energiewende zu unterstützen. Alle Quelldaten werden mittelfristig bei GitHub verfügbar sein. Sofort verfügbar sind die Dateien momentan unter den entsprechenden Verlinkungen auf dieser Seite.
Projektbeschreibung
Motivation
Am Anfang dieses Projektes stand der Wille, endlich aktiv etwas für die eigene Umweltbilanz direkt Zuhause zu tun. Wir leben in Miete in einem kleinen Häuschen mit sehr beschränkter Dachfläche mit verschachteltem Dach in Ost und Westrichtung (max. 4 Solarmodule, insgesamt 1 kWP). Unser Jahresstromverbrauch liegt für die mittlerweile vierköpfige Familie bei etwa 1700 kWh/a. Unsere Wärmeerzeugung erfolgt (aufgrund der Mietverhältnisse) nach wie vor konventionell mit Öl.
Eine normale PV Einspeiseanlage kam für uns mit lediglich vier Modulen aufgrund des Mietverhältnisses und dem bürokratischen Aufwandes nicht in Frage. Wir wollten so viel Energie wie möglich selbst erzeugen und direkt verbrauchen. Laut Internetrecherche im Jahr 2015 waren aber kaum finanzierbare Systeme zu finden, die unseren Anforderungen genügten. Am Ende haben wir es mit dem 4 Panel Controller von Solarelectrix kombiniert mit zwei geschlossenzelligen 75Ah Bleiakkumulatoren (35Ah effektive Batteriekapazität) versucht. Ansatz war hier die Verwendung eines leistungsgeregelten Miniwechselrichters für die Grundlastdeckung im Haus. Die Auslegung des Speichers und des Wechselrichters erfolgte durch die Ermittlung eines wirtschaftlichen Optimums zwischen Eigenverbrauch, maximal zu erwartenden Energieertrag der zur Verfügung stehenden Dachfläche, Batteriegröße und Amortisationszeit. Die Amortisationszeit wurde mit ca. 13 Jahren berechnet. Die jährliche Co2 Einsparung liegt bei ca. 40 kg/a.
Überschussstrom wird in der Batterie gespeichert, kein Strom sollte ins Netz zurück fließen. In den folgenden Monaten konnten wir mithilfe des open source Systemmonitorings „Volkszähler“ das Verhalten der Anlage genau studieren und optimieren. Nach und nach ersetzten wir alle Funktionen des 4 Panel Controllers durch eigene Regelalgorithmen mithilfe des Arduinoboards und erreichten deutlich höhere Leistungsumsätze des Systems sowie eine zuverlässige Batterieschutzfunktion. Unseren "fliegenden" Aufbau montierten wir 2017 in einen Schaltschrank. 2018 ersetzten wir die Bleiakkumulatoren durch ein Batteriemanagementsystems (BMS) und einen 60 AH Lithiumakkumulator. Immer mehr Funktionen wie z.B. eine Heizstabregelung zum Verbrauch des überschüssigen Stromes an sonnenreichen Sommertagen zur Trinkwarmwassererwärmung, eine schaltbare Steckdose zum Laden des E-Bike Akkumulators, VPN Zugang via App oder Browser auf alle Systemdaten von überall auf der Welt, Schalter für die Volleinspeisung des Wechselrichters und eine detaillierte Simulation des Gesamtsystems kamen nach und nach hinzu. Inzwischen deckt die Solaranlage im Jahresschnitt ca. 35% des Jahresstromverbrauches, trotz morgendlicher Verschattung und suboptimaler Solarmodulausrichtung.
Da wir in vielen Fällen auf die Produkte der Open Source Community zurückgegriffen haben, ist es uns nun ein Vergnügen eine ausführliche Dokumentation unserer Entwicklung zu schreiben und unser Wissen öffentlich allen zur Verfügung zu stellen. Alle Bastler und Entwickler sind eingeladen mit uns ins Gespräch zu kommen und die Soft- und Hardware weiterzuentwickeln oder zu modifizieren. Wir hoffen damit viele begeistern zu können entweder selbst einen Solarspeicher zu bauen oder sich einen bauen zu lassen. Es gibt noch viele Dachflächen, die bisher aufgrund ihrer kleinen Fläche als unrentabel abgetan wurden, die mit diesem System nun auch effektiv und wirtschaftlich erschlossen werden können. Wir hoffen damit einen kleinen Teil zur konkreten Umsetzung der Energiewende und zur Vergrößerung der eigenen Unabhängigkeit beitragen zu können.
Einige Vorteile des Solarspeichersystems auf einen Blick
- Kompletter Eigenverbrauch der erzeugten Energiemenge möglich als Strom und Wärme
- System auch als Einspeisesystem zu benutzen
- Hoher Systemwirkungsgrad (ca. 88-89%) durch DC gekoppelten Speicher (siehe Kapitel Systemwirkungsgrad)
- Dezentrale Stromerzeugung zur Entlastung und Stabilisierung der Stromnetze
- Anlage optimiert für kleine Dach- oder Balkonflächen (ab drei Modulen 1,66m^2, Höhe: 1,68m; Breite: 0,99m z.B. insgesamt 900WP) für die sich i.d.R. der Aufwand (EEG Anmeldung) für eine Einspeiseanlage nicht lohnt
- EEG Anmeldung bei Verwendung der Überschussenergie als Wärme nicht notwendig
- größere Unabhängig gegenüber Strompreissteigerungen
- weniger Bürokratie bei Anlagenanmeldung
- Verbesserung der eigenen CO2 Bilanz, Vermiedene Co2 Emissionen direkt ablesbar
- kein Zugriff des Netzbetreibers auf die Steuerung des Stromspeichers oder gar auf Ihre individuellen Erzeugungs- und Verbrauchsdaten, aufgrund lokaler Datenspeicherung
- Möglichkeit der Skalierung des Systems bis zu 25 Modulen (7,5kWP)
- Amortisation des Solarspeichersystems innerhalb von 12 Jahre
- Für Weiterentwickler und Interessierte liegt der komplette Programmiercode und alle Schnittstellen offen zu Verfügung
- Kostengünstige Lösung im Vergleich zu Mitbewerbern
- Sekundengenaues Systemmonitoring über einen Webbrowser oder App im Heimnetzwerk oder verbunden über eine VPN Verbindung ermöglicht dem Nutzer über ein elektronisches Endgerät wie Smartphone oder Computer ständig Überblick über alle Systemparameter zu behalten
- Optimierung des Eigenverbrauchs durch intelligent programmierbare schaltbare Steckdosen in zwei Betriebsmodi
- Solares Laden des eigenen E-Bike Akkumulators möglich
- Power to heat des Überschussstromes unterstützt im Sommer die Warmwasserbereitung und reduziert somit Co2 Emissionen und Laufzeiten der konventionellen Energieerzeugungsanlage
- Systemkomponenten wie Wechselrichter und Akkumulator nur so groß gewählt, um ein optimales Verhältnis zwischen Wirtschaftlichkeit und gewünschter solarer Deckung zu erreichen
Projekthistorie und Ziele
2015:
- Erste Ideen und Visionen, Kauf des Smappee Energiemnonitors zur Aufnahme des eigene Lastprofiles
- Entwicklung eines Exceltools zur Jahressimulation des Speichers und Auslegung der Batterie und Wechselrichtergröße
- Kauf und Montage von vier PV Modulen, von 2x 70Ah Bleibatterien (geschlossene), und als Regelung der 4 Panel Controller von Solarelectrix.
2016:
- sukzessiver Ersatz der Funktionen des 4 Panel Cotrollers, um die volle Leistungsfähigkeit des Mikrowechselrichters von 300W ausschöpfen zu können, sowie sinnvolle Akkumulatorschutzfunktionen zu integrieren wie Tiefentlade- und Überladungsschutz.
2017:
- Integration des Systems in einen Schaltschrank und Integration der Anlagenüberwachung mithilfe eines Raspberyy Pi‘s
- Anschluß eines geregelten Heizstabes zur Beheizung des Brauchwarmwasserspeichers bei Überschussstrom im Hochsommer.
2018:
- Ersatz der Bleiakkumulatoren durch einen 60Ah LiFePo mit Batteriemanagementsystem von Libre Solar.
- Integration von Funksteckdosen angesteuert über das MQTT Protokoll über Node Red
- Integration der Anlagenvisualisierung über das Dash Board von Node Red
- Konstruktion und Herstellung eines Gehäuses für das BMS
2019:
- Verbesserung der Hard- und Software des BMS von Libre Solar
- Ansteuerung des Wechselrichters über Softserial
- Platinenredesign mit den nunmehr notwendigen Aufbauten, Zusammenlegen von Arduino- und Mosfetplatine zur Kostengünstigeren Produktion
- Untersuchung der Skalierung des Systems auf 48V Systemspannung
- Integration der Heizstabregelung
Zukünftige Ziele:
- Fertigstellung der Parameterauslesung über Node Red v.a. Errorfunctions
- Integration der Projektdokumentation und Quelldaten in GitHub
- U.U. Integration eines Watchdogs im Arduinocode
- Freiwerdende serielle Arduinoschnittstelle soll bidirektionalen Kontakt zu Victron Ladereglern aufnehmen
- Gehäusekonstruktion Arduino- und Mosfetplatine
- Überarbeitung des Schaltschrankes auf Normkonformität
- Redesign des Schaltschrankes / Integration des Akkumulators in den Schaltschrank / Bau des 3. Protoypen
Systemaufbau
- Der Stromzähler 1 erfasst die PV Einspeisung und den elektrischen Verbrauch auf allen drei Phasen im Haus und kommuniziert mit der Steuereinheit 2
- Die Steuereinheit 2 regelt kontrolliert die Akkumulator(ent-)ladung 4 sowie die Wechselrichterleistung 3 den Heizstab 5 und die intelligente Zuschaltung elektr. Verbraucher und Smart Home Akteure 6
- In folgendem Diagramm ist die Wechselrichtereinspeisung orientiert am momentanen Hausverbrauch (grün) (1x INV 350 – 60 von AE Conversion max. 300W) sowie der Solarertrags (rot) und der momentanen elektrischen Hausverbrauches (blau) dargestellt.
Der Solarertrag hat seinen Höhepunkt gegen 13Uhr erreicht. Der Wechselrichter bezieht seine Energie tagsüber direkt von den Solarmodulen und nachts aus dem Akkumulator. Solarenergie die nicht direkt verwendet werden kann wird tagsüber in den Akkumulator eingespeichert. Ist der Akkumulator voll wird die Überschüssige Energie entweder mithilfe eines Heizstabes in Wärme z.B. für die Trinkwarmwassererwärmung oder ins Netz eingespeist. Die solare Deckung beträgt für den 5.6.2019 59%. Im Vergleich hierzu ist in Abbildung 4.1 das System ohne Akkumulator und Heizstab in herkömmlicher Volleinspeisung dargestellt.
Es wurden hierzu zwei INV 500 – 90 von AE Conversion max. jeweils 480W eingesetzt. Ein Großteil der erzeugten Solarenergie kann aufgrund der Gleichzeitigkeit nicht für den eigenen Stromverbrauch verwendet werden.
- Ziel der Systemauslegung ist es die Deckung der elektrischen Grundlast im Haushalt (je nach Wechselrichtertyp 300W oder 500W) von ca. 0-300W/500W zu decken.
- Die intelligente Verbrauchssteuerung (2) ermöglicht mithilfe von Funksteckdosen (7) z.B. elektrische Verbraucher wie ein E-Bike Akkumulator, Wasch- und Spülmaschine bei vorhandener Überschussenergie zuzuschalten und erhöht somit den solaren Eigenverbrauch.
Funktionsprinzip
Solarenergie steht nicht zu jeder Tageszeit zur Verfügung. Die Grundlast eines Einfamilienhaushaltes liegt bei ca. 100-500W, je nach Anzahl elektrischer (Dauer-) Verbraucher. Die sinkende EEG Einspeisevergütung, sowie die begrenzte Belastbarkeit unseres Stromnetzes lässt zunehmend PV Systemkonfigurationen wirtschaftlich werden, die nicht auf maximalen Ertrag bei maximaler Fläche optimiert sind, sondern im jeweiligen Haushalt eine möglichst hohe Eigenverbrauchsquote bzw. solare Deckung erzeugen. Dies wird durch die Zwischenspeicherung der Solarenergie im Akkumulator sowie mit intelligenter Steuerung der elektrischen Verbraucher erreicht. Energie soll zunehmend dort verbraucht werden wo sie entsteht. Angepasst auf das individuelle elektrische Verbrauchsprofil entsteht ein System mit wirtschaftlich optimierter Akkumulator-Größe und PV-Fläche. Für kleine Haushalte sind schon PV-Speichersysteme mit 3 PV Modulen (750WP) sinnvoll und ermöglichen auch bei begrenzter Dachfläche (z.B. bei Stadt-, oder Reihenhäusern, Haushälften) wirtschaftlich etwas für die eigene Co2 Bilanz sowie für die Versorgungssicherheit zu tun. Größere Systeme haben Vorteile durch die niedrigeren spezifischen Installationskosten beim Handwerker. Bei kleinen Systemen kann dafür ggf. mehr in Eigenleistung erbracht werden.
Detaillierter Systemaufbau
Folgende Abbildungen zeigen die relevanten Systemkomponenten schematisch mit deren Schnittstellen sowie im realen Aufbau.
Komponentenwahl und deren Spezifizierung
Wechselrichter
Es wurde ein kostengünstiger, in seiner Leistung regelbarer Miniwechselrichter gesucht, der mit Systemspannungen von 24-48V umgehen kann und gleichzeitig über einen integrierten NA-Schutz nach VDE-AR-N 4105 verfügt. Der INV 350-60 bzw. INV 500 – 90 von AE Conversion mit RS485 Schnittstelle genügt diesen Anforderungen. Bei einer maximalen DC seitigen Stromaufnahme von 11A erreicht er AC seitig bei einer Systemspannung von 32V ca. 300W bzw. bei 48V ca. 450W. Der Miniwechselrichter INV 350-60 RS 485 ist ab 250€ brutto excl. Versand und der INV 500-90 RS 485 für 297 € bis 320€ brutto excl. Versand erhältlich. Nachteilig ist der hohe Platzbedarf im Schaltschrank aufgrund der wasserdicht ausgeführten Anschlusskabel. Das neueste Modell von AE Conversion INV 315-50 (ab 150€ brutto) ist deutlich kleiner, verfügt aber über keine RS485 Schnittstelle sondern nr über eine kabellose Schnittstelle.
Protokoll und Kommunikation
Mit dem Miniwechselrichter kann über zwei verschiedene Protokolle kommuniziert werden:
1. KACO/Schueco Protokoll (ASCII String): bidirektionale Kommunikation
2. AESGI-Protokoll (HEX String): bidirektionale Kommunikation
Grundsätzlich ist die Kommunikation mit dem WR nur bei ausreichender Energieversorgung über die angeschlossenen PV Module bzw. Akkumulator möglich. Tritt eine Versorgungslücke ein, so sind die im WR gespeicherten Werte (z.B. Tagesenergieertrag) verloren. Ein Abschalten des MPP Tracking Modus im WR für den Betrieb an einer Konstantspannung aus einem Akkumulator ist nur mit dem AESGI Protokoll möglich (siehe Abschnitt AESGI Protokoll). Die Kommunikation erfolgt über die RS 485 Schnittstelle. Mehrere Wechselrichter können in Reihe an die serielle Kommunikation angeschlossen werden. Jeder WR besitzt eine WR-Adresse, die für eine eindeutige Kommunikation notwendig ist. In der Regel sind das die 3 letzten Stellen der Seriennummer. Alternativ ist es möglich, die Seriennummer sowie die Softwareversion schnell und komfortabel über das per Download frei erhältliche Programm AE Solar von AE Conversion herauszufinden. Hierfür sind folgende Anschlussdetails zu beachten: Für die Kommunikation werden nur zwei Adern (Paar3) des CAT 5 Kabels benötigt. Draht A des RS-485-Bus wird an Pin 6 angeschlossen und Draht B auf Pin 3. Zusätzlicher Pin 8 und der Kabelschirm werden an Erde angeschlossen, um gegen elektromagnetische Einflüsse zu schützen.
Um einen Kommunikation mit dem Computer herzustellen wird noch ein RS485 USB Adapter benötigt (z.B. Reichelt: RPI USB RS485 Raspberry Pi - USB-RS485-Schnittstelle, CH340C) den es für wenige Euro im Internet zu kaufen gibt. Für Kommunikationstests zwischen Computer und Wechselrichter empfiehlt sich das Programm HTherm, das frei zum Download im Internet erhältlich ist. Folgende Voreinstellungen sind für die serielle Kommunikation notwendig:
Serial port configuration | |
---|---|
Baud rate | 19200 |
Data bits | 8 |
Parity | None |
Stop bits | 1 |
Flow control | None |
Im Programm AE solar besteht nun, wie in nachfolgender Abbildung dargestellt, die Möglichkeit den WR über einen Suchlauf zu suchen und damit dessen WR Adresse zu ermitteln. Ebenfalls in der Abbildung dargestellt ist die Antwort des Programms AE Solar auf den Kommunikationstest.
Weiterhin besteht die Möglichkeit sich die Leistungsdaten in einer Verlaufsgraphik darstellen zu lassen oder die Wechselrichterleistung zu steuern. Der Standbyverbrauch beträgt ca. 30 mW (INV350-60).
3. Details KACO/(Schueco) Protokoll
Dieses Protokoll liefert vom Miniwechselrichter gemessene AC-Leistung, AC-Spannung, AC-Strom, Tagesenergie, DC-Leistung, DC-Spannung, DC-Strom, WR-Temperatur und WR-Status in einem einfach lesbaren ASCII String. Weiterhin ist es möglich dem WR eine Leistungsreduzierung in Prozent der Maximalleistung des WR vorzugeben
Ursprüngliche Beschreibung und Aufschlüsselung des AESGI Protokolls sind zu finden unter:
[1]
4. AESGI-Protokoll
Das AESGI Protokoll basiert im Gegensatz zum KACO Protokoll auf dem hexadezimalen Zahlensystem und hat den großen Vorteil, dass das MPP Tracking des Wechselrichters ausgeschalten und dieser somit optimal zum gesteuerten Entladen eines Akkumulators verwendet werden kann. Diese Option gibt es ab der Software Version 0.9.16.
Grundlage für die hier dokumentierten Befehle stellt folgender Foreneintrag im Photovoltaikforum dar (S.8 Eintrag J. Becker 16. Juli 2016):
[2]
Folgende Tabelle schlüsselt die wesentlichen Befehle auf, die umgewandelt in das hexadezimale Zahlensystem dem Wechselrichter direkt über die serielle Schnittstelle zugesendet werden kann.
Kurzzeichen | Überschrift |
---|---|
<ID> | zweistellige WR-Nummer |
<_> | Leerzeichen |
<z> | Prüfsumme |
<LF> | Zeilenumbruch (line feed) |
<CR> | Zeilenumbruch (carriage return) |
Aufgabe | Anfrage | Antwort | Bemerkung |
---|---|---|---|
Ausgabe Wechselrichtertyp | #<ID>9<CR> | <LF>*<ID>9_PV350W_z<CR> | - |
Statusabfrage | #<ID>0<CR> | ? | - |
Betriebsmodus setzen | #<ID>B_m_uu.u<CR> | <LF>*<ID>B_m_uu.u_z<CR> | m = 0 = MPP-Modus,
m =2 = Spannungs- und Stromvorgabe uu.u abhängig vom Typ 20.0-60.0V oder 40.0-80.0V, bei Modus 0 immer 00.0 verwenden. Der WR reduziert im Modus 2 bei Erreichen der angegebenen Spannung (von oben) die Leistung bis auf Null (Eingangsstrom dann noch einige 10 mA!!!) |
Leistungsreduzierung setzen | #<ID>L_001<CR> | <LF>*<ID>L_001_z<CR> | nur im MPP-Modus sinnvoll,
(1-100%, hier 1% Ausgangsleistung) |
Leistungsreduzierung abfragen | #<ID>L<CR> | <LF>*<ID>L_001_z | hier 1% Ausgangsleistung |
Stromvorgabe setzen | #<ID>S_ii.i<CR> | <LF>*<ID>S_ii.i_z ii.i | - |
Stromvorgabe abfragen | #<ID>S<CR> | <LF>*<ID>S_ii.i | nur im Modus 2 sinnvoll! |
aktuelle Messdaten abfragen | #<ID>0<CR> | <LF>*<ID>0___0_45.7_1.23____55_230.1_0.21____50_45___635_z>CR> | (Beispiel)
von links nach rechts: 0 Status 45.7 Eingangsspannung V (oft sehr ungenau!) 1.23 Eingangsstrom A 55 Eingangsleistung W 230.1 Netzspannung V |
Beispiele:
Folgende Beispiele sind für einen Wechselrichter mit Wechselrichternummer 32, bei max. 60V:
1. WR auf Modus 2 setzen (Spannungs- und Stromvorgabe):
Anfrage: #32B_m_60.0<CR>
Antwort: <LF>*<ID>B_m_uu.u_z<CR>
2. WR Stromvorgabe setzen (um Leistung zu reduzieren):
Anfrage: #32S_08.0<CR>
Antwort: <LF>*<ID>S_ii.i_z ii.i
3. Statusabfrage WR Anfrage: #320 <CR> Antwort: ???
In HTherm werden oben genannte Befehle in Ascii in das Eingabefeld eingegeben und das Häkchen bei „HEX“ gesetzt sowie soll nach jeder gesendeten Zeile eine CR (carriage return) zum Abschluss der Zeile angehängt werden:
Die Leistungsanpassung erfolgt im Arduinocode unter Reiter „WR“ in der Funktion „sendPowerAESGI4(int P_WR_temp)“. Die Leistungsanpassung des Wechselrichters erfolgt durch die Vorgabe des Stromes. Der gesetzte Betriebsmodus 2 (Spannungs- und Stromvorgabe) geht nach Unterbrechung der Stromversorgung des Wechselrichters verloren. Quelle: [3]
Wirkungsgradkennlinie Wechselrichter
Die Datenauswertung der AC und DC seitigen Wechselrichterleistung ermöglicht die Berechnung des Wechselrichterwirkungsgrades in Abhängigkeit der Wechselrichterleistung. Es ist zu erkennen, dass der Wirkungsgrad erst ab einer Leistungsabgabe von ca. 90W bei durchschnittlich 91% liegt. Bei 23W ergeben sich 78% Wechselrichtungswirkungsgrad.
PV Module
Durch die um 90° versetzt angeordneten Dachhälften sind je zwei PV Module nach Südost und zwei PV Module nach Südwest gerichtet montiert (siehe Abbildung 2) und in Reihe angeschlossen (Un = 62,8V). In der Verwendung sind vier SW 260 poly Module mit 260Wp von Solarworld. Diese haben eine Abmessung von LxBxH von 1675mm*1001mm*33mm, wiegen jeweils 18kg und haben eine Nennspannung von Un = 31,4V und einen Nennstrom von In=8,37A. Die Dachbefestigung erfolgt mittels Nutensteinen auf jeweils zwei Modultrageschienen aus Aluminium. Diese wiederum sind pro Modulfeld mit sechs Dachhaken für Pfannenziegel an den Dachsparren festgeschraubt. Die Modulerdung erfolgt mithilfe eines 10mm^2 dicken grün-gelben Erdungskabel (Litze H07V-K 1 x 10 mm²), das im Haushaltsschaltschrank auf die Potenzialschiene aufgeklemmt ist. Zum Anschluss der Module wird ein Ölflexkabel 6mm^2 verwendet. Jeweils zwei Module sind im Schaltschrank in Reihe geschaltet. Ebenfalls möglich und kabelsparend ist die direkte Verschaltung der Module mittels PV Stecker (MC4 Stecker) auf dem Dach. Sehr benutzungsfreundlich sind die PV Stecker der Firma Weidmüller, für die keine Crimpzange zur Befestigung der PV Stecker am Kabel notwendig sind. Das Kabel wird abisoliert bis zum charakteristischen „Klick“ der Wielandstecker eingeschoben und sind irreversibel aber schnell und sicher am Kabel befestigt.
Laderegler
Durch die unterschiedliche Dachausrichtung sind im vorliegenden Projekt zwei Laderegler mit integriertem MPP Tracking in Verwendung. Es handelt sich um zwei Victron MPPT 100-15, die über eine Schnittstelle und eine tauschbare 20A Sicherung verfügen. Die Schnittstelle läuft bei Victron Energy unter dem Namen „VE.Direct serial communication“ und erlaubt den einfachen Zugriff auf die aktuellen Leistungsdaten des Ladereglers, diverse Ertragswerte und erlaubt die Einstellung der Batterieparameter sowie ein Update der Geräte-Software. Das „VE-Direct interface“ verfügt über zwei Kommunikationsmodi: den textbasierten Modus sowie den „hex“ basierten Modus. Im „hex“ basierten Modus ist es nicht nur möglich Daten des Ladereglers auszulesen, sondern auch Parameter und Einstellungen dem Laderegler vorzugeben. So ist bspw. eine Reduktion der Leistung von der übergeordneten Steuereinheit oder bei mehreren Ladereglern in einem System die Vorgabe eines Master bzw. Slaveladereglers möglich. Ausführliche Informationen zur Kommunikation finden sich im pdf „VE.Direct-Protocol“ sowie im dazugehörigen „Whitepaper“ unter: [4]. Zum physikalischen Anschluss der Schnittstelle verkauft Victron einen Schnittstellenwandler (VE.Direct to USB interface cable), der das 5V TTL Signal des Ladereglers auf den USB Standard umwandelt. Um eine Kommunikation mit dem Computer über die auf der Homepage verfügbare Software „VE Power Setup“ zu erlangen genügt ein einfacher TTL – USB Wandler, der z.B. hier für wenige Euros zu erstehen ist (z.B. cp2102, ft232rl). Mit der Software ist es inzwischen über eine moderne Benutzeroberfläche möglich, die aktuellen Betriebsdaten des Ladereglers auszulesen. Weiterhin ist es möglich die Gerätesoftware des Ladereglers zu aktualisieren und die entsprechenden Einstellwerte für den Schutz des angeschlossenen Akkumulators einzustellen. Anschluss der Schnittstelle Für eine bidirektionale Kommunikation ist folgender Anschluss vorzunehmen:
Entsprechend der abgebildeten Pinbelegung am Schnittstellenstecker des Ladereglers ist der Anschluss „A“ des TTL-USB Schnittstellenwandlers mit VE.Direct-TX zu verbinden und der Anschluss „B“ mit VE.Direct-RX. GND und Power+ bleiben offen. Folgendes Anschlusskabel sollte verwendet werden: Konfektionierte Litze Polzahl Gesamt 4 Rastermaß: 2 mm Im vorliegenden Projekt wird das Schnittstellensignal direkt ohne Umwandlung von der Schnittstelle an der Steuereinheit (Arduino) angeschlossen und ausgelesen. Folgende Einstellungen sind für die serielle Schnittstelle notwendig:
Serial port configuration | |
---|---|
Baud rate | 19200 |
Data bits | 8 |
Parity | None |
Stop bits | 1 |
Flow control | None |
Folgende Daten werden von der Steuereinheit (Arduino) von beiden
- Ladereglern ausgelesen:
- Laderegler Erzeugung
- Laderegler Leistung
- Laderegler Ladestrom
- Laderegler Batteriespannung
- Laderegler Status
- Laderegler Errorcode
Vorgehensweise Anschluss und Einrichtung des Ladereglers
- Zuerst wird der Laderegler an den Akkumulator angeschlossen, sodass dieser die Systemspannung erkennt. Danach an die PV Module. Im vorliegenden Projekt wird der Lastausgang des Ladereglers nicht benötigt, da die Intelligenz für den Tiefentladeschutz sowie der Überladeschutz für den Akkumulator im externen Batteriemanagementsystem integriert ist. Der Schematische Aufbau ist in folgender Abbildung dargestellt:
- Zur Einrichtung des Ladereglers das Schnittstellenkabel mit USB Wandler wie im Abschnitt „Anschluss der Schnittstelle“ beschrieben verbinden.
- Installation und Starten des Programms VE Power Setup von victron energy.
- Über den Button „Connect to this Computer“ Verbindung zum Laderegler herstellen
- In der Hauptansicht sind die aktuellen Werte des Ladereglers wie z.B. aktuelle Leistung, erzeugte Wattstunden, aktuelle Akkuspannung, aktueller Ladestrom und Ladereglerstatus (bulk (Batterie wird geladen), absorption ( Konstanstspannungsphase) , float (Ladeerhaltung) zu erkennen.
- Über das Zahnrädchen in der rechten oberen Ecke kommt man zu den Einstellungen. Zuerst sollte die Firmware mit einem Klick auf „Update“ unter Reiter „Produkt-Info“ aktualisiert werden.
- Unter Einstellungen werden nun für den LiFePo Akkumulator mit neun Zellen folgende Parameter eingestellt:
Eigenschaft | Parameter |
---|---|
Batteriespannung | 24V |
Max. Ladestrom | 15A |
Konstantspannung | 31,05V |
Maximale Konstantspannungsdauer | 30min |
Erhaltungsspannung | 31,05V |
Ausgleichsspannung | 0V |
- Unter dem Reiter „TX“ Port „normale Kommunikation“ einstellen
- Unter dem Reiter „RX“ Port „Ein/Aus Fernsteuerung“ einstellen
- Unter dem Lastausgang „Immer aus“ einstellen
- Straßenlichtfunktion „aus“ einstellen
Akkumulator
Im vorliegenden Projekt werden neun Zellen a 3,2V des Lithium-Eisen-Mangan-Phosphat Akkumulator von Innopower INNO-LFMP 60 AH (1,73kWh) verwendet. Diese wurden inklusive Transport im Jahr 2018 für 313€/kWh netto bezogen. Detaillierte Infos zum Aufbau, Verkabelung und Anschluss an das BMS ist in der Doku auf [5] in der Rubrik BMS 24V im Kapitel Schematischer Aufbau, Komponenten Akkumulator zu finden.
Arduino Board, Mosfetplatine, Stromversorgung
ArduinoBoard
Die Steuerzentrale des Solarspeichers ist das Arduino Board. Hier laufen alle Informationen aus den Teilkomponenten wie Laderegler, Modbuszähler, Batteriemanagementsystem und Temperatursensoren zusammen. Das Arduino Board errechnet die jeweils aktuelle Leistungsvorgabe für den Wechselrichter und stellt dem Raspberry Pi die notwendigen Daten zur Visualisierung über das Node Red User Interface bzw. Volkszähler Frontend zur Verfügung. Es wird ein Arduino Mega 2560 verwendet, das über vier serielle Hardware-Schnittstellen verfügt.
- Schnittstelle 1: Binärprotokoll zum BMS
- Schnittstelle 2: Modbus-Protokoll zum Modbuszähler
- Schnittstelle 3: VE.direct Serial Communication zum Laderegler
- Schnittstelle 4: Textbasiertes Protokoll zum Raspberry Pi
- Software Schnittstelle 1: RS 485 zum Wechselrichter
Die Zusammenhänge und Kommunikationsprotokolle der einzelnen Komponenten des Solarspeichers sind in Abbildung 5 zu erkennen. Das Arduinoboard sitzt in einem Kunststoffgehäuse direkt unter der sogenannten Arduinoplatine und ist mit allen Pins mit dieser verbunden. Auf der Arduinoplatine sitzen die Pegelwandler (MAX 485) für die Kommunikation mit Wechselrichter (Senden) und Modbuszähler (Empfangen), RJ45 Buchsen für den Anschluss des Wechselrichters sowie des Modbuszählers per Cat5 Kabel, die Erzeugung einer Konstantspannung für die Logik auf der Mosfetplatine, der Sicherungshalter zur Absicherung des Spannungsteilers zur Batteriespannungsmessung, ein R-C Glied für die Glättung des Steuersignals des Heizstabes, ein Reset Taster sowie ein Analog-Digitalwandler für vier analoge Eingänge. In folgender Abbildung ist das Platinenlayout mit den entsprechenden Platinenschnittstellen dargestellt.
Die Klemmen Stromversorgung DC (5V), Eingang Stromsensor und Eingang analoge Signale wird derzeit nicht benutzt und stammen noch aus einer früheren Projektphase. Der Schaltplan sowie das Boardlayout sind hier als .zip downloadbar. [www.????.de]
Mosfetplatine
Die Aufgabe der Mosfetplatine besteht darin große Stromverbraucher wie die angeschlossenen Wechselrichter sowie den Schaltschranklüfter und die Heizstabansteuerung, gesteuert über das Arduinoboard, an- und auszuschalten. Die Platine ist für einen maximalen Stromfluss von maximal 11A bei 33V für die Versorgung der Wechselrichter ausgelegt. Jeweils zwei Mosfets (IRL1404-Z; Leistungs-MOSFET N-Ch TO-220AB 40V 160A) schalten parallel einen Ausgang. Die maximale Strombelastbarkeit eines Mosfets beträgt 75A (sofern 17W Abwärme zuverlässig abgeführt werden können, auf der Mosfetplatine ist dies nicht vorgesehen). Die Leistungsansteuerung der Wechselrichter ist so programmiert, dass die Mosfets wenn möglich nicht unter Last trennen. Vier LED’s zeigen optisch den jeweils aktuellen Schaltzustand der Mosfets an. Über zwei Potentiometer und einer logischen Schaltung ist eine Hardwareabschaltung für die Vermeidung der Überladung bzw. Tiefentladung vorgesehen. Es kann somit die Hysterese des An- und Ausschaltens der Mosfets eingestellt werden. Diese logische Schaltung (Komparator, Fliflop, And) benötigt eine Konstantspannung, die, neben der normalen Betriebsspannung von 5V über ein Flachbandkabel vom Arduino Board der Mosfetplatine zur Verfügung gestellt wird. Dieser hardwareseitige Tiefentladeschutz (und zusätzlich der Überladeschutz) wird derzeit primär über das BMS Controller- bzw. Leistungsboard übernommen. Die Hardwareabschaltung auf der Mosfetplatine kommt aus einer früheren Projektphase ohne Batteriemanagementsystem und dient nun als sogenannte zweite hardwareseitige Hintersicherung des Tiefentladeschutzes. In folgender Abbildung ist das Platinenlayout mit den entsprechenden Platinenschnittstellen dargestellt.
Der Schaltplan sowie das Boardlayout sind hier als .zip downloadbar. Arduino- und Mosfetplatine haben eine Kantenlänge von 110 mm x 110mm und wurden bei Platinenbelichter incl. Bohrungen für jeweils 22€ hergestellt. Die Bestückung erfolgte von Hand. Die Materialkosten incl. Bauteile belaufen sich pro Platine incl. Platinenherstellung auf 70€. Die Platinen wurden an das Gehäuse Bopla ET-217, 122x120x55 angepasst, sodass an allen vier Ecken die Platine ausgespart werden muss. Platinenbelichter konnte diese Aussparungen nicht selbst herstellen. Die Platine wird mit vier Abstandsbolzen und M3 Schräubchen im Gehäuse befestigt. An das Gehäuse wird zur Hutschienenbefestigung mithilfe metrischer Schrauben und Muttern zwei Hutschienenhalter BOPLA TSH 35 befestigt. Die notwendigen Einzelteile sind in der Exceltabelle „PV_Berechnung_Energiespeicher“ (siehe Kapitel "Berechnung, Simulation, Auslegung, Kostenberechnung, Optimierung" in dieser Doku) im Registerblatt „Kosten Arduino- und Mosfetplatine“ im Detail einzusehen.
Quellcode Arduinoboard
Um über die serielle Schnittstelle zwischen BMS und Arduino-Board im Binärprotokoll (Schnittstelle Nummer 3 in Abbildung 5) im Intervall von (0,25sec-1sec) alle relevanten Daten ohne Datenverlust übertragen zu können, ist es derzeit noch notwendig im Arduino den seriellen Puffer für den Dateneingang (Receive)zu vergrößern. Dies geschieht durch Änderung der Variable SERIAL_RX_BUFFER_SIZE von 64 auf 128 (byte) in einem beliebigen Texteditor (z.B. Notepad++, gesamte RAM-Speichergröße des Arduino Mega beträgt 8kB). Der zusätzliche Speicher für die vier Schnittstellen wird vom Gesamtspeicher abgezogen. Eine Anleitung ist unter folgendem Link zu finden:
[6]
Je nach Installation ist die Datei „HardwareSerial.h“ auch unter folgendem Verzeichnis zu finden:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino
VORSICHT: Die Änderung des seriellen Puffers wirkt sich global auf die Kompilierungssoftware Arduino aus und somit auf jedes kompilierte Projekt.
Der Quellcode für das Arduinoboard ist in der gleichnamigen und frei zur Verfügung stehenden Programmierumgebung Arduino geschrieben und ist derzeit strukturiert in verschiedene Programmteile, die in den folgenden Tabs mit folgenden Funktionen zu finden sind:
Tabname | Funktionsname | Beschreibung |
---|---|---|
Hauptprogramm | Void setup() |
|
ADS1115 | void ADS1115() |
|
BMS | void BMS_logging() |
|
BMS | void serialEvent_BMS() |
|
Batterie | void battState() |
|
Heizstab | void Heizstab() |
|
Heizstab | void Heizstab_control() |
|
LR (Laderegler) | void serialEvent_LR() |
|
Modbus | boolean modbus() |
|
Modbus | uint32_t byte_to_uint32(byte byteArray(), byte pos) |
|
Modbus | float byte_to_float(byte byteArray(), byte pos) |
|
Output | void send_raspberry() |
|
Updates | - |
|
WR (Wechselrichter) | void calcPower() |
|
WR (Wechselrichter) | void sendPowerAESGI4(int P_WR_temp) |
|
WR (Wechselrichter) | Loop |
|
Weiterentwicklung
In Zukunft soll aus den bisher zwei Einzelplatinen Arduinoplatine und Mosfetplatine eine gemeinsame Platine entstehen, die mit 24V- 48V Systemen kompatibel ist. Die Vereinigung vereinfacht und verbilligt die Leiterplattenherstellung und Platinenbestückung sowie die Gehäusekonstruktion. Der Verkabelungsaufwand innerhalb des Schaltschranks minimiert sich. Folgende neuen Features sollen zusätzlich integriert werden:
- Alle Anschlüsse werden mit einem geeignetem Steckersystem ausgestattet
- Integration eines seriellen Anschlusses für das Datenkabel vom BMS und Trennung über einen elektronischen Isolator (Dual-Channel Digital Isolators ADuM1200) um Störströme zu vermeiden
- Nutzung der vorhandenen RJ45 Buchse als softwareseitige Schnittstelle (software serial) für den Wechselrichter
- Anschlussmöglichkeit für Display und Drehzahlsteller (Rotary Encoder) an den „interrupt pins“ des Arduino
- Integration einer bidirektionalen Kommunikation zu den Victron Ladereglern
Stromversorgung
Die Mosfetplatine bezieht die Versorgungsspannung über ein Flachbandkabel direkt von der Arduinoplatine. Die Arduinoplatine wiederum kann entweder direkt mit 7,5 V Gleichspannung versorgt werden oder wird per USB Kabel mit dem Raspberry Pi verbunden und erhält darüber seine Stromversorgung. Letztere Variante entspricht dem vorliegenden Schaltschrankaufbau. Das Raspberry Pi wiederum wird über ein Hutschienennetzteil versorgt.
Raspberry Pi
Das Raspberry Pi besitzt die Aufgabe alle relevanten Parameter und Messwerte des Systems zu loggen und auf einer SD Karte zu sichern und über das Volkszähler Frontend auszugeben. Eine regelmäßige Sicherheitskopie der Datenbank erfolgt auf einen USB Stick. Weiterhin stellt das Raspberry Informationen für das Node-Red User Interface (UI) bereit und übernimmt die Steuerung der über Wlan steuerbaren Home Automationsaufgaben wie z.B. schaltbare Steckdosen uvm. Weiterhin ist das Raspberry für die Fehlerauswertung des Gesamtsystems zuständig und informiert den Besitzer z.B. per Mail oder Twitter über dessen Status. Das Raspberry Pi wird zur Hutschienenmontage in folgendem Gehäuse untergebracht: (Voelkner: RASPBERRY HUTSCHIENEN-GEH RASPB B+2B3B [2])
Manueller Reset/Neustart des Raspberry Pi‘s
Um bei Wartungszwecken das Gesamtsystem schnell ausschalten bzw. herunterfahren und neu starten zu können wird in das Gehäuse des Raspberry Pis zwei Schalter installiert (Herunterfahren/OFF und Reset/ON). Das dazu notwendige Platinenlayout ist unter folgendem Link verfügbar: [7] Nachfolgend dargestellt ist der Schaltplan mit den erwähnten zwei Tastern S1 (Herunterfahren/OFF) und S2 (reset/ON).
Der Reset-Taster S2 löst einen harten Reset des BCM 2835 aus. Weiterhin ist es möglich mit diesem Reset-Taster das Raspberry nach dem herunterfahren wieder aufzuwecken.
Der Resettaster verbindet im Falle des Resets beim Raspberry 3 GND mit RUN. Je nach Raspberryversion sind diese zwei direkt nebeneinander angeordneten Pins an anderer Stelle auf der Platine verortet. Ein direktes Verbinden der Pins führt zu einem sofortigen Reset bzw. Anschalten des Raspberrie Pis. In der Regel muss zur Benutzung dieser Pins eine Zweierpinleiste eingelötet werden.
Um das Herunterfahren (bzw. ebenfalls Neustart) des Raspberrys zu initiieren wird der PIN GPIO4 mit dem Taster S1 über den Widerstand R2 330Ohm auf Masse gezogen. Ist der Taster geöffnet liegt an GPIO 4 ein high Signal an.
Damit das Raspberry den Pin GPIO 4 kontinuierlich überwacht, wird ein zusätzliches Python-Skript benötigt. Erstellung und Installation sind unter folgendem Link erklärt:
[8]
Wird der Herunterfahren/OFF Schalter für mindestens 0,5 Sekunden und kürzer als 3 Sekunden gedrückt, initiiert das Python-Skript einen Neustart des Systems. Wird der Herunterfahren/OFF Schalter jedoch für mehr als 3 Sekunden betätigt, fährt das System herunter und kann anschließend von der Stromversorgung getrennt oder über den Reset Button wieder aufgeweckt werden.
Da das Raspberry Pi über das USB Kabel die Haupsteuereinheit (Arduino Board) mit Strom versorgt wird, wird dieses dann ebenfalls ausgeschalten.
Auswahl sd Karte
Die Anzahl der Schreibvorgänge auf der sd Karte wird bestimmt über die Anzahl der geloggten Kanäle (Systemparameter) sowie über das eingestellte Log-Intervall von volkszähler. Es hat sich herausgestellt, dass handelsübliche (Consumer) Micro-SD Karten, die direkt in das Raspberry eingesteckt werden zum Teil schon nach kürzester Zeit völlig unbrauchbar werden und ohne Backup sämtliche Logdaten verloren sind. Im industriellen Bereich werden spezielle SD Karten verwendet, die deutlich robuster gegen häufige Schreibzugriffe und äußere Umwelteinflüsse sind. Diese industriellen SD Karten (industrial grade) werden eingeteilt in die MLC- (Multi-Level Cell) und die SLC (Single-Level Cell) Technologie. Detaillierte Infos sind zu finden unter: https://www.elektronikpraxis.vogel.de/zehn-gruende-die-fuer-industrie-sd-karten-sprechen-a-284360/ Vorteile der industriellen SD Karten im Schnellüberblick:
- hohe Zuverlässigkeit und Langlebigkeit
- Schreibzyklen von 100.000 (SLC Flash) und für MLC-Flash (10.000) statt 200-300 in neueren SD Karten für Consumer-Anwendungen
- aufwändige Fehlerkorrekturalgorithmen (z.B. Hamming Code) um Lese- bzw. Schreibfehlern vorzubeugen
- gleichmäßige Verteilung der Schreibzugriffe auf alle Flash-Zellen durch das Wear-Leveling Verfahren.
- Sicherer Schutz bei Stromausfall durch markieren fehlerhafter Sektoren
- Rundum verschweißtes Gehäuse lässt SD Karte unempfindlich gegen äußere Spannungseinflüsse werden
- Vergrößerte Mechanische Stabilität
- Extra dicke und stabile Goldauflage auf Kontakten zur Erhöhung der Kontaktsicherheit und Lebensdauer
Im Projekt wurde folgende SD Karte eingesetzt: Transcend micro SDHC Card C10 Industrial 16GB für 30€ incl. Versand und MwSt.
Betriebssysteminstallation
Auf [9] wird ein Image für den Raspberry Pi angeboten, das die vollständige Betriebssysteminstallation incl. Volkszählersoftware enthält. Installation und Einrichtung sind unter folgendem Link beschrieben [10].
Folgende Skripte müssen nach der Betriebssysteminstallation noch manuell hinzugefügt werden:
Wpa_supplicant.conf
Dieses Skript beinhaltet alle Informationen über das Netzwerk, in das sich das Wlan des Raspberrys einwählen soll.
- Ausführbare Datei anlegen unter /etc/wpa_supplicant/ oder im Boot Verzeichnis der Linux Installation
- Folgender Dateiinhalt in einer Datei namens Wpa_supplicant mit der Endung .conf ablegen. Dabei unter dem Platzhalter >xxx< die jeweiligen Wlan Logindaten eintragen:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid=">xxx<"
psk=">xxx<"
key_mgmt=>xxx<
}
network={
ssid=">xxx<"
psk=">xxx<"
key_mgmt=>xxx<
}
3. Beim nächsten Neustart des Raspberry Pi's wird das Skript ausgeführt
Vzlogger.conf
Mit diesem Skript wird die Verknüpfung zwischen der eindeutigen UUID eines Kanals und den eingehenden Daten von der seriellen Schnittstelle hergestellt. (Ausführliche Erklärung siehe Abschnitt „Einrichtung der Kanäle im „web Frontend“ und in der Konfigurationsdatei „vzloggerconf“ unter 24-48V BMS
Push-server.service
Dieses Skript aktiviert den sogenannten push-Server (siehe Abschnitt „Starten des vzloggers über WinSCP“ bzw. unter [11])
Shutdownbutton.py
Siehe Abschnitt "Manueller Reset/Neustart des Raspberry Pi’s" in dieser Dokumentation
Vzsqlbackup.sh
Dieses Skript legt eine wöchentliche Sicherung der einige hundert MB großen Volkszähler-Datenbank mit Speicherdatum auf einem USB Stick an. Insgesamt bleiben immer die zwei älteren abgespeicherten Datenbankspeicherstände erhalten. Alle älteren werden gelöscht. Das Skript vzsqlbackup.sh wird wöchentlich automatisch ausgeführt, angestoßen von folgendem Befehl, der in der, auf einer Linuxinstallation existierenden Datei Crontab, angelegt werden muss. Hierfür die Eingabeaufforderung unter WinSCP starten, um per Kommandozeile über Menü --> Befehle --> „In PuTTY öffnen“ folgendes einzutippen: (siehe auch Beschreibung unter 24-48V_BMS BMS Doku Unterkapitel “ Starten des vzloggers über WinSCP„ :
# crontab öffnen
crontab -e
# Folgende Zeile eintragen:
# jeden Sonntag um 22Uhr wird ein Backup erzeugt
00 22 * * 0 /usr/local/bin/raspiBackup.sh
Zum Erstellen des Skripts vzsqlbackup.sh wird zuerst eine leere, mit root Rechten ausführbare Datei angelegt, die unter einem der folgenden Links abgespeichert sein muss:
- System-Scripte mit Root-Rechten: "/usr/local/sbin"
- Allgemeine User-Scripte mit Benutzer-Rechten: "/usr/local/bin"
Folgender Inhalt wird im Skript niedergeschrieben. Für >xxx< beliebiges Passwort vergeben. Es erfolgt beim Anlegen des Backups keine Passwortabfrage, da dies ja automatisch ausgeführt werden soll.
#USB Stick mounten
mount /dev/sda1 /mnt/stick
#Backupdatei anlegen und abspeichern
mysqldump -u vz-admin ->xxx< volkszaehler > /mnt/stick/pi/mysqlvzbackup-$(date +%Y%m%d-%H%M%S).sql
#älteste Datei im Verzeichnis löschen
ls -tr /mnt/stick/pi/mysqlvzbackup* | head -n -2 | xargs rm -v
#Ende Skript
exit 0
Datenübergabe Arduinoboard zu Raspberry Pi
Zum Einrichten der Kanäle im Raspberry Pi siehe Abschntt Vzlogger.conf. Folgende Kanäle werden derzeit vom Arduinoboard an das Raspberry übergeben:
- Batterie Spannung von Laderegler 1
- Energieerzeugung Laderegler 1 + 2
- Leistung Laderegler 1 + 2
- Summe Leistung Laderegler 1 + 2
- Ladestrom Laderegler 1 + 2
- Summe Energieerzeugung Laderegler 1+2
- Summe Ladestrom Laderegler 1 + 2
- Ladestatus Laderegler 1 + 2
- Errorstatus Laderegler 1 + 2
- Vorgabewert Heizstabansteuerung
- Saldierte Leistung Zweirichtungszähler
- Leistungsbezug Zweirichtungszähler
- Leistungseinspeisung Zweirichtungszähler
- Erzeugungsleistung PV
- Einspeiseleistung PV
- Temperatur Schaltschrank
- Temperatur Boiler
- Sollwert Leistung Wechselrichter
- Sollwert Stromaufnahme Wechselrichter
- Balancing Status
- SoC (State of Charge)
- Batteriespannung
- Lade-/Entladestrom
- Temperatur Batterie 1 + 2
- Zellspannung 1 - 9
Einrichtung der Kanäle im „web Frontend“ und in der Konfigurationsdatei „vzloggerconf"
Das Einrichten von Kanälen im „web Frontend“ sowie in der Konfigurationsdatei „vzloggerconf“, die Bedienung des Web Frontends, das Starten des „vzloggers über WinSCP und letztendlich den Export von Datenbanksätzen ist ausführlich beschrieben unter der Dokumentation 24-48V_BMS im Kapitel 5.
Übertragungsgeschwindigkeit der seriellen Schnittstelle zwischen Arduino und Raspberry
Um die Übertragungsgeschwindigkeit der seriellen Schnittstelle zwischen Arduino und Raspberry (vz logger) zu erhöhen (Standard 9600) bzw. an den derzeitigen Arduinocode anzupassen (115200) muss folgende Zeile nach nach der Zeile "device" eingefügt werden:
"device": "/dev/ttyACM0",
"baudrate": 115200,
"aggtime": 30,
Arduino komfortabel über das Raspberry Pi flashen
Um einen neuen Arduinocode komfortabel direkt vom Raspberry Pi auf das Arduino zu flashen, sind folgende Schritte zu befolgen:
1. Um den Vz logger zu stoppen, folgende Zeile in das Eingbefenster (putty) in WinSCP eingeben:
sudo systemctl stop vzlogger
2. Navigiere in das “home” Verzeichnis und liste alle vorhandenen Ordner auf mit:
ls
3. In Unterverzeichnis „Arduino“ wechseln (change directory):
cd Arduino
4. Code kompilieren mit richtigem Dateinamen (in diesem Falle PV-System_20190629):
arduino-cli compile --fqbn arduino:avr:mega PV-System_20190629
5. Code auf Arduino flashen mit richtigem Dateinamen (in diesem Falle PV-System_20190629):
arduino-cli upload --fqbn arduino:avr:mega --port /dev/ttyACM0 20190705_Heizstabregelung_Volleinspeisung/
6. vz logger starten
sudo systemctl start vzlogger
Eine ausführliche Anleitung zur Installation der benötigten Pakete ist unter folgendem Link zu finden [12]
Einrichtung Node-Red
Die freie Entwicklungsumgebung Node-Red bietet über eine grafische Oberfläche die Möglichkeit Anwendungsfälle im Bereich Internet der Dinge (Internet of Things, IoT) intuitiv im Baukastensystem umzusetzen. Die einzelnen Bausteine werden durch das Ziehen von Verbindungen verbunden. Der Quellcode ist im JavaScript geschrieben. Über Benutzerdefinierte Bausteine, die ebenfalls mit JavaScript gefüllt werden können, besteht somit die Möglichkeit den individuellen Anforderungen gerecht zu werden. Weiterhin besteht die Möglichkeit über ein Webinterface Daten in unterschiedlichster Weise übersichtlich darzustellen, um bspw. dem Solarspeicherbesitzer einen schnellen Überblick über Ladezustand, Spannungsniveau, Ladestrom und Fehlermeldungen zu geben.
Über die Exportfunktion können komplette Flows exportiert und in neuen Projekten funktionsfähig importiert werden.
Im vorliegenden Projekt wird Node-Red für folgende Funktionen verwendet:
1. Abgriff der Push-Daten von volkszähler zur Darstellung im Webinterface:
- Ladestrom
- Akkuspannung
- Error-Code
- Ladezustand Akkumulator
- Aktuelle Stromerzeugung
- Aktueller Stromverbrauch
- Zellbalancing
- Heizstabbetrieb
- Heizstableistung
- Boilertemperatur
2. Mailversand an Solarspeicherbesitzer bei Error
3. Berechnung der eingesparten Co2 Menge
4. Wetterbericht für den aktuellen und die nächsten zwei Tage
5. Berechnung der eingespeisten und verbrauchten Energie (Erzeugung, Verbrauch) für den aktuellen und die letzten zwei Tage
6. Ansteuerung der Funksteckdose (wahlweise manuelle Bedienung, automatische Anschaltung bis Tagesende bei Stromüberschuss, automatische Anschaltung nur explizit bei Stromüberschuss
Node-Red ist über einen beliebigen Browser über das Wlannetz, in dem auch das Raspberry registriert ist, über folgenden Link erreichbar:
http://192.168.1.2:1880/
Wie im folgenden Abschnitt beschrieben, sollte die Programmierumgebung über ein Passwort vor unberechtigtem Zugriff geschützt sein.
Das sogenannten Dashboard oder „UI – User Interface“ ist die optisch ansprechende Schnittstelle für den Nutzer, um die erfassten Datenströme zu visualisieren. Über verschiedene Zeiger, Balken, Schalter und Ausgaben ist es möglich sich eine professionelle Oberfläche zu gestalten.
Der in diesem Projekt verwendete Flow besitzt die in folgender Abbildung dargestellte Oberfläche.
Das User Interface ist zu erreichen unter http://192.168.1.2:1880/ui/#/0
Im UI gibt es folgende Rubriken:
1. Wlan-Steckdose
- Es kann über das Dropdownmenü zwischen drei verschiedenen Betriebsarten unterschieden werden:
- 1. Manuell: Manuelles Einschalten der Wlan gesteuerten Steckdose über den Schalter „switch“ im Dashboard
o 2. Takten: Die Steckdose wird automatisch angeschaltet (Verbraucher hinzugeschalten) zur Stromüberschussverwertung, so lange der Akkumulator voll ist. Fällt die Akkumulatorladung aus der Erhaltungsladung (Float) in die Ladung (Bulk) SOC schält die Steckdose wieder aus.
o 3. Anbleiben: Die Steckdose wird automatisch angeschaltet (Verbraucher hinzugeschalten) zur Stromüberschussverwertung. Auch wenn der Solarertrag nachlassen und der Akkumulator dadurch entladen werden sollte, bleibt die Steckdose bis 17Uhr angeschalten. (Wert im Quellcode variabel.)
2. Akku
Anzeige SOC (State of Charge) Akkumulator
Anzeige Akkumulatorpsannung
Anzeige Lade- und Entladestrom (Positiv und Negativ)
3. Wechselrichter
Anzeige aktuelle Wechselrichterleistung
Anzeige letzter 20 min Wechselrichterleistung
Anzeige Modbusleistung
4. Boiler
Anzeige Heizstableistung
Anzeige Boilertemperatur
5. Fehlermeldungen
Ausgabe Fehlermeldungen Arduino
Ausgabe Fehlermeldungen BMS
Akku Balancing
Anzeige welche Zelle aktuelle gebalanct wird. (Findet nur im geladenen Zustand des Akkumulator statt).
6. Allgemein
Anzeige der seit Inbetriebnahme der Anlage eingesparte Co2 Menge
Schaltschranktemperatur
7. Allgemein gestern / Allgemein heute
Darstellung der wichtigsten Tagesdaten des laufenden und des vorhergehenden Tages wie:
- Erzeugung WR in [kWh]
- Erzeugung Laderegler (LR) [kWh]
- Eingesparte Stromkosten [€]
- Solare Deckung [%]
- Co2 Einsparung [kg]
- Gesamtstromverbrauch [kWh]
8. Wettervorhersage morgen, übermorgen, überübermorgen
Anzeige einer Kurzwettervorhersage zur Einschätzung des Solarertrags der kommenden Tage
Der noch nicht komplett vollständige aktuelle Flow steht hier zum download bereit.
Installation von Node-Red
Doe folgende Installationsanleitung erfolgt in Anlehnung an das YoutubeVideo „Node-Red Tutorial Part 1 Installation Haus Automatisierung“ Youtube.[4] In der Regel ist auf dem Image der Linuxinstallation Raspian Strech Node-Red schon installiert, aber nicht in vollem Funtkionsumfang wie es hier benötigt wird. Deshalb muss zunächst ein Update der vorhandenen Programmpakete durchgeführt werden mit:
update-nodejs-and-nodered
Es erfolggt die Abfrage “Are you really sure to do this?” Mit „Yes“ bestätigen. Die Installation kann bis zu 20min dauern. Im Anschluss wird die installierte Version angezeigt und mittels Häkchen der Erfolg der Installation einzelner Komponenten angezeigt.
Um die Node-Red Oberfläche vor ungewolltem Zugriff zu schützen wird nun noch der sogenannte Node Red admin installiert. Dies erfolgt global und nicht im Node-Red Verzeichnis:
Sudo npm install -g node-red-admin
Um nun ein sicheres Passwort zu generieren folgenden Befehl eingeben:
Node-red-admin hash-pw
Nun ein beliebiges Password eingeben, das „gehascht“ werden soll. Den nun angezeigten Hash kopieren und wie folgt beschrieben in der „config“ eintragen.
Folgende Datei öffnen:
vi ~/.node-red/settings.js
Folgende Zeilen einkommentieren und den generierten Hashcode unter „password“ einfügen, sowie einen "username" vergeben.
Datei speichern mit folgendem Befehl
:wq
Nun muss noch der automatische Node Red Start bei Systemstart eingestellt werden mit:
sudo systemctl enable nodered.service
Ein Restart des Programms nach Installation durchführen:
sudo service restart
Ein Zugriff auf die Programmieroberfläche erfolgt über einen beliebigen Browser in der Eingabezeile über die IP des Raspberry Pi's (z.B. 192.168.1.2:1880). Um auf die Nutzeroberfläche zur professionellen Darstellung von Flowergebnissen das sogenannte Dashboard von Node-Red zu gelangen wird dieses nun wie folgt installiert: Auf der Programmieroberfläche unter dem „Burgermenü“ rechts oben auf „Manage palette“ klicken, dann auf „install“ und in die Suche „dashboard“ eingeben. „Node-red-dashboard installieren“ klicken. Der Zugriff auf das Dashboard erfolgt über die IP des Raspberry Pi's (z.B. 192.168.1.2/ui).
Installation von MQTT bzw. des MQTT Brokers
Anleitung in Anlehnung an folgende Tutorials [5][6]
Zuerst muss das “Repository” mit folgenden zwei Befehlen hinzugefügt werden:
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquito-repo.gpg.key
Nun das Verzeichnis wechseln:
cd /etc/apt/sources.list.d/
Die Pakete updaten:
sudo apt-get update
Nun wird die „mosquitto stretch list“ für verschiedene Pakete hinzugefügt:
sudo apt-get install mosquitto mosquitto-clients python-mosquitto
Tritt folgende Fehlermeldung auf, folgenden Workaround durchführen:
„Konnte nicht alle Pakete installieren, folgende Pakete haben unerfüllte Abhängigkeiten: mosquitto: Hängt ab von libwebsockets3 (>=1.2)ist aber nicht installierbar“
1. Zurück aus dem Verzeichnis /etc/apt/sources.list.d ins Grundverzeichnis wechseln über: cd
2. Manuelle Installation des fehlenden Paketes mit folgenden zwei Befehlen:
Wget http://ftp.nz.debian.org/debian/pool/main/libw/libwebsockets/libwebsockets3_1.2.2-1_armhf.deb
Sudo dpkg -I libwebsockets3_1.2.2-1_armhf.deb
3. Erneuter Installationsversuch von mosquitto durchführen:
Sudo apt-get install mosquito mosquito-clients
4. Starten des MQTT Broker
Sudo service mosquito start
In der Programmieroberfläche von Node-red kann nun der Node „mqtt“ auf die Oberfläche gezogen werden (vgl. hierzu auch Kapitel Funksteckdose). Ist das Node angeklickt, so erscheint wie in folgender Abbildung dargestellt, das folgende Fenster. Dort unter Server und Topic abgebildete Inhalte eintragen. Ein Klick auf den Stift hinter dem Eingabefeld Server führt zu dem abgebildeten Eingabefenster: Auch hier den Servernamen „localhost“ eintragen. Unter dem Register„Security“ müssen nun nochmals die oben erwähnten Anmeldedaten eingegeben werden. Abschluss der Einstellungen mit der Schaltfläche „Update“. Für weiterreichende Infos zur Ansteuerung einer Funksteckdose über das MQTT Protokoll siehe Abschnitt „Funksteckdose“.
Funksteckdose
Im vorliegenden Projekt wird die Wlan Steckdose Sonoff Tasmota S 20 Smart verwendet und über NodeRed auf dem Raspberry gesteuert. Diese Steckdose kommuniziert über das MQTT Protokoll mit dem Raspberry, das im Internet der Dinge weite Verbreitung gefunden hat. Vor Verwendung der Steckdose für die eigenen Zwecke muss deren Firmware auf dem integrierten Chip ESP 8266 geflasht werden. Neuerdings ist es auch möglich einen Steckdosen-Schalter mit Tasmota auch fertig geflasht zu kaufen z.B. unter: [7]
Die theoretischen Grundlagen zur Wlan Steckdose sind unter folgenden Links zu finden:
- Generelle Bechreibung der Sonoff S20:
Unter Youtube sind folgende Tutorials zu empfehlen:
1. Sonoff Teil 4 - FHEM-Integration haus-automatisierung
[9]
2. Sonoff Teil 17 - Die verfügbaren Befehle und die Konsole
[10]
Weitere Infos zur Sonoff-Tasmota Steckdose sind unter Github zu finden:
1. [11]
2. [12]
Weitere Infos zum MQTT Protokoll sind unter folgenden Links zu finden:
1. Beschreibung des MQTT (Message Queue Telemetry Transport) Protokolls
[13]
[14]
2. Funkkommunikation zwischen Raspberry Pi’s mittels MQTT Broker/Client
[15]
Um die Steckdose über das Raspberry selbst ansteuern zu können, muss die Firmware des IC’s ESP8266 geflasht werden:
- Eine Beschreibung und ein Wiki sind hierzu unter folgenden Links zu finden:
- Das unter folgendem Link vorhandene Tutorial erklärt den Hardwareanschluss des IC’s ESP8266 zu flashen:
- Folgendes Tutorial beschreibt den Software-flash mit dem Esp-Tool:
- ↑ Linktext, Wiki in Arbeit....
- ↑ Voelkner,.
- ↑ Voelkner,.
- ↑ Node-Red Tutorial Part 1 Installation Haus Automatisierung,.
- ↑ install-an-mqtt-broker-on-your-raspberry-pi,.
- ↑ how-to-install-mosquitto-broker-on-raspberry-pi,.
- ↑ www.delock.de,.
- ↑ www.itead.cc,.
- ↑ www.youtube.com,.
- ↑ www.youtube.com,.
- ↑ www.github.com,.
- ↑ www.github.com,.
- ↑ www.wikipedia.org,.
- ↑ www.wikipedia.org,.
- ↑ www.tutorials-raspberrypi.de,.
- ↑ www.github.com,.
- ↑ www.github.com,.
- ↑ www.github.com,.
- ↑ www.github.com,.