IoT 05.07.2026 8 Min. Lesezeit von Ulrich Emmerich

ABB UNO-2.0 PV-Wechselrichter per Aurora-Protokoll in Home Assistant einbinden

Ein ABB UNO-2.0-TL-OUTD liefert seine PV-Daten lokal über RS485, Aurora-Protokoll, einen Ethernet-Konverter und MQTT Discovery an Home Assistant – ohne Hersteller-Cloud.

Home Assistant MQTT PV Python ABB Aurora
ABB UNO-2.0 PV-Wechselrichter per Aurora-Protokoll in Home Assistant einbinden

Vom blinden Wechselrichter zum smarten PV-Sensor

Mein ABB UNO-2.0-TL-OUTD arbeitet seit rund elf Jahren zuverlässig. Das eigentliche Problem war nie die Stromproduktion, sondern der fehlende Einblick: Etwa zehn Jahre lang konnte ich im Alltag nicht vernünftig sehen, was die Anlage aktuell leistet und welchen Ertrag sie über den Tag erzielt.

Ein modernes Kommunikationsmodul nachzurüsten wäre bei diesem Wechselrichter wirtschaftlich kaum sinnvoll gewesen – das Modul kann fast so viel kosten wie ein gebrauchtes Gerät. Deshalb habe ich einen anderen Weg gewählt: Die vorhandene RS485-Schnittstelle wird über einen Waveshare RS485-zu-Ethernet-Konverter ins Heimnetz gebracht. Ein Python-Skript liest die Daten lokal aus und übergibt sie per MQTT an Home Assistant.

Das System läuft inzwischen seit mehreren Wochen stabil. Aus einem elf Jahre alten Offline-Wechselrichter ist damit ein sauber eingebundenes Gerät geworden, dessen aktuelle Leistung, Erträge, Spannungen und Temperatur ich jederzeit in Home Assistant sehen kann – ohne Hersteller-Cloud.

> Wichtig: In diesem Projekt wird das proprietäre Aurora-Protokoll verwendet, nicht Modbus RTU. Der UNO-2.0-TL-OUTD unterstützt laut Produkthandbuch beide Protokolle über dieselbe RS485-Schnittstelle. Am Display muss deshalb ausdrücklich Aurora (Slave) ausgewählt sein. Die eingesetzte Python-Bibliothek aurorapy stellt dafür sowohl einen seriellen als auch einen TCP-Client bereit.

Was am Ende in Home Assistant ankommt

Das Skript fragt den Wechselrichter über das lokale Netzwerk ab und veröffentlicht zehn Messwerte über MQTT Discovery:

  • aktuelle AC-Leistung in Watt
  • Tagesertrag in kWh
  • Monatsertrag in kWh
  • Jahresertrag in kWh
  • Gesamtertrag in kWh
  • Innentemperatur des Wechselrichters in °C
  • AC-Netzspannung in Volt
  • Netzfrequenz in Hertz
  • DC-Generatorspannung in Volt
  • DC-Strom in Ampere

Home Assistant fasst diese Sensoren unter einem gemeinsamen Gerät „ABB UNO-2.0 PV Wechselrichter“ zusammen. Zusätzliche Sensoren in der configuration.yaml sind nicht nötig, weil das Skript die MQTT-Discovery-Nachrichten selbst veröffentlicht. Voraussetzung ist natürlich eine bereits eingerichtete MQTT-Integration.

Nachts ist der Wechselrichter abgeschaltet und antwortet nicht. Das Skript berücksichtigt deshalb Sonnenauf- und Sonnenuntergang. Die Zeiten werden mit der Python-Bibliothek astral aus den hinterlegten Koordinaten berechnet. Außerhalb des festgelegten Zeitfensters pausieren die Abfragen automatisch.

Aufwand und benötigte Teile

  • Zeit für die Ersteinrichtung: bei mir etwa 2–3 Stunden
  • Waveshare-Konverter: RS485-zu-Ethernet-Konverter, Preis je nach Händler und Zeitpunkt
  • Netzwerkverbindung: Cat-6-LAN-Kabel, Länge passend zum Einbauort
  • RS485-Leitung: vorzugsweise geschirmtes, verdrilltes Adernpaar mit 120-Ω-Wellenwiderstand entsprechend dem ABB-Produkthandbuch
  • Software: Linux, Python 3, MQTT und Home Assistant
  • Vorwissen: sicherer Umgang mit Linux und grundlegende Python-Kenntnisse

Die beiden Produktlinks sind Affiliate-Links. Bei einem Kauf erhalte ich möglicherweise eine Provision; der Preis ändert sich dadurch nicht.

Sicherheit vor dem Öffnen des Wechselrichters

