Zum Inhalt springen
SONOYA.com
Raspberry Pi & Linux

Balkonkraftwerk in Home Assistant: Hoymiles mit OpenDTU

Hoymiles-Wechselrichter lokal auslesen: OpenDTU auf einem ESP32 einrichten, per MQTT in Home Assistant einbinden und Solarstrom gezielt nutzen.

Von

Solarmodul-Symbol auf dunkelrotem Verlauf für ein Balkonkraftwerk mit Hoymiles-Wechselrichter, das OpenDTU lokal an Home Assistant meldet

Ein Balkonkraftwerk liefert an einem guten Tag mehrere Kilowattstunden, aber wie viel davon wirklich im eigenen Haushalt landet, siehst Du ohne Messung nicht. Die meisten Anlagen in Deutschland arbeiten mit einem Wechselrichter von Hoymiles. Dessen Daten landen ab Werk entweder gar nicht bei Dir oder nur über eine Hersteller-Cloud mit eigener App, die sich nicht sinnvoll mit dem Rest Deines Smart Homes verbinden lässt.

OpenDTU ändert das. Die Open-Source-Firmware läuft auf einem ESP32 mit einem kleinen Funkmodul, spricht direkt per Funk mit dem Wechselrichter und gibt die Werte lokal per MQTT an Home Assistant weiter. Du siehst dann Leistung, Tagesertrag und Gesamtertrag in Echtzeit, kannst das Energie-Dashboard füttern und Geräte genau dann einschalten, wenn die Sonne scheint.

Diese Anleitung bezieht sich auf OpenDTU in der Version v26.9.28 vom September 2026 und Home Assistant 2026.11. Grundlage ist die offizielle OpenDTU-Dokumentation.

Welches Funkmodul Dein Wechselrichter braucht

Hoymiles hat zwei Gerätefamilien, die auf unterschiedlichen Frequenzen funken. Bevor Du Hardware kaufst, schau auf das Typenschild Deines Wechselrichters:

ModellreiheBeispieleFunkmodul
HMHM-300, HM-600, HM-800, HM-1500NRF24L01+
HMS und HMTHMS-800W-2T, HMS-1600-4T, HMT-2250-6TCMT2300A

Die meisten Balkonkraftwerke, die seit 2023 verkauft werden, haben einen HMS-Wechselrichter, also brauchst Du in der Regel das CMT2300A. Die vollständige Liste unterstützter Modelle steht in der Hardware-Übersicht von OpenDTU.

Die Hardware

Du kannst ein ESP32-Board und das Funkmodul selbst verkabeln. Einfacher und weniger fehleranfällig ist eine fertige Platine, auf der beides schon verbunden ist und die oft mit vorinstallierter OpenDTU-Firmware geliefert wird. Solche Boards findest Du unter dem Suchbegriff OpenDTU-Platine für Hoymiles HMS (Affiliate Link). Achte beim Kauf darauf, dass das passende Funkmodul aus der Tabelle oben dabei ist.

Dazu kommen ein USB-Netzteil mit 5 Volt und mindestens 1 Ampere und ein Platz in Funkreichweite des Wechselrichters. Bewährt hat sich ein Fensterbrett auf der Seite, auf der die Anlage hängt. Durch eine Stahlbetonwand reicht der Funk oft nicht.

Auf der Home-Assistant-Seite brauchst Du einen MQTT-Broker. Wenn Du Home Assistant OS nutzt, installierst Du dafür unter Einstellungen > Apps die App Mosquitto broker aus dem Store, startest sie und fügst danach die Integration MQTT hinzu, die Home Assistant Dir meist schon als neu erkannt anbietet.

OpenDTU aufspielen

Ist Dein Board schon mit OpenDTU geliefert worden, überspringst Du diesen Abschnitt. Sonst lädst Du von der Release-Seite auf GitHub die Datei opendtu-generic_esp32.factory.bin herunter. Bei einem Board mit ESP32-S3 nimmst Du stattdessen die Datei mit esp32s3 im Namen. Für den ersten Flash ist die Variante mit .factory im Namen wichtig, weil sie zusätzlich den Bootloader und die Partitionstabelle enthält.

Zum Flashen nutzt Du am Mac oder unter Linux das Werkzeug esptool. Mit Homebrew installierst Du es so:

Code
brew install esptool

Schließ das Board per USB an und schreibe die Firmware an den Anfang des Flash-Speichers:

