Kategorien
Allgemein

OpenDTU – Limit setzen über MQTT

In diesem Artikel möchte ich ein relativ neues Feature von OpenDTU vorstellen: Limit setzen über MQTT

Werte des Hoymiles via MQTT weiter zuleiten wird ja bereits von vielen genutzt. Wer mit MQTT noch nicht vertraut ist, dem empfehle ich den Artikel MQTT Starthilfe.

Die einzelnen Topics sind hier beschrieben: MQTT Topics.
Wenn man sich die Tabelle ansieht, dann findet man am Ende der Liste bei Inverter limit specific topics folgenden Hinweis: „cmd topics are used to set values„. Also können die „cmd“ Topics zum Verändern der Werte am Wechselrichter via MQTT verwendet werden. Im Detail sind das folgende Topics:

Topic R / W Description Value / Unit
[serial]/cmd/limit_persistent_relative W Set the inverter limit as a percentage of total production capability. The value will survive the night without power. The updated value will show up in the web GUI and limit_relative topic immediatly. %
[serial]/cmd/limit_persistent_absolute W Set the inverter limit as a absolute value. The value will survive the night without power. The updated value will show up in the web GUI and limit_relative topic after around 4 minutes. Watt (W)
[serial]/cmd/limit_nonpersistent_relative W Set the inverter limit as a percentage of total production capability. The value will reset to the last persistent value at night without power. The updated value will show up in the web GUI and limit_relative topic immediatly. %
[serial]/cmd/limit_nonpersistent_absolute W Set the inverter limit as a absolute value. The value will reset to the last persistent value at night without power. The updated value will show up in the web GUI and limit_relative topic after around 4 minutes. Watt (W)
[serial]/cmd/power W Turn the inverter on (1) or off (0) 0 or 1

Ich verwende im Beispiel folgende Daten:
– Wechselrichter Model: HM-700
– Seriennummer Wechselrichter: 114455667780
– Name des Wechselrichters (definiert in OpenDTU): Meine PV
– Base Topic: (definiert in OpenDTU): solar/
– IP des MQTT-Brokers: 192.168.35.216
– IP des WiB-DTU Moduls: 192.168.35.129

Sehen wir uns vor dem Test das aktuelle Limit an:
Symbol befindet sich auf der Seite „Live Data“„Current Limit: 100%“, also derzeit kein Limit gesetzt.

Setzen wir nun ein temporäres (nonpersistent) Limit von 350W:
Im MQTT-Explorer (siehe auch MQTT Starthilfe) sieht das vor dem Setzen so aus:
Wichtig: die Option „Retain“ sollte nicht verwendet werden beim Publishen, da der Wert dadurch am MQTT-Broker gespeichert wird und immer wieder abgefragt werden kann!
Das wird zwar von OpenDTU erkannt, ich hatte aber beim Testen trotzdem Probleme und musste den Cache des MQTT-Brokers löschen um das Limit loszuwerden 🙁

Der Topic zum temporären Setzen lautet in unserem Beispiel:
solar/114455667780/cmd/limit_nonpersistent_absolute
Publishen wir das jetzt mit MQTT-Explorer:
Es kann nun bis zu 4 Minuten dauern, bis das Limit ersichtlich ist.
Danach sehen wir das gesetzte Limit auch im MQTT-Explorer:

Nachdem wir es nur temporär gesetzt haben, wird das Limit nach einem Wechselrichter Neustart wieder zurückgesetzt!

Beispiel: Begrenzung HM-1200
Wir möchten unserem HM-1200 fix auf 800W limitieren, jedoch temporär auf 350W setzen.

  1. Permanentes Limit auf 800W mit Topic:
    solar/114455667780/cmd/limit_persistent_absolute
    Wert: 800
  2. Temporäres Limit auf 350W mit Topic:
    solar/114455667780/cmd/limit_nonpersistent_absolute
    Wert: 350

Bei einem Neustart des Wechselrichters wird somit immer die Begrenzung auf 800W gesetzt.

Happy testing,
WiB

PS: Ich habe keine Verbindung zur Entwicklung der OpenDTU Software, sondern bin nur ein großer Fan 🙂

Kategorien
Allgemein

OpenDTU – WEB-Schnittstelle

