Geräteprofil · Wechselrichter und Speicher
Hoymiles über OpenDTU (MQTT)
Hinweis: Dieses Profil ist nach dem Quellcode von OpenDTU v26.9.28 (
src/MqttHandleInverter.cpp,src/MqttSettings.cpp,lib/Hoymiles) und der OpenDTU-Dokumentation (MQTT Topics) erstellt.
OpenDTU ist eine quelloffene Firmware für einen ESP32, die Hoymiles-Mikrowechselrichter – typisch für Balkonkraftwerke – per Funk ausliest und steuert, ganz ohne Hoymiles-Cloud. Unterstützt werden die Serien HM (Funkmodul NRF24L01+) sowie HMS und HMT (Funkmodul CMT2300A). OpenDTU veröffentlicht alle Werte über MQTT; mit diesem Add-on kommen sie in nomos.
Für jeden Wechselrichter wird in nomos ein eigenes Gerät angelegt. Die Erreichbarkeit der OpenDTU selbst, ihre WLAN-Qualität und die Summen aller Wechselrichter liefert das Profil OpenDTU.
Voraussetzungen
- OpenDTU mit eingerichteten Wechselrichtern; bei jedem Wechselrichter sind Daten abrufen und Befehle senden eingeschaltet (Standard).
- Ein MQTT-Broker, den OpenDTU und nomos gemeinsam nutzen:
- entweder der Broker des nomos Controllers (Port 1883, Zugangsdaten aus den nomos-MQTT-Einstellungen),
- oder ein vorhandener Broker (z. B. Mosquitto), auf den in den nomos-MQTT-Einstellungen umgestellt wird.
- MQTT in OpenDTU einschalten unter Einstellungen → MQTT:
- MQTT aktivieren ein, Hostname/IP und Port des Brokers, ggf. Benutzername und Passwort
- Basis-Topic: Standard ist
solar/(muss mit/enden) - Retain-Flag aktivieren: ein (Standard) – dann hat nomos nach einem Neustart sofort alle Werte
OpenDTU veröffentlicht dann jeden Wert als eigenes Topic <Basis-Topic><Seriennummer>/... und nimmt Befehle unter <Basis-Topic><Seriennummer>/cmd/... entgegen.
Einrichtung
- Skills → MQTT aktivieren (falls noch nicht aktiv) und den Broker wie oben beschrieben einstellen
- Skills → Add-ons: Profil Hoymiles Micro-inverter (OpenDTU) importieren
- Gerät anlegen, Namen eingeben und als MQTT Topic das Basis-Topic plus Seriennummer des Wechselrichters eintragen, ohne Schrägstrich am Ende – z. B.
solar/116181234567. Die Seriennummer (12 Stellen) steht in OpenDTU unter Einstellungen → Wechselrichter und auf dem Typenschild. - Für jeden weiteren Wechselrichter ein weiteres Gerät mit dessen Seriennummer anlegen.
- Empfohlen: zusätzlich ein Gerät mit dem Profil OpenDTU anlegen (MQTT Topic
solar), damit sichtbar wird, wenn die OpenDTU selbst ausfällt.
Datenbereich
Alle Topics relativ zum MQTT Topic des Geräts (z. B. solar/116181234567/0/power).
| Topic | nomos-Wert | Inhalt |
|---|---|---|
status/reachable |
reachable |
Wechselrichter per Funk erreichbar (1/0) |
status/producing |
active, inverter_power |
Wechselrichter speist ein (1/0, AC-Leistung > 0) |
0/power |
pv_power |
AC-Ausgangsleistung, W (das, was im Haus ankommt) |
0/powerdc |
dc_power |
DC-Leistung aller Eingänge, W (ausgeblendet) |
1/power … 4/power |
pv1_power … pv4_power |
DC-Leistung je Moduleingang, W (ausgeblendet) |
0/yieldday |
e_day |
Ertrag heute, Wh |
0/yieldtotal |
e_total |
Gesamtertrag, kWh |
status/limit_relative |
power_limit |
aktuelle Leistungsbegrenzung, % |
status/limit_absolute |
power_limit_w |
aktuelle Leistungsbegrenzung, W (nur wenn OpenDTU die Nennleistung kennt) |
0/temperature |
temperature |
Temperatur des Wechselrichters, °C |
0/voltage, 0/current, 0/frequency |
voltage, current, ac_frequency |
Netzspannung, AC-Strom, Netzfrequenz (ausgeblendet) |
0/efficiency |
efficiency |
Wirkungsgrad AC/DC, % (ausgeblendet) |
radio/rssi |
linkquality, rssi |
Funkqualität: dBm → 0–100 % (-100 dBm = 0 %, -50 dBm = 100 %); Rohwert ausgeblendet |
Schreibbar (nomos sendet an <MQTT Topic>/cmd/..., nicht retained):
| nomos-Wert | Topic | Payload |
|---|---|---|
inverter_power ein / inverter_on |
cmd/power |
1 |
inverter_power aus / inverter_off |
cmd/power |
0 |
power_limit |
cmd/limit_persistent_relative |
0–100 (%, bleibt über Nacht) |
power_limit_temp |
cmd/limit_nonpersistent_relative |
0–100 (%, gilt bis zur nächsten Nacht; ausgeblendet, für Szenen/Automationen) |
power_limit_w |
cmd/limit_persistent_absolute |
0–2250 (W, bleibt über Nacht; ausgeblendet) |
restart |
cmd/restart |
1 (ausgeblendet) |
Hinweise
- Herkunft der Angaben. Topics, Einheiten und Befehle stammen aus dem OpenDTU-Quellcode (v26.9.28).
- Nachts ist ein Hoymiles-Wechselrichter aus (er wird von den Modulen versorgt):
reachableundactivestehen dann auf aus, Leistung und Ertrag bleiben auf dem letzten Wert stehen. Wer abends 0 W sehen möchte, schaltet in OpenDTU beim Wechselrichter Nulle Laufzeit Daten ein; Nulle Tagesertrag um Mitternacht setzt den Tagesertrag zurück. - Wechselrichter ein/aus (
inverter_power,inverter_on/inverter_off) schaltet den Wechselrichter selbst ab – er speist dann nichts mehr ein, bis er wieder eingeschaltet wird. Das ist für Sonderfälle gedacht (z. B. negative Strompreise), nicht als Freischaltung für Arbeiten an der Anlage. Es heißt bewusst nichtstate: Ein Tipp auf die Kachel schaltet bei „Bedienung mit einem Tipp“ den Zustandstateum, das würde hier die Einspeisung abschalten. Die Kachel ist grün, solange eingespeist wird (active). Achtung bei Szenen, die „alles aus“ schalten. Der angezeigte Zustand ist „speist ein“: nachts und bei fehlender Sonne steht er auch ohne Abschalten auf aus. Ob ein abgeschalteter Wechselrichter am nächsten Morgen aus bleibt, ist nicht geprüft. - Leistungsbegrenzung:
power_limitundpower_limit_wwerden im Wechselrichter dauerhaft gespeichert. Für Automationen, die das Limit häufig ändern (z. B. Nulleinspeisung),power_limit_tempverwenden – nach Community-Angaben verträgt der Speicher im Wechselrichter keine beliebig häufigen dauerhaften Schreibvorgänge. Hoymiles-Geräte setzen sehr kleine Limits (unter ca. 2–3 %) nicht exakt um. Ein Limit in Watt zeigt OpenDTU bei unbekannter Hardware erst nach bis zu 4 Minuten an. - Ertrag heute ist in Wh: die nomos-Skalierung rundet auf ganze Zahlen, eine Umrechnung in kWh würde die Nachkommastellen verlieren.
- Funkqualität: HM-Wechselrichter (NRF24) kennen nur zwei Stufen; OpenDTU meldet -30 dBm (gut, 100 %) oder -80 dBm (schwach, 40 %). HMS/HMT melden echte Werte.
- Fällt die OpenDTU selbst aus, bleiben die zuletzt gemeldeten (retained) Werte stehen – auch
reachable. Den Ausfall zeigt nur das Gerät OpenDTU (Last Willdtu/status), denn dieses Topic liegt außerhalb des MQTT Topics eines Wechselrichters. - Es gibt keinen Status- oder Fehlercode über MQTT; deshalb weder
statusnochmalfunction. - AhoyDTU (die andere Firmware für dieselbe Hardware) wird nicht unterstützt: AhoyDTU veröffentlicht die Werte unter dem Namen des Wechselrichters, nimmt Befehle aber unter
<Topic>/ctrl/.../<Nummer>an – Lesen und Steuern lassen sich nicht über ein MQTT Topic pro Gerät abbilden. AhoyDTU läuft auch auf ESP8266; auf ESP32-Hardware kann stattdessen OpenDTU installiert werden.