Huawei Sun2000 Daten abfragen

Aus Debacher-Wiki
Zur Navigation springenZur Suche springen

Wenn man schon eine PV-Anlage besitzt, dann möchte man auch wissen, was sie an Ertrag bringt. Mein eigentliches Ziel ist die Abfrage mit OpenHAB. Die Beschreibungen hier auf dieser Seite dienen als Grundlage und sollen den Einstieg erleichtern.

Abfrage-Möglichkeiten

Dafür gibt es recht unterschiedliche Möglichkeiten:

  • FusionSolar App und WebSite über die Huawei Cloud
  • FusionSolar direkt am Inverter
  • Das Modbus-Interface
  • Northbound API für die Cloud

FusionSolar

Die einfachste Möglichkeit ist die Nutzung der FusionSolar App im Mobilgerät, oder die Nutzung von FusionSolar im Browser unter https://eu5.fusionsolar.huawei.com/unisso/login.action. Die Anlage übermittelt alle 5 Minuten ihre Daten in die Huawei-Cloud und FusionSolar bezieht seine Informationen dann aus dieser Cloud.

Screenshot 20230815-164538.png

2023-08-25 12.55.28 region03eu5.fusionsolar.png

FusionSolar direkt am Inverter

Mit der FusionSolar App über das eigene WLAN des Inverters (Wechselrichters). Dieses WLAN ist immer vorhanden und wenn ich mit dem Mobilgerät in dieses Netz wechsle, dann ändert sich die Darstellung etwas, vor allem, die Daten sind aktueller.

Seitlich am Wechselrichter befinden sich Aufkleber, u.a. ein QR-Code. Dieser Code liefert die Daten für die Anmeldung am WLAN des Gerätes. Die Informationen sind etwas:

  • SSID: SUN2000-BT22Axyzxyzx
  • Passwort: ChangeMe

Man wechselt in dieses Netz und startet die FusionSolar App. Auf dem Startbildschirm dürfte jetzt beim WLAN-Symbol ein Ausrufezeichen zu sehen sein, weil man keinen Internetzugriff mehr hat.

IMG 20230830 183455474.jpg

Klickt man jetzt auf des Menüicon rechts oben, so hat man einen Menüpunkt mehr, als normal. Wählt man den neuen Menüpunkt Inbetriebnahme des Gerätes aus, so muss man im nächsten Schritt den Gerätetyp auswählen, mit dem man sich verbinden möchte.

Diesen Punkt kann man auch erreichen, wenn man nach der normalen Anmeldung in der App unten den Menüpunkt Ich auswählt und dann dort Inbetriebnahme des Gerätes. Aber auch auf diesem Weg muss man in das WLAN des Inverters wechseln.

Screenshot 20230830-180216.png

Danach das konkrete Gerät durch einfaches Anklicken:

Screenshot 20230830-180236.png

Hier kann man jetzt zwischen Installateur und Benutzer wechseln.

IMG 20230830 181936323.jpg

Wenn für den ausgewählten Account bisher kein Passwort gesetzt ist, so wird man aufgefordert das nachzuholen. Wenn man sich als Benutzer anmeldet, dann landet man in der folgenden Anwendung.

Screenshot 20230830-180606.png

Im Screenshot ist schon das Menü geöffnet, welches über das Hamburger-Menü erreicht wird.

Hier stehen einige Darstellungen zur Verfügung, die ich sonst nicht bekomme.

Screenshot 20230830-180649.png

Hinweis: Die meisten Abbildungen in diesem Abschnitt sind Android-Screenshots. Die App blockiert aber Screenshots von Anmeldebildschirmen, die habe ich also abfotografiert, was mit etwas Qualitätsverlust verbunden ist.

Das Modbus Interface

Über das TCP-Modbus-Interface. Unter Port 502 steht eine Schnittstelle zur Verfügung, über die aktuelle Daten vom Gerät abgefragt werden können. Dieser Weg interessiert mich am meisten, da ich hierüber die Daten der Solar-Anlage auch in OpenHAB nutzen kann. Außerdem bin ich nicht von der Cloud abhängig. Die Daten sind auch aktueller, man kann etwa alle 5 sec eine Abrage vornehmen, in der Cloud gibt es nur alle 5 Minuten neue Daten.

OpenHAB stellt kein Binding für die Huawei-Anlage zur Verfügung, wohl aber ein allgemeines Modbus-Binding. Damit ist es möglich, die Register der Solaranlage auszulesen und ohne Cloud die Daten direkt im lokalen Netz zu beziehen. Voraussetzung ist aber, dass der Solateur den Modbus-Port 502 freigegeben hat.

Die Modbus-Schnittstelle ist bei mir inzwischen aktiviert, dazu hat der Support u.a. die Software auf dem Dongle aktualisiert, jetzt ist der Port 502 erreichbar.