OpenDTU WEB-Schnittstelle (Update)

Manchmal ist es einfacher, Daten direkt über eine Schnittstelle abzufragen und auf den Einsatz eines MQTT-Brokers zu verzichten.
Die WEB-Schnittstelle erlaubt sowohl Abfragen und Änderungen der Parameter.
Wenn ein User/Passwort erforderlich ist, dann bitte die Daten verwenden, welche auch für die Änderungen über die WEB-Oberfläche definiert sind (Default: admin/openDTU42).

Die gesamte Beschreibung gibt es auf GitHub:
https://github.com/tbnobody/OpenDTU/blob/master/docs/Web-API.md

Da ich nur einen Wechselrichter (HM-700) besitze, werden Ergebnisse bei Abfragen mit mehreren Wechselrichtern dementsprechend mehr Daten liefern.

Liste aller konfigurierten Wechselrichter/Inverter:

  • Request-Type: GET
  • User/Passwort erforderlich: Ja
  • URL: /api/inverter/list
  • Beispiel: http://192.168.35.129/api/inverter/list
Ergebnis (JSON) ist ein Array aller Inverter:
{
    „inverter“: [
        {
            „id“: 0,
            „name“: „Meine PV“,
            „serial“: „11xxxxxxxx80“,
            „type“: „HM-600, HM-700, HM-800“,
            „channel“: [
                {
                    „name“: „“,
                    „max_power“: 0
                },
                {
                    „name“: „“,
                    „max_power“: 0
                }
            ]
        }
    ]
}
 

Live Daten aller konfigurierten Wechselrichter/Inverter:

  • Request-Type: GET
  • User/Passwort erforderlich: Nein
  • URL: /api/livedata/status
  • Beispiel: http://192.168.35.129/api/livedata/status
Ergebnis (JSON) ist ein Array aller Inverter mit den aktuellen Werten:

{
    „inverters“: [
        {
            „serial“: „11xxxxxxxx80“,
            „name“: „Meine PV“,
            „data_age“: 6,
            „reachable“: true,
            „producing“: true,
            „limit_relative“: 100,
            „limit_absolute“: 700,
            „0“: {
                „Power“: {
                    „v“: 34.90000153,
                    „u“: „W“,
                    „d“: 1
                },
                „Voltage“: {
                    „v“: 230.6999969,
                    „u“: „V“,
                    „d“: 1
                },
                „Current“: {
                    „v“: 0.150000006,
                    „u“: „A“,
                    „d“: 2
                },
                „Power DC“: {
                    „v“: 36.5,
                    „u“: „W“,
                    „d“: 2
                },
                „YieldDay“: {
                    „v“: 288,
                    „u“: „Wh“,
                    „d“: 2
                },
                „YieldTotal“: {
                    „v“: 133.0859985,
                    „u“: „kWh“,
                    „d“: 2
                },
                „Frequency“: {
                    „v“: 50.00999832,
                    „u“: „Hz“,
                    „d“: 2
                },
                „Temperature“: {
                    „v“: 12.5,
                    „u“: „°C“,
                    „d“: 1
                },
                „PowerFactor“: {
                    „v“: 1,
                    „u“: „“,
                    „d“: 3
                },
                „ReactivePower“: {
                    „v“: 0,
                    „u“: „var“,
                    „d“: 1
                },
                „Efficiency“: {
                    „v“: 95.61643982,
                    „u“: „%“,
                    „d“: 2
                }
            },
            „1“: {
                „name“: {
                    „u“: „“
                },
                „Power“: {
                    „v“: 18.29999924,
                    „u“: „W“,
                    „d“: 1
                },
                „Voltage“: {
                    „v“: 29.79999924,
                    „u“: „V“,
                    „d“: 1
                },
                „Current“: {
                    „v“: 0.610000014,
                    „u“: „A“,
                    „d“: 2
                },
                „YieldDay“: {
                    „v“: 142,
                    „u“: „Wh“,
                    „d“: 0
                },
                „YieldTotal“: {
                    „v“: 66.07700348,
                    „u“: „kWh“,
                    „d“: 3
                }
            },
            „2“: {
                „name“: {
                    „u“: „“
                },
                „Power“: {
                    „v“: 18.20000076,
                    „u“: „W“,
                    „d“: 1
                },
                „Voltage“: {
                    „v“: 30.29999924,
                    „u“: „V“,
                    „d“: 1
                },
                „Current“: {
                    „v“: 0.600000024,
                    „u“: „A“,
                    „d“: 2
                },
                „YieldDay“: {
                    „v“: 146,
                    „u“: „Wh“,
                    „d“: 0
                },
                „YieldTotal“: {
                    „v“: 67.00900269,
                    „u“: „kWh“,
                    „d“: 3
                }
            },
            „events“: 1
        }
    ],
    „total“: {
        „Power“: {
            „v“: 34.90000153,
            „u“: „W“,
            „d“: 1
        },
        „YieldDay“: {
            „v“: 288,
            „u“: „Wh“,
            „d“: 0
        },
        „YieldTotal“: {
            „v“: 133.0859985,
            „u“: „kWh“,
            „d“: 2
        }
    },
    „hints“: {
        „time_sync“: false,
        „radio_problem“: false,
        „default_password“: true
    }
}

