Mit der neuen Photovoltaikanlange auf dem Dach ist der nächste logische Schritt, der Hausautomatik beizubringen, wieviel Energie momentan zur Verfügung steht. Der SolarEdge-Wechselrichter bringt eine leistungsfähige API mit, die ich hier in OpenHAB integriere.

Motivation

Für die Integration von neuen Services in die Hausautomatisierung muss ich ehrlich gesagt nicht sonderlich motiviert werden. "Weil es geht" ist eine ausgezeichnete Begründung. 

Dennoch gibt es auch objektive Gründe für die Einbindung der PV-Anlage in das SmartHome. Das beste, was man mit dem Strom vom Dach anstellen kann, ist ihn verbrauchen (natürlich sinnvoll). Liefert die Solaranlage auf dem Dach genügend Energie und der Speicher ist voll, ist es sinnvoll stromintensive Verbraucher JETZT anzuschalten und nicht dann, wenn man teuren Strom aus dem Netz beziehen muss. Dafür muss man aber wissen, wie der aktuelle Status ist. 

Unsere Technik

Wir haben im Haus einen SolarEdge-10K-Wechselrichter verbaut. Dieser stellt eine ganz brauchbare API zur Verfügung und bringt auch eine App mit, mit der man auf dem Smartphone den aktuellen Systemstatus sehen kann. 

Über die API sind im Wesentlichen dieselben Informationen auslesbar (ich vermute schwer, die API existiert, weil SolarEdge die App dazu bereitstellt) und liefert Informationen über die aktuelle Produktion, den Verbrauch des Hauses und ob gerade Strom ins öffentliche Netz geliefert oder von dort bezogen wird.

Als zusätzlichen API-Endpunkt habe ich auch den Speicherstatus gefunden; da unser Akku aber noch nicht installiert wurde, muss ich die Informationen dazu nachliefern.

OpenHAB2-Bindung: SolarEdge

Für OpenHAB existiert ein eigenes Binding, um Daten von SolarEdge anzubinden. Dieses kann über die PaperUI einfach aktiviert werden. 

Wie an anderer Stelle bereits geschrieben, definiere ich meine Things und Items lieber in Konfigurationsdateien als über PaperUI - es ist später deutlich einfacher, diese wiederzufinden und für das eigene Regelset anzusprechen.

Zunächst einmal muss man sich über die Website https://monitoring.solaredge.com einloggen und die API freischalten.  Dazu klickt man auf den Bereich Admin, dann Anlagenzugriff und setzt die Checkbox bei API-Zugriff. Dort sieht man dann auch seine Anlagennummer und den API-Key, den man bei der Einrichtung des Things gleich benötigt.

Das SolarEdge-Binding erlaubt auch die inoffizielle Nutzung einer Private-API; da ich aber stabile APIs mag, habe ich mich für die Nutzung der offiziellen API entschieden. 

In /etc/openhab2/things habe ich eine neue Datei erstellt: solaredge.things mit folgendem Inhalt: 

 

solaredge:generic:se10k     [ tokenOrApiKey="*****", solarId="19*****", meterInstalled=true, usePrivateApi=false, liveDataPollingInterval=15, aggregateDataPollingInterval=60 ]

 

Die Zeitangaben der Polling-Intervalle sind in Minuten (nicht in Sekunden, wie ich ursprünglich angenommen habe). Die Public-API erlaubt 300 Zugriffe am Tag; wer das Intervall hier deutlich kürzer setzen möchte, muss dann wohl auf die inoffizielle Private-API umsteigen. 

SolarEdge-Items

Damit wir auf die entsprechenden Werte zugreifen können, definieren wir die dazu passenden Items ebenfalls in einer neuen Datei in /etc/openhab2/items/solaredge.items

 

Number:Power            SE10K_Live_Production   "PV Produktion [%.2f %unit%]"    {channel="solaredge:generic:se10k:live#production"}
Number:Power            SE10K_Live_Consumption  "Aktueller Verbrauch [%.2f %unit%]"    {channel="solaredge:generic:se10k:live#consumption"}
Number:Dimensionless    SE10K_Live_Batterylevel        "Batterieladung"                 {channel="solaredge:generic:se10k:live#battery_level"}
Number:Energy           SE10K_Day_Production    "PV Produktion [%.1f kWh]"       {channel="solaredge:generic:se10k:aggregate_day#production"}
Number:Energy           SE10K_Day_Consumption   "Stromverbrauch [%.1f kWh]"       {channel="solaredge:generic:se10k:aggregate_day#consumption"}
String			SE10K_Status	 "PV Aktueller Status" 		  {channel="solaredge:generic:se10k:live#load_status" }

 

 

Auslesen der Werte

Nachdem die Definitionen der Items abgeschlossen ist, kann es ein paar Minuten dauern, bis die Werte ausgelesen werden können. Wundere Dich also insbesondere nicht, wenn Du versuchst, eine Web-Übersicht im HAB-Panel zu erstellen und am Anfang nur NULL-Werte erhälst.

In der OpenHAB-CLI können die Items einfach ausgelesen werden: 

 

willmann@raspberrypi:/etc/openhab2/items# openhab-cli console

Logging in as openhab
Password:  

                          __  _____    ____      
  ____  ____  ___  ____  / / / /   |  / __ )     
 / __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __  | 
/ /_/ / /_/ /  __/ / / / __  / ___ |/ /_/ /      
\____/ .___/\___/_/ /_/_/ /_/_/  |_/_____/     
    /_/                        2.5.5
                               Release Build   

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown openHAB.

openhab> smarthome:status SE10K_Live_Consumption                                                                                                                                                
1.37 kW
openhab> smarthome:status SE10K_Live_Production
0.0 kW

 

(ich schreibe diesen Artikel abends, draußen ist es dunkel und deshalb produzieren die Module auf dem Dach momentan keinen Strom. die 0.0 kW sind also korrekt)

Auf diese Werte kann über Rules dann natürlich entsprechend reagiert werden, z.B. ein Gerät eingeschalten werden, wenn die aktuelle Produktion größer als der Verbrauch ist und der Batteriespeicher zu mindestens 75% geladen ist. Oder was für Deinen Einsatzzweck eben am besten passt. 

Und natürlich ist es auch möglich, im OpenHAB-Panel eine Übersicht zu erstellen, die man dann auf einem Tablet oder einem Display im Haus jederzeit sichtbar macht. 

Die aktuellen Werte aus der SolarEdge-API dargestellt in OpenHAB