Code
esptool --chip esp32 write-flash 0x0 opendtu-generic_esp32.factory.bin

esptool findet den seriellen Anschluss in der Regel selbst. Findet es keinen, fehlt meist der Treiber für den USB-Chip des Boards, oder das USB-Kabel kann nur laden und keine Daten übertragen.

Die Ersteinrichtung

Nach dem ersten Start öffnet OpenDTU ein eigenes WLAN mit dem Namen OpenDTU- und einer Nummer dahinter. Verbinde Dich mit dem Passwort openDTU42 und öffne im Browser http://192.168.4.1. Für die Einstellungen meldest Du Dich mit dem Benutzer admin und demselben Passwort an.

Arbeite dann diese Punkte der Reihe nach ab:

  1. Passwort ändern. Unter Settings > Security Settings vergibst Du ein eigenes Passwort. Das Standardpasswort ist öffentlich bekannt.
  2. WLAN einrichten. Unter Settings > Network Settings trägst Du Dein Heimnetz ein. Sobald OpenDTU verbunden ist, schaltet es das eigene WLAN nach drei Minuten ab. Die neue IP-Adresse findest Du in Deinem Router, bei einer FRITZ!Box unter Heimnetz > Netzwerk.
  3. Geräteprofil wählen. Unter Settings > Device Manager wählst Du das Profil, das zu Deiner Platine passt. Der Hersteller einer fertigen Platine nennt Dir das richtige. Ohne Profil weiß die Firmware nicht, an welchen Pins das Funkmodul hängt.
  4. Wechselrichter hinzufügen. Unter Settings > Inverter Settings trägst Du die Seriennummer vom Typenschild ein. OpenDTU kann Wechselrichter nicht selbst finden, die Nummer muss also exakt stimmen.

Nach ein bis zwei Minuten erscheint der Wechselrichter in der Live-Ansicht mit Leistung je Modul und Tagesertrag. Nachts steht dort, dass er nicht erreichbar ist. Das ist normal, denn ohne Sonne hat der Wechselrichter keinen Strom und schaltet sich ab.

Die Werte an Home Assistant schicken

Öffne in OpenDTU Settings > MQTT Settings und trage diese Werte ein:

  • Enable MQTT einschalten.
  • Hostname: die IP-Adresse Deines Home Assistant.
  • Port: 1883.
  • Username und Password: ein Home-Assistant-Benutzer. Am saubersten legst Du dafür unter Einstellungen > Personen einen eigenen Benutzer opendtu an.
  • Enable Home Assistant MQTT Auto Discovery einschalten.

Nach dem Speichern legt Home Assistant automatisch ein Gerät für OpenDTU und eines für jeden Wechselrichter an. Du findest sie unter Einstellungen > Geräte & Dienste > MQTT. Die wichtigsten Entitäten sind die aktuelle Leistung in Watt, der Tagesertrag und der Gesamtertrag in Kilowattstunden.

Das Energie-Dashboard füttern

Öffne Einstellungen > Dashboards > Energie und füge unter Solarmodule die Entität für den Gesamtertrag Deines Wechselrichters hinzu, also den Wert mit YieldTotal im Namen. Nimm bewusst den Gesamtertrag und nicht den Tagesertrag: Home Assistant berechnet die Differenzen selbst und kommt mit einem stetig steigenden Zähler am besten zurecht.

Ab dem nächsten Tag zeigt das Dashboard, wie viel Strom die Anlage pro Stunde erzeugt hat. Wenn Du zusätzlich einen Zähler für Bezug und Einspeisung hast, etwa einen Lesekopf am digitalen Stromzähler, rechnet Home Assistant auch aus, wie viel Deines Solarstroms Du selbst verbraucht hast.

Geräte bei Sonnenschein einschalten

Jede Kilowattstunde, die Du selbst verbrauchst, statt sie ohne Vergütung ins Netz zu schicken, spart den vollen Strompreis. Am einfachsten nutzt Du den Überschuss mit Geräten, die nur Strom brauchen und es nicht eilig haben: ein E-Bike-Akku, eine Powerstation oder ein Luftentfeuchter im Keller. Sie hängen an einer schaltbaren Steckdose, wie der im Shelly Outdoor Plug S Gen3 im Test: smarte Außensteckdose vorgestellten.

