OpenDTU: Auslesen von PV-Wechselrichtern

Offizielle DTU von Hoymiles zu teuer? Wir bauen uns selbst etwas! 🔦

OpenDTU: Auslesen von PV-Wechselrichtern
Photo by Raze Solar / Unsplash

Seit ungefähr einem halben Jahr habe ich auch ein kleines Balkonkraftwerk, weil mich das Thema einfach ungemein interessiert hatte und ich wissen wollte, welches Potenzial es bietet.

Komponenten meines Balkonkraftwerks ☀️

Um ehrlich zu sein habe ich kein klassisches Balkonkraft von der Stange, wie es z.B. ALDI und Konsorten es immer mal wieder anbieten. Stattdessen habe ich viel im Internet recherchiert welche Komponenten gut sind und welche Wechselrichter gute und effektive Arbeit leisten.

Vor nicht allzu langer Zeit gab es dann bei Alternate echt gute Angebote. Hier gab es das Trinasolar Solarpanel TSWM-DE09R.08W mit 425W für knapp 146€. Dazu habe ich mir dann einen Hoymiles HM-800 von Offgridtec für knapp 169€ zugelegt. Nach dem ich alles aufgebaut hatte, wollte ich dann natürlich auch den Wechselrichter per Home Assistant auslesen und ggf. automatisieren.

Hoymiles bietet mit der DTU (pro) eine Lösung an, um genau das zu machen. Hier gibt es zwei Varianten. Einmal die DTU-WLite für knapp 59€ (inkl. MwSt) oder die DTU-Pro für 249€ (inkl. MwSt).

Wow, das musste ich erst einmal sacken lassen. Beider Varianten benötigen einen Zugang zur S-Miles Cloud. Uncool und definitiv zu teuer.

Open-Source to the rescue 🆘

Und genau darum liebe ich die Entwickler-Community. Die findet sich nicht mit überteuerten Produkten ab, die einen mageren Funktionsumfang haben. Die reverse-engineeren das Produkt und bauen einfach eine eigene Software. Genau so ist die Software OpenDTU entstanden. Das schöne an OpenDTU ist auch, dass Ihr damit nicht nur Daten auslesen könnt, Ihr könnt damit auch das Limit des Wechselrichters setzen, was manche Versorger/Netzbetreiber fordern.

GitHub - tbnobody/OpenDTU: Software for ESP32 to talk to Hoymiles Inverters
Software for ESP32 to talk to Hoymiles Inverters. Contribute to tbnobody/OpenDTU development by creating an account on GitHub.

Dafür werden nur wenige Parts benötigt:
- Ein Mikrocontroller (ESP32 am besten)
- Eine Radioantenne (NRF24L01+ oder CMT2300A je nach Wechselrichter)
- Lötkolben, Litzen etc. (oder für nicht so DIY-Geschädigte Menschen ein fertiges Kit)
- Ein Gehäuse (oder ein Kit mit einem Gehäuse)

Alles in allem dürfte man für DIY so ungefähr 20€ ausgeben inkl. ein Gehäuse aus dem 3D-Drucker. Wenn man alles schon fertig haben will, kann es auch schon sein, dass man seine 30-60€ ausgeben muss, je nach Anbieter. Aber immerhin noch günstiger als der offizielle "Müll".

Verdrahten und Löten: DIY ist angesagt 🥽

Um das Zusammenbauen und Löten werdet Ihr leider nicht drumherum kommen. Egal ob ein Kit oder alle Teile einzeln bestellt.

Das Löten von solchen Teilen erfordert etwas Erfahrung und vor allem Sorgfalt. Wenn Ihr so etwas noch nie gemacht habt, dann bittet einen Freund oder Jemanden, der es kann. Ihr könnt hier sehr schnell die Komponenten komplett zerstören.

Dank der Anleitung im GitHub ist das aber gut und schnell gemacht, wenn man Löten kann und man schon die eine oder andere Erfahrung in dem Bereich hat.

Die Pin-Belegungen sind hier alle sehr gut beschrieben (z.B. für das NRF24L01+):

Schematic
Symbolic

Schaut Euch bitte diese Daten und die Belegungen in der Doku sehr gründlich an und prüft das alles nochmal durch. Ich kann es Euch nur wärmstens empfehlen:

GitHub - tbnobody/OpenDTU: Software for ESP32 to talk to Hoymiles Inverters
Software for ESP32 to talk to Hoymiles Inverters. Contribute to tbnobody/OpenDTU development by creating an account on GitHub.

Für das bisschen was ich Löte, reicht so ein 30€ Hobel von Amazon aus, da muss es keine ganze Weller-Lötstation sein. Schaut aber, dass Euer Lötzinn kein Blei enthält. Bleidämpfe sind nicht so ganz gesund und können echt fies werden.

Wenn Ihr alles zusammengelötet habt, dann kann es auch schon direkt zur Software gehen.

Der Mikrocontroller schmeckt nur gebraten 🥩

Damit der Mikrocontroller nun auch weiß, was er tun muss, braucht er die Firmware.