Aktuelles Wechselrichter Limit abfragen:

  • Request-Type: GET
  • User/Passwort erforderlich: Nein
  • URL: /api/limit/status
  • Beispiel: http://192.168.35.129/api/limit/status
Ergebnis (JSON) mit dem aktuellen Limits:

{
    „11xxxxxxxx80“: {
        „limit_relative“: 100,
        „max_power“: 700,
        „limit_set_status“: „Ok“
    }
}

Aktuelle DTU-Einstellungen abfragen:

  • Request-Type: GET
  • User/Passwort erforderlich: Ja
  • URL: /api/dtu/config
  • Beispiel: http://192.168.35.129/api/dtu/config
Ergebnis (JSON) mit dem aktuellen Einstellungen:

{
    „dtu_serial“: „11xxxxxxxx80“,
    „dtu_pollinterval“: 10,
    „dtu_palevel“: 1
}

DTU-Einstellungen setzen:

  • Request-Type: POST
  • User/Passwort erforderlich: Ja
  • URL: /api/dtu/config
  • Beispiel: http://192.168.35.129/api/dtu/config
Request-Body:

data={„dtu_serial“: „19998026187“,“dtu_pollinterval“: 15,“dtu_palevel“: 2}

 
Ergebnis:

{
    „type“„success“,
    „message“„Settings saved!“
}

Happy testing,
WiB

PS: Ich habe keine Verbindung zur Entwicklung der OpenDTU Software, sondern bin nur ein großer Fan 🙂

Kategorien
Allgemein

OpenDTU Einrichtung

Zum Ändern der Einstellungen ist eine Anmeldung erforderlich (Login rechts oben).
Username „admin“, Passwort „openDTU42“ (kann unter „Settings“ „Security Settings“ geändert werden):