Diese Automation schaltet die Steckdose ein, wenn die Anlage zehn Minuten lang mehr als 400 Watt liefert, und wieder aus, wenn die Leistung zehn Minuten unter 250 Watt fällt:

Code
alias: Solarüberschuss Ladegerät
mode: single
triggers:
  - trigger: numeric_state
    entity_id: sensor.hms_800w_2t_power
    above: 400
    for:
      minutes: 10
    id: sonne
  - trigger: numeric_state
    entity_id: sensor.hms_800w_2t_power
    below: 250
    for:
      minutes: 10
    id: wolken
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: sonne
        sequence:
          - action: switch.turn_on
            target:
              entity_id: switch.ladegeraet
      - conditions:
          - condition: trigger
            id: wolken
        sequence:
          - action: switch.turn_off
            target:
              entity_id: switch.ladegeraet

Ersetze sensor.hms_800w_2t_power durch die Leistungs-Entität Deines Wechselrichters und switch.ladegeraet durch Deine Steckdose. Die Lücke zwischen 400 und 250 Watt verhindert, dass die Steckdose bei jeder Wolke an- und ausgeht. Die Werte passen zu einem Verbraucher mit etwa 100 bis 200 Watt und einem Grundverbrauch im Haushalt von rund 150 Watt. Liegt Dein Grundverbrauch höher, setzt Du beide Schwellen entsprechend nach oben.

Die Regel ist eine Näherung, weil sie nur die Erzeugung kennt und nicht, was gerade im Haus verbraucht wird. Genauer wird es mit einem Lesekopf am Stromzähler, dann kannst Du auf die tatsächliche Einspeisung reagieren. Wenn Du einen dynamischen Stromtarif hast, lohnt sich zusätzlich der Artikel Dynamischer Stromtarif in Home Assistant nutzen, denn dann ist auch Netzstrom zu bestimmten Stunden günstig.

Leistung begrenzen

OpenDTU kann die Ausgangsleistung des Wechselrichters begrenzen. In der Live-Ansicht findest Du dafür beim Wechselrichter den Knopf für die Leistungsbegrenzung, und per MQTT gibt es dafür eigene Befehle. Eine persistente Begrenzung bleibt über Nacht erhalten, eine nicht persistente gilt nur, bis der Wechselrichter abends abschaltet.

Für Balkonkraftwerke gilt in Deutschland seit dem Solarpaket I eine Wechselrichterleistung von bis zu 800 Voltampere. Ob Deine Anlage diese Grenze einhält, regelt das Zertifikat des Wechselrichters und nicht eine Einstellung in OpenDTU. Die Begrenzung ist eher für Fälle gedacht, in denen Du die Einspeisung bewusst drosseln willst. Häufiges Ändern der persistenten Grenze solltest Du vermeiden, denn sie wird jedes Mal in den Speicher des Wechselrichters geschrieben.

Wenn etwas hakt

Der Wechselrichter bleibt tagsüber unerreichbar. Prüfe zuerst die Seriennummer. Danach den Abstand: Stell OpenDTU testweise direkt neben den Wechselrichter. Klappt es dort, fehlt im normalen Betrieb Funkreichweite. Eine externe Antenne am Funkmodul oder ein Platz näher am Fenster hilft.

OpenDTU zeigt Werte, Home Assistant nicht. Prüfe auf der OpenDTU-Seite unter Info > MQTT, ob die Verbindung zum Broker steht. Steht sie, aber es erscheint kein Gerät, ist meist die Auto Discovery ausgeschaltet oder der MQTT-Benutzer falsch.

Die Uhrzeit stimmt nicht. OpenDTU braucht Zugriff auf einen NTP-Server. Unter Settings > NTP Settings stellst Du die Zeitzone auf Europe/Berlin ein. Ohne korrekte Uhrzeit rechnet der Tagesertrag falsch.

Fazit

Mit einer Platine für 20 bis 40 Euro und einer halben Stunde Einrichtung wird aus der Blackbox am Balkon eine Datenquelle, die in Home Assistant mitspielt. Der größte Nutzen liegt nicht in den hübschen Kurven, sondern darin, dass Du Verbraucher in die Sonnenstunden verschieben kannst. Bei einem Strompreis um 30 Cent je Kilowattstunde bringt jede Kilowattstunde Eigenverbrauch mehr, als die Einspeisung jemals einbringen würde.

Weiterlesen.