Beim Flashen der Firmware müsst Ihr auch sehr sorgfältig umgehen. Macht Ihr dort etwas falsch, kann es passieren, dass Euer Mikrocontroller "gebricked" ist. Bitte lest Euch daher gut in das Flashen der Controller ein und prüft alles vorab.

Für das Flashen gibt es mehrere Varianten die bei OpenDTU sehr gut beschrieben sind. Hier solltet Ihr euch für eine Variante entscheiden. Ich persönlich bevorzuge die Variante über das ESP-Flashtool.

GitHub - tbnobody/OpenDTU: Software for ESP32 to talk to Hoymiles Inverters
Software for ESP32 to talk to Hoymiles Inverters. Contribute to tbnobody/OpenDTU development by creating an account on GitHub.

Er lebt! 🧟

Wenn alles geklappt hat, baut OpenDTU nun einen Access-Point mit der SSID OpenDTU-* auf. Den könnt Ihr einfach mit dem Gerät Eurer Wahl nutzen und im Browser über die URL http://192.168.4.1 auf die Web-Oberfläche von OpenDTU zugreifen.

Unter Settings -> Network müsst Ihr dann Euer WLAN samt Kennwort angeben. Danach wird der Access-Point nach 3 Minuten beendet und OpenDTU verbindet sich mit dem angegebenen WLAN.

Über die zugewiesene IP-Adresse kommt man dann wieder auf die Adminoberfläche. Diese brauchen gleich noch einmal.

💡
OpenDTU benötigt zwingend einen NTP-Server, da dieser für die Haltung der Uhrzeit benötigt wird und diese Zeit bei jeder Anfrage an den Wechselrichter mitgeschickt wird. Schaltet also bitte nicht den ganzen externen Traffic für OpenDTU ab (außer Ihr habt einen internen NTP-Server).

Wechselrichter konfigurieren 🛠️

In der Adminoberfläche kann dann unter den Settings ein Wechselrichter konfiguriert werden:

Dies ist zwingend notwendig, denn ohne das, klappt das Auslesen des Wechselrichters nicht. Die Seriennummer findet Ihr auf dem Gerät selbst. Diese wird verwendet, soweit ich weiß, verwendet um praktisch eine Authentifizierung am Gerät zu ermöglichen und zu validieren, dass die Kommunikation mit dem Gerät erlaubt ist. Sonst könnte ja jeder Nachbar Euren Wechselrichter auslesen.

Anhand der Seriennummer wird auch ermittelt, um welchen Wechselrichtertyp es sich handelt und welche Spezifikationen er besitzt. Ist der Wechselrichter angelegt, könnt Ihr diesen editieren und könnt hier noch ein paar Einstellungen vornehmen. Meine Einstellungen für den HM-800 sieht wie folgt aus:

Allgemeine Einstellungen des Wechselrichters
Einstellungen der Strings

Passt die Daten bitte entsprechend Eurer String/Panels an. Danach braucht OpenDTU ein paar Minuten um die Verbindung mit Euren Wechselrichter aufzubauen. Hat alles geklappt, sollte es wie folgt aussehen:

Bei mir ist es aktuell abends, weswegen keine Verbindung zum Wechselrichter aufgebaut werden kann. Das ist völlig normal, da der Wechselrichter erst durch den Strom der Panels gespeist wird.

Das war's auch eigentlich schon. Nun habt Ihr erfolgreich Euren Wechselrichter digital angebunden und könnt die Werte immer ablesen.

OpenDTU in Home Assistant einbinden

Wie auch in meinem Artikel "Analoge Gas- und Wasserzähler smart machen" beschrieben, bietet OpenDTU auch eine MQTT-Schnittstelle an. Auch hier gibt es eine Home Assistant Discovery, die eingeschaltet werden kann. Einfach die Daten des MQTT-Brokers eintragen und das war's schon:

MQTT-Einstellungen

Danach sollte der Wechselrichter nun als Gerät im Home Assistant auftauchen und alle Parameter als Entitäten angelegt haben:

Darüber lassen sich dann sinnvolle Automatisierungen fahren und auch der Erzeugung/Einspeisung im Energy-Dashboard von Home Assistant aufzeichnen. So habt Ihr auch immer schön im Blick, was Eure Anlage leistet und was Ihr durch den selbst produzierten Strom ein Energiekosten spart:

Eigener Tab im Home Assistant für die PV-Anlage

Damit ich immer alle Parameter im Blick habe, habe ich mir auch ein schönes Dashboard im Home Assistant dafür gebaut:

Für die Ertragsprognose nutze ich die Integration "Forecast.Solar":

Forecast.Solar
Instructions on how to integrate Forecast.Solar within Home Assistant.

Alles andere düfte mit Boardmitteln von Home Assistant umsetzbar sein. Ich habe Euch das Dashboard mal exportiert und als Gist bei GitHub abgelegt, falls Ihr Interesse daran habt.


Habt Ihr die Einrichtung geschafft und Euren Wechselrichter nun jederzeit ablesbar im WLAN? Lasst es mich in den Kommentaren wissen 👇