Im Wechselrichter liegen gefährliche AC- und DC-Spannungen an. Auch nach dem Abschalten können Bauteile noch Energie gespeichert haben. Arbeiten im Gerät gehören daher in die Hände einer Elektrofachkraft und müssen nach Herstellervorgaben durchgeführt werden. Vor dem Öffnen sind AC- und DC-Seite ordnungsgemäß freizuschalten, die vorgeschriebenen Wartezeiten einzuhalten und die Spannungsfreiheit festzustellen.

Diese Beschreibung dokumentiert meine funktionierende Kommunikationslösung. Sie ersetzt weder das Produkthandbuch noch eine fachgerechte elektrische Prüfung.

Schritt 1: RS485-Verbindung herstellen

Der UNO-2.0-TL-OUTD besitzt einen eigenen RS485-Anschluss für Überwachungsgeräte. Der RJ45-Stecker darf dabei nicht wie ein gewöhnlicher Ethernet-Anschluss behandelt werden. Laut ABB-Handbuch ist die Belegung:

  • Pin 3: +T/R
  • Pin 5: −T/R
  • Pin 7: RTN
  • Pins 1, 2, 4, 6 und 8: nicht verwendet

Die Signale werden passend mit dem RS485-Anschluss des Waveshare-Konverters verbunden. Entscheidend sind die Signalbezeichnungen beziehungsweise Polaritäten – nicht allein die Buchstaben A und B, weil Hersteller diese teilweise unterschiedlich benennen.

Beim letzten beziehungsweise einzigen Gerät am RS485-Bus wird die Terminierung am Wechselrichter auf ON gesetzt. ABB liefert den Wechselrichter ab Werk mit deaktivierter Terminierung und der RS485-Adresse 2 aus. Die Adresse darf für den Betrieb nicht auf „Auto“ stehen und muss bei mehreren Geräten eindeutig sein.

Am Display des Wechselrichters wird unter den RS485-Einstellungen das Protokoll Aurora (Slave) gewählt. Diese Einstellung war in meinem Aufbau entscheidend: Eine Modbus-Konfiguration funktioniert nicht mit dem hier beschriebenen aurorapy-Skript.

Schritt 2: Waveshare-Konverter konfigurieren

Der Konverter erhält eine feste IP-Adresse oder eine feste DHCP-Zuweisung im Heimnetz. Er arbeitet als transparente Brücke zwischen TCP und der seriellen RS485-Verbindung. IP-Adresse und TCP-Port werden anschließend in der Konfiguration des Python-Skripts eingetragen.

In meinem Aufbau wird TCP-Port 502 verwendet. Das ist eine bewusst gesetzte Konfiguration des transparenten TCP-Servers und kein fest vorgeschriebener Aurora-Port. Bei Waveshare ist 502 außerdem der typische Port des Modbus-Gateway-Modus; dieser Modus darf für die hier beschriebene rohe Aurora-Übertragung nicht versehentlich aktiviert sein. Wichtig ist nur, dass Konverter und Skript denselben Port verwenden. Die Modbus-TCP-zu-RTU-Umsetzung des Waveshare-Geräts wird für diese Aurora-Lösung nicht benötigt; verwendet wird die transparente Übertragung.

Schritt 3: Python-Umgebung vorbereiten

aurorapy ist ein kleines Community-Projekt und keine Herstellerbibliothek. Vor dem produktiven Einsatz sollten Python-Kompatibilität, Lizenz und die tatsächlich benötigten Befehle in einer Testumgebung geprüft werden.

Auf dem Linux-Server wird eine eigene virtuelle Python-Umgebung angelegt:


mkdir -p /opt/abb_aurora
python3 -m venv /opt/abb_aurora/venv
source /opt/abb_aurora/venv/bin/activate
pip install aurorapy paho-mqtt astral

Damit bleiben die benötigten Pakete von der systemweiten Python-Installation getrennt und lassen sich später leichter aktualisieren oder sichern.

Schritt 4: Zentrale Konfiguration anlegen

Das Skript liest seine Einstellungen aus /opt/system.conf, Sektion [ABB_Aurora_Mqtt]. Dort stehen unter anderem:

  • Zugangsdaten des MQTT-Brokers
  • IP-Adresse und TCP-Port des Waveshare-Konverters
  • RS485-Geräteadresse des Wechselrichters – in meinem Fall 2
  • Abfrageintervall
  • geografische Koordinaten und Höhe des Standorts
  • Zeitversatz für Sonnenauf- und Sonnenuntergang
  • Schwellwert und Zähler für die Nachtabschaltung

Passwörter gehören ausschließlich in diese geschützte Konfigurationsdatei und nicht fest in den Python-Code. Die Dateiberechtigungen sollten so gesetzt werden, dass nur der vorgesehene Dienstbenutzer darauf zugreifen kann.

Schritt 5: Aufbau des Skripts

Die Projektstruktur bleibt bewusst übersichtlich:


/opt/abb_aurora/
├── abb_aurora_mqtt.py     # Hauptskript
├── venv/                  # virtuelle Python-Umgebung
└── abb_aurora_mqtt.py.bak # Sicherungskopie

