Huawei Sun2000 Wechselrichter mit Telegraf und Grafana

Seit einigen Tagen werkelt bei mir eine PV-Anlage:

  • 2 Wechselrichter SUN2000-10KTL-M1
    • Bietet ein eigenes WLAN Netz (zwecks Konfiguration des Wechselrichters)
  • Einen Dongle (SDongleA) auf dem Master Wechselrichter für FusionSolar App
    • Bietet sowohl ein WLAN Adapter sowie
    • direkter LAN-Anschluss
    • Beides über DHCP

Ziel

Die Werte werden soweit ok auf das FusionSolar Portal von Huawei. Aber ich möchte gerne alle Werte direkt lokal beziehen und auf Grafana darstellen. Hier logge ich meine Erfahrungen und irgendwann hoffentlich auch eine Erfolgsmeldungen.

Good to know

  • Der Wechselrichter selber erstellt ein eigenes WLAN zwecks Konfiguration des Geräts.
  • Der Dongle am Wechselrichter ermöglicht es auf ein vorhandenes WLAN zu verbinden oder ein Netzwerkkabel auf einen Router anzuschliessen. Hauptziel dieses Dongels ist es wohl, die Daten auf FusionApp bzw. in die Cloud zu bringen. Der Dongle selber bietet auch die Möglichkeit Daten per „Modbus TCP“ abzufragen. Diese Schnittstelle ist aber sehr unausgereift. Erste Tests mit Telegraf (modbus plugin) haben gezeigt, dass regelmässige Abfragen (z.B. alle 5s) nicht gehen (i/o timeout). Grund dafür ist wahrscheinlich, dass nach der Modubs-Anmeldung 2s gewartet werden muss, bis die erste Register-Abfrage durchgeführt werden kann (eine Huawei Eigenheit). Ich gehe aktuell davon aus, dass Telegraf damit (wenig überraschend) nicht umgehen kann.
  • Die Daten können auch per Modbus TCP am Wechselrichter selber abgefragt werden, sofern man sich mit dem WLAN des Wechselrichters verbunden hat.

Modbus TCP vs Huawei

Man könnte meinen, dass Huawei etwas auf „Kriegsfuss“ mit Modbus TCP ist. Regelmässige Abfragen mit Standard Modbus-Clients (z.B. Telegraf oder ioBroker Modbus) schlagen die meiste Zeit fehl. Hier wird davon berichtet, dass die Modbus-Ansteuerung vom Huawei Sun2000 Wechselrichter über TCP etwas speziell sei. Nach dem öffnen des TCP-Ports muss offenbar noch eine 2s Pause eingehalten werden, da sonst keine Daten zurück geliefert werden. Auch wird nicht jede Modbus-TCP-Anfrage mit den angeforderten Registern beantwortet. Huawei melden in diesem Falle „Slave device busy (retry request again later)“.

Modbus auf Wechselrichter aktivieren

Damit der Wechselrichter mit Modubs TCP kommuniziert, muss dies erstmal aktiviert werden. Das geht einerseits über die FusionSolar App (Menupunkt „ich>Inbetriebnahme des Geräts“). Hier einfach das Gerät auswählen. Anschliessend wird versucht auf das Gerät zuzugreifen. Auch wenn da steht „Inbetriebnahme des Geräts“ wird einfach nur das „Konfigurations-App“ gestartet. Ich vermute mal, dass in der FusionSolar App die App Sun2000 integriert ist. Also keine Angst haben, dass da ein zusätzliches Gerät in Betrieb genommen wird.

Die andere Variante ist, wie erwähnt, die Sun2000 App. Diese ermöglicht ebenfalls die Verbindung mit dem Wechselrichter-WLAN.

Beide Apps sind über den Huawei App Store erhältlich. Ich habe es leider nicht auf anderen Wegen geschafft die APKs zu beziehen. => Also Appstore Installieren, App beziehen und Appstore (hoffentlich für immer) wieder deinstallieren.

Wichtig:
Der Wechselrichter muss mindestens über Firmware Version V200R001C00SPC115 verfügen. Falls nicht, muss die Firmware aktualisiert werden. Das geht über die FusionSolar App. Hierfür braucht es aber explizit einen Installer-Account. Wenn ihr diesen nicht habt, muss dies der Installateur nachholen.

Wenn man über den Wechselrichter modbus verwendet, benötigt man den Port 6607 anstelle von 502!

DD-WRT

Routing von Port 6607 von 192.168.3.3 nach 192.168.200.1 („WAN“ Adresse des Routers nach Wechselrichter)

Routing auf dd-wrt um die IP-Adresse aus 192.168.3/24 als 192.168.200.2 (ip Adresse des WLAN-Clients) aussehen zu lassen

root@DD-WRT:~# iptables -I PREROUTING -t nat -p tcp -d 192.168.3.3 --dport 6607 -j DNAT --to-destination 192.168.200.1:6607
root@DD-WRT:~# iptables -I POSTROUTING -t nat -d 192.168.200.1 -s 192.168.3/24 -p tcp --dport 6607 -j SNAT --to 192.168.200.2

Damit sollte anschliessend ein Telnet Test aus dem 192.168.3./24 Netz  nach 192.168.200.1 (Port 6607) erfolgreich sein:

telnet 192.168.3.3 6607

Damit diese Regeln auch nach Reboot überleben, kann man sie auf dd-wrt Command-Shell GUI (Administration – Commands) eintragen und Speichern. Danach sollten die Regeln auch nach einem Reboot aktiv sein.

Modbus auf SDongleA aktivieren