Man muss bei diesem Port etwas aufpassen, bei einem normalen Portscan wird er nicht mit getestet:

nmap  192.168.1.47

Starting Nmap 7.60 ( https://nmap.org ) at 2023-08-16 11:25 CEST
Nmap scan report for lwip.fritz.box (192.168.1.47)
Host is up (0.00051s latency).
All 1000 scanned ports on lwip.fritz.box (192.168.1.47) are closed

Nmap done: 1 IP address (1 host up) scanned in 2.77 seconds

aber ein Scan direkt auf den Port klappt:

nmap  -p 502 192.168.1.47

Starting Nmap 7.60 ( https://nmap.org ) at 2023-08-16 11:28 CEST
Nmap scan report for lwip.fritz.box (192.168.1.47)
Host is up (0.00025s latency).

PORT    STATE SERVICE
502/tcp open  mbap

Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds

Man könnte entsprechend auch mehrere Ports konkret testen mittels:

nmap  -p 1-1000 192.168.1.47

Für die Nutzung der Modbus-Schnittstelle mit OpenHAB erstelle ich noch eine ausführliche Beschreibung. Ich warte aber noch ab, bis der Zähler gewechselt ist und wir auch einspeisen. Erst dann kann ich alle Werte vernünftig verifizieren.


Ich benutzte das Dokument unter https://www.photovoltaikforum.com/core/attachment/312565-solar-inverter-modbus-interface-definitions-pdf/ mit der aktuellen Beschreibung der Register.

Northbound API für die Cloud

Eine weitere Möglichkeit besteht in der Nutzung der Northbound API. Das ist eine Schnittstelle, über die man auf die Daten in der Huawei-Cloud zugreifen kann. Für diese API benötigt man einen extra Account, der einem vom Installateur eingerichtet werden kann. Die Daten sind dann nicht aktueller als bei der Nutzung von FusionSolar, lassen sich aber in eigenen Anwendungen nutzen.

Unter https://support.huaweicloud.com/intl/en-us/api-bpconsole/bpconsole-api.pdf habe ich eine aktuelle Anleitung zu der API gefunden. Man muss da etwas aufpassen, weil die API sich in 2023 verändert hat. Für neuere Accounts gelten viele der alten Beschreibungen nicht mehr.

Software zum Testen und Abfragen

Der Umgang mit dem Modbus-Interface und der API ist nicht trivial. Da ist es ganz hilfreich Programme zu haben, die beim Testen helfen.

BOPV.Info

Bei dem Zugriff auf meine Solaranlage war mir lange Zeit nicht klar, ob meine Zugangsdaten zu den Systemen korrekt sind. In den übermittelten API-Zugangsdaten gab es auch wirklich einen Tippfehler. Auch ist der Umgang mit Modbus bzw. Northbound-API nicht sofort klar gewesen. Da hat sich bewährt, dass ich in einem Forum von BOPV.Info gelesen hatte. Das Programm läuft nur unter Windows, aber eine Windows-Version mit VirtualBox habe ich zur Verfügung.

Die Software unter https://BOPV.Info ist auf alle Fälle eine große Hilfe, wenn man den Zugang zu Modbus oder zur API testen möchte, da sie relativ leicht zu konfigurieren ist und im Erfolgsfall auch eine Vielzahl von Informationen liefert.

VirtualBox 31 08 2023 09 16 53.png

In dem Screenshot ist im linken Bereich das Widget zu sehen und im rechten Teil das Fenster mit den Einstellungen. Hier sind die Zugangsdaten für beide Zugänge verzeichnet, was auch der Idealzustand für die Software ist. Sie holt viele Daten aus der API, nur die Daten, die sich schnell verändern werden über Modbus bezogen.

Bei den Northbound-Daten ist noch das Häkchen Bei neuen API Accounts ab 2023 aktivieren interessant. Huawei hat nämlich die API für neue Accounts verändert, so dass die Zugriffe entsprechend angepasst werden müssen.

Kennt man die Modbus ID seiner Geräte nicht, so kann man die im Modbus-Bereich der Konfiguration einfach durchprobieren, indem man die Datenquelle auf Modbus TCP stellt und einen Wert angibt und dann auf Test klickt.

Die Art des Datenbezuges lässt sich einfach auswählen.

VirtualBox 31 08 2023 09 20 12.png

Man kann hier erkennen, dass auch noch andere Geräte zur Auswahl stehen. Optimal ist aber die Kombination API + Modbus TCP, die die meisten Informationen liefert.

VirtualBox 31 08 2023 09 19 30.png

Wählt man nur Modbus TCP als Quelle aus, so stehen deutlich weniger Informationen zur Verfügung.

VirtualBox 22 08 2023 17 56 03.png

Das liegt aber nicht daran, dass die Daten nicht zur Verfügung stehen würden, sondern eher daran, dass es einen gewissen Aufwand bedeutet, Daten über die Modbus-Schnittstelle abzufragen. Die Abfrage über die API ist einfacher. Die Entwickler fragen daher nur die Daten über Modbus ab, die sich oft ändern.

Postman für den Zugriff auf die API

Mit der Software https://www.postman.com kann man sich das Leben sehr erleichtern, wenn man die Abfragedialoge für die API ausprobieren möchte. Man kann hier die Ergebnisse als Json-Daten anfordern und auch Cookies setzen, wie es für die API notwendig ist. Die Beschreibung für die API selber ist unter https://support.huawei.com/enterprise/en/doc/EDOC1100261860/9e1a18d2/login-interface zu finden. Dabei ist zu beachten, dass diese Beschreibung nur für neue Accounts gilt, für ältere Accounts gilt der Text unter https://forum.huawei.com/enterprise/en/communicate-with-fusionsolar-through-an-openapi-account/thread/667232424741978112-667213868771979264. Huawei hat die API im Frühjahr 2023 verändert, zumindest für neuere Accounts.

Die Installation von Postman ist relativ einfach. Man lädt sich von der Seite https://www.postman.com das aktuelle tar-Archiv für Linux und entpackt es. Um an den Download-Link zu kommen musste ich mich vorher bei der Seite registrieren.

Die Northbound-Schnittstelle arbeitet mit einer Abfolge von POSTs an den Huawei-Server, die eine Reihe von Fragen quasi beinhalten. Die Daten für die jeweilige Abfrage werden im JSON-Format realisiert.

Im ersten Schritt muss ich meine Benutzerdaten angeben und bekomme dafür ein Token zurück, welches ich dann in allen weiteren Abfragen benutze.

Bildschirmfoto vom 2023-08-31 11-09-47.png

Bei den Parametern muss ich unter Body meinen Benutzernamen und das Passwort, hier als systemCode bezeichnet, angeben. Die URL für die Anmeldung ist https://eu5.fusionsolar.huawei.com/thirdData/login . Für den Screenshote hatte ich bereits auf Send geklickt, dadurch ist im Body des Ergebnisses bereit sie Erfolgsmeldung zu sehen.

Wichtiger sind aber die Informationen im Tab Cookies:

Bildschirmfoto vom 2023-08-31 11-11-07.png

Hinweis: Die fette Zeile mit dem Text https://eu5.fusionsolar.huawei.com/thirdData/login ist quasi der Name des Tabs und nicht die URL der Anfrage. Da ich für die Screenshots immer den gleichen Tab nutze verändert sich diese Angabe nicht. Die jeweilige URL steht eine Zeile tiefer hinter POST und vor Send.

Den Inhalt des XSRF-Token muss ich mir kopieren, das ist die Zeichenkette, die hier mit x-lfe.. beginnt. Diese Zeichenkette muss ich mir für alle folgenden Anfragen im Bereich Header einfügen. Postman stellt dafür Zeilen zur Verfügung, bei denen ich vorne den Bezeichner (key) eintrage und daneben den Value.

Bildschirmfoto vom 2023-08-31 11-14-55.png

Im zugehörigen Body muss ich zwei Zeilen eintragen, deren Sinn nicht unbedingt einleuchtet.

Bildschirmfoto vom 2023-08-31 11-14-47.png

Nun kann ich die URL https://eu5.fusionsolar.huawei.com/thirdData/stations aufrufen

Bildschirmfoto vom 2023-08-31 11-15-30.png

Aus der Ergebnisliste im Body benötige ich jetzt den Eintrag plantCode, den ich jetzt für die nächste Abfrage im Body als stationCodes mitgeben muss.

Bildschirmfoto vom 2023-08-31 11-42-14.png

Ich erhalte damit eine Liste aller Geräte, die zu meiner Anlage gehören. Für die Abfrage der Daten eines solchen Gerätes benötige ich dann die devTypeID und die id des jeweiligen Gerätes.

Hiermit kann ich dann unter der URL https://eu5.fusionsolar.huawei.com/thirdData/DevRealKpi Informationen für jeweils eines der Geräte abfragen.

Bildschirmfoto vom 2023-08-31 11-55-16.png

Als ordentlicher Mensch meldet man sich auch an der API wieder ab, wenn die Verbindung nicht mehr benötigt wird, dazu dient die URL https://eu5.fusionsolar.huawei.com/thirdData/logout

Bildschirmfoto vom 2023-08-31 12-09-28.png

Ich hoffe, dass mit den beschriebenen Schritten deutlich wird, wie die Kommunikation mit der Modbus API funktioniert. Es gibt eine Reihe weiterer URLs, die ich aber nicht alle ausprobiert habe, da sie nach dem gleichen Prinzip funktionieren.


Weitere Angaben finden sich unter https://support.huawei.com/enterprise/en/doc/EDOC1100261860/537d56d1/northbound-interface-format-definition