Die ersten Zeilen beschreiben die wichtigsten Bestandteile:


#!/usr/bin/env python3
"""
ABB UNO-2.0 PV-Wechselrichter -> MQTT
Liest Werte per AuroraPy über einen RS485-Ethernet-Konverter
und veröffentlicht sie als MQTT-Discovery-Entitäten für Home Assistant.

Konfiguration: /opt/system.conf, Sektion [ABB_Aurora_Mqtt]
Service:       abb-aurora-mqtt.service
"""

> Das vollständige Paket ist als digitaler Download vorgesehen.

>

> Enthalten sind das komplette Python-Skript, die systemd-Service-Datei, ein Beispiel für /opt/system.conf, die Installation der Abhängigkeiten und eine bebilderte Schritt-für-Schritt-Anleitung für den Anschluss.

>

> [PAY-CONTENT – FOLGT]


Schritt 6: Als systemd-Dienst starten

Damit die Abfrage nach einem Neustart automatisch weiterläuft, wird das Skript als Dienst eingerichtet:


systemctl enable --now abb-aurora-mqtt.service
systemctl status abb-aurora-mqtt.service

Die vollständige Service-Datei gehört zum Download-Paket. Nach dem Start sollte zuerst das Journal kontrolliert werden. So lassen sich falsche Zugangsdaten, eine vertauschte RS485-Polarität oder eine nicht erreichbare IP-Adresse schnell erkennen.

Schritt 7: Sensoren in Home Assistant prüfen

Beim ersten erfolgreichen Start sendet das Skript die Discovery-Nachrichten an den MQTT-Broker. Danach erscheint unter Einstellungen → Geräte & Dienste → MQTT das Gerät „ABB UNO-2.0 PV Wechselrichter“.

Wenn keine Sensoren auftauchen, prüfe ich in dieser Reihenfolge:

1. Erreicht der Linux-Server die IP-Adresse und den TCP-Port des Konverters?

2. Stimmen RS485-Adresse und Protokolleinstellung am Wechselrichter?

3. Sind Polarität, RTN und Terminierung korrekt angeschlossen?

4. Kann sich das Skript am MQTT-Broker anmelden?

5. Zeigt journalctl -u abb-aurora-mqtt.service eine konkrete Fehlermeldung?

Warum ich beim Aurora-Protokoll geblieben bin

Modbus RTU wäre grundsätzlich ebenfalls möglich. Dafür wären jedoch eine andere Python-Bibliothek, die passende Registerdokumentation und eine andere Skriptlogik nötig. Da aurorapy das Protokoll dieses Wechselrichters direkt unterstützt und sowohl einen seriellen als auch einen TCP-Client mitbringt, war Aurora für dieses Projekt der geradlinigere Weg.

Wer den Server direkt neben dem Wechselrichter betreibt, kann anstelle des Ethernet-Konverters auch einen USB-RS485-Adapter verwenden. Dann kommt der serielle Client statt des TCP-Clients zum Einsatz. Für meinen Aufbau war Ethernet sinnvoller, weil der Wechselrichter und der Server räumlich getrennt sind.

Praktische Bewertung

Der ABB UNO-2.0-TL-OUTD muss nicht ersetzt werden, nur weil ihm WLAN und eine moderne App fehlen. Der Wechselrichter erledigt seine eigentliche Aufgabe bei mir seit rund elf Jahren. Mit dem RS485-Ethernet-Konverter und dem kleinen lokalen Dienst liefert er nun zusätzlich die Daten, die mir fast ein Jahrzehnt gefehlt haben.

Der größte Gewinn ist nicht irgendein neues Diagramm, sondern Transparenz: Ich sehe sofort, ob die Anlage produziert, wie sich der Tagesertrag entwickelt und ob Spannung oder Temperatur auffällig werden. Nach der Einrichtung läuft die Abfrage automatisch und bislang stabil – vollständig im eigenen Netzwerk.

Quellen und technische Dokumentation

Glossar

  • Aurora-Protokoll: Proprietäres Kommunikationsprotokoll für Wechselrichter von Power-One beziehungsweise ABB.
  • RS485: Robuste serielle Buskommunikation, die häufig in Industrie- und Energieanlagen eingesetzt wird.
  • AuroraTCPClient: Klasse aus aurorapy, die Aurora-Kommunikation über eine TCP-Verbindung ermöglicht.
  • MQTT Discovery: Verfahren, mit dem ein Gerät seine Entitäten automatisch bei Home Assistant bekannt macht.
  • astral: Python-Bibliothek zur Berechnung astronomischer Zeitpunkte anhand von Standortdaten.
  • FIMER: Unternehmen, das ABBs Solarwechselrichtergeschäft im März 2020 übernommen hat.
Mit * gekennzeichnete Links sind Affiliate-Links. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

Weitere Artikel zu IoT