Zum Einrichten muss zuerst das Modul in das eigene WLAN eingebunden werden.
Bei einem Model mit LAN/PoE und Verwendung eines LAN-Kabels kann dieser Schritt übersprungen werden und es geht weiter mit Punkt 5.

  1. Nach dem Anschließen an eine Stromquelle aktiviert das Modul ein eigenes WLAN (HotSpot). Nun mit einem Gerät (z.B. Handy oder PC) mit dem WLAN „OpenDTU-xxxxxx“ verbinden (der Hinweis „Nicht mit dem Internet verbunden.“ ist in OK und kann bei der Einrichtung ignoriert werden)
    Passwort für das WLAN (wenn erforderlich) „openDTU42“ (Groß- und Kleinschreibung beachten!)
  2. Im Browser die URL http://192.168.4.1 öffnen
  3. Im Menü „Settings“ „Networks Settings“ öffnen
  4. Nun die Zugangsdaten für das eigene 2,4GHz WLAN eingeben (5GHz WLAN wird nicht unterstützt!) und speichern. Wenn die Daten korrekt eingegeben wurden, verbindet sich das Modul jetzt mit dem eingegebenen WLAN.

    Alternativ kann auch eine fixe IP-Adresse konfiguriert werden, indem die Option „Enable DHCP“ deaktiviert wird.
    Hinweis:
    Ist das WLAN „OpenDTU-xxxxxx“ weiterhin verfügbar zum Verbinden, ist das ein Hinweis, dass sich das WLAN-Modul nicht mit dem eigenen WLAN verbinden konnte! Ist das der Fall, dann zurück zu Punkt 1 und die Zugangsdaten zum eigenen WLAN überprüfen bzw. erneut eingeben
  5. Am WLAN-Router unter den DHCP-Clients nachsehen, welche IP-Adresse das Modul bekommen hat. Der Name beginnt meistens mit ESP32 oder OpenDTU (abhängig vom Router).
    Alternativ können auch Tools wie Advanced IP Scanner oder Angry IP Scanner verwendet werden, um Geräte/IP-Adressen im internen Netzwerk zu finden.
    Hinweis:
    optimalerweise sollte eine DHCP-Reservierung am Router oder eine fixe IP-Adresse am WLAN-Adapter eingerichtet werden, damit sich diese nicht verändert
  6. Mit einem Browser auf die IP-Adresse verbinden
    (z.B. http://192.168.x.y )
  7. Im Menü „Settings“ den Punkt „Inverter Settings“ wählen und den Wechselrichter hinzufügen:
  8. Jetzt den Menüpunkt „Live Data“ wählen.
    Wenn der Wechselrichter aktiv ist (Strom liefert), sollten nach kurzer Zeit (< 2 Minuten) die aktuellen Werte des Wechselrichters angezeigt werden

Sollten keine Daten empfangen werden, so kann unter Einstellungen/DTU Settings die Sendeleistung des Funkmoduls (Richtung Hoymiles) erhöht werden (NRF24 ist für HM-Serie, CMT2300A für HMS/HMT-Serie):Links zum Projekt (englisch):
https://github.com/tbnobody/OpenDTU
https://github.com/tbnobody/OpenDTU/blob/master/LICENSE

Happy testing,
WiB

PS: Ich habe keine Verbindung zur Entwicklung der OpenDTU Software, sondern bin nur ein großer Fan 🙂

Kategorien
Allgemein

MQTT Starthilfe

Infos zur Einrichtung von MQTT

Da es immer wieder Fragen gibt rund um das Thema, habe ich ein paar Informationen gesammelt, die den Einstieg in das Thema MQTT erleichtern sollen.

Als erstes empfehle ich das 7-Minuten Video auf Edi’s Techlab. Hier wird aus meiner Sicht sehr gut und einfach MQTT vorgestellt:
MQTT in 7 Minuten einfach erklärt…

Wie im Video erwähnt braucht man für MQTT einen Broker der als Drehscheibe für den Datenaustausch dient. Mosquitto ist hier eine sehr verbreitete Open-Source Lösung. Zu Mosquitto gibt es auch jede Menge hilfreicher Videos auf Youtube.

Für Home Assistant (verwende ich auch selber) gibt es ein Add-on wodurch die Installation noch einfacher durchgeführt werden kann: MQTT Add On für Home Assistant

Für ioBroker gibt es den Adapter „MQTT Broker/Client“.

Wenn der MQTT-Broker läuft, muss nur noch ein Benutzer und Passwort für den Zugriff auf den Broker angelegt werden.

Im nächsten Schritt wird nun OpenDTU so konfiguriert, damit Daten an den Broker gesendet („published“) werden. Im Menü Settings->MQTT folgende Einstellungen konfigurieren:
Nach dem Speichern der Einstellungen und wenn die Zugangsdaten zum Broker korrekt eingegeben wurden, werden die Daten an den Broker gesendet.

Zum Testen verwende ich das Open Source Tool MQTT Explorer (verfügbar für Windows, Mac und Linux).
Zum Einrichten der Verbindung im MQTT Explorer können die gleichen Zugangsdaten verwendet werden, wie sie bereits in OpenDTU eingegeben wurden:
Nach dem Verbinden (Connect), sollten nun die Daten angezeigt werden:Die einzelnen Werte (Topics) sind hier beschrieben: MQTT Topics

Wenn alle Schritte funktioniert haben, stehen nun die Daten vom Inverter/Wechselrichter am MQTT-Broker zur Verfügung und können von der Smart-Home Lösung verwendet werden.

Happy testing,
WiB

PS: Ich habe keine Verbindung zur Entwicklung der OpenDTU Software, sondern bin nur ein großer Fan 🙂