Auf die gleiche Art und Weise soll auch Modbus TCP auf dem Dongle aktiviert werden. Den Dongle kann man sowohl per WLAN als auch per LAN-Kabel anschliessen. Ich habe beide Varianten (versuchsweise) installiert. Der Dongle kann sowohl WLAN als auch LAN gleichzeitig betreiben.

Wenn der Dongle sich mit dem Heimnetz verbunden hat, war es für mich anschliessend aber nicht mehr möglich, das Dongle-Eigene WLAN zu sehen. Der Dongle scheint das eigene WLAN abzuschalten, sobald man sich per LAN verbindet.

Wichtige Attribute PV Anlage

KennzahlenBezeichnungModubs Register
Netzbezug (-) / Netzeinspeisung (+)Der jeweils letzte Wert aus
Huawei.Meter.ActivePower (W)
Meter.ActivePower
37113 (W)
PV – Aktuelle ProduktionAddition von
– Huawei.Inverter.1.InputPower (kW), letzter Wert +
– Huawei.Inverter.2.InputPower (kW), letzter Wert
Inverter.x.InputPower
32064 (kW)
Aktuelle Hauslast / Verbrauch HausDerived.HouseConsumption (W), letzter Wert

Berechnet aus:
(Huawei.Inverter.1.ActivePower (kW) * 1000 + Huawei.Inverter.2.ActivePower (kW) * 1000) –
Huawei.Meter.ActivePower
Inverter.x.ActivePower 32080 (kW)

Meter.ActivePower
37113 (W)
Aktuelle Leistung pro InverterHuawei.Inverter.x.ActivePower (kW) Inverter.x.ActivePower 32080 (kW)
Produktion / PV Produktion pro InverterHuawei.Inverter.x.AccumulatedEnergyYield (kWh)Huawei.Inverter.x.AccumulatedEnergyYield
32106 (kWh)
NetzeinspeisungHuawei.Meter.PositiveActiveEnergyHuawei.Meter.PositiveActiveEnergy
37119 (kWh)
Eigenverbrauch aus PVTagessummen aus Huawei.Inverter.x.AccumulatedEnergyYield –
Tagessumme aus Huawei.Meter.PositiveActiveEnergy
Huawei.Inverter.x.AccumulatedEnergyYield
32106 (kWh)

Huawei.Meter.PositiveActiveEnergy
37119 (kWh)
Eigenverbrauch aus PV in %100 * Eigenverbrauch aus PV / Produktion
Netzeinspeisung in &100 * Heutige Netzeinspeisung / Produktion
Netzbezug (akkumuliert)Huawei.Meter.ReverseActiveEnergy (kWh)37121 (kWh)
Direktverbrauch aus PVTagessummen aus
Huawei.Inverter.x.DailyEnergyYield

Tagessumme aus
Huawei.Meter.PositiveActiveEnergy
Inverter.x.DailyEnergyYield
32114 (kWh)

Huawei.Meter.PositiveActiveEnergy
37119 (kWh)
Verbrauch aus Netz in %EigenverbrauchAusPV:
Produktion PV: Tagessummen aus
Huawei.Inverter.x.AccumulatedEnergyYield (kWh)

Netzeinspeisung Huawei.Meter.PositiveActiveEnergy


Gesamtverbrauch:
EigenverbrauchAusPV +
Netzbezug
Huawei.Meter.ReverseActiveEnergy)

100 * Gesamtverbrauch / EigenverbrauchAusPV
Verbrauch aus PV in % (Autarkiegrad)
PV-ErzeugungActive Power Inverter + Battery Power
Aktueller PV-Ertrag
Das was aktuell vom Dach kommt:
Input Power32064
Aktuelle Leistung vom „Dach“ in WattInverter.Input_Power
PV-GesamtertragAccumulated energy yield32106
PV-TagesertragDaily energy yield32114
PV Tagesverbrauch – Wieviel kWh wurden heute direkt aus der PV Produktion bezogen (Autarkie)Inverter.[1,2].DailyEnergyYield – GridExportToday
PV Gesamteigenverbrauch / Direktverbrauch aus PVAccumulated energy yield – abzüglich Gesamtexport ins Netz (Positive active electricity)32106 – 37119
Heutiger NetzbezugSolarpower.Derived.GridImportToday
Netzbezug/Einspeisung
Bezug oder Einspeisung vom/zum Versorger in Watt.
Positive Werte = Bezug, negative Werte = Einspeisung
Meter.Active_Power
37113
Aktuelle Einspeisung des Inverters in das Hausnetz.
Also die aktuelle „Leistung“ des Hauses in Watt
Addition aus PV Erzeugung und ggf. Batterie-Entladung
Inverter.Active_Power
Hauslast aktuellActive Power Inverter – Meter.Active_Power32080 – 37113
Gesamtexport ins Netz (verkauft)Positive active energy37119 (kWh)
Gesamtimport aus dem Netz (gekauft)Reverse Active Energy37121 (kWh)
Gesamtverbrauch StromPV-Gesamtertrag + Gesamtexport ins Netz + 37121 Reverse active Power (Ges.import aus Netz)
PV1_Voltage und PV1_Current: Aktuelle Spannung und Strom von String, U * I = P, somit ergibt sich daraus, wieviel Leistung der String aktuell liefert in Watt
Akku-Ladestand: Energy storage37004
Akku-Ladung des Tagescurrent day charge capacity37015
Akku-Entladung des Tagescurrent day discharge capacity37017
Aktuelle Leistung an der Batterie in Watt, negative Zahlen = Batterie wird entladen, positive Zahlen = Batterie wird geladenBattery_Power
Ladezustand in %Battery_SOC

Links