IoT 05.07.2026 4 min read by Ulrich Emmerich

Connect an ABB UNO-2.0 PV inverter to Home Assistant via the Aurora protocol

An ABB UNO-2.0-TL-OUTD sends PV data locally to Home Assistant through RS485, the Aurora protocol, an Ethernet converter, and MQTT Discovery—without a vendor cloud.

Home Assistant MQTT PV Python ABB Aurora
Connect an ABB UNO-2.0 PV inverter to Home Assistant via the Aurora protocol

From a stand-alone inverter to local monitoring

My ABB UNO-2.0-TL-OUTD has been producing power for about eleven years. For roughly ten of those years, the missing piece was convenient access to current output and yield data. Replacing the inverter or adding an expensive vendor communication module was not attractive.

The solution uses the existing RS485 interface, a Waveshare RS485-to-Ethernet converter, the community aurorapy Python library, and MQTT Discovery. Home Assistant receives the data locally without a vendor cloud. In my installation, this setup has run stably for several weeks; that is a personal operating observation, not a general reliability guarantee.

> This project uses the proprietary Aurora protocol, not Modbus RTU. The inverter's RS485 menu and the software must use the same protocol.

Values published to Home Assistant

The script publishes ten entities under one device:

  • current AC power
  • daily, monthly, annual, and lifetime energy
  • inverter temperature
  • AC voltage and grid frequency
  • DC voltage and current

Home Assistant creates the entities from retained MQTT Discovery messages. A working MQTT integration is therefore a prerequisite.

At night the inverter is off and does not reply. The script uses astral and configured coordinates to pause polling outside a defined sunrise/sunset window.

Hardware and prerequisites

  • ABB UNO-2.0-TL-OUTD with the documented RS485 interface
  • Waveshare RS485-to-Ethernet converter
  • Ethernet cable and suitable shielded twisted-pair RS485 cable
  • Linux, Python 3, an MQTT broker, and Home Assistant
  • the exact product manual for the installed inverter variant

The product link is an affiliate link. A qualifying purchase may earn php99.de a commission without changing the buyer's price. Prices vary by seller and date.

Electrical safety

Dangerous AC and DC voltages are present inside the inverter. Stored energy can remain after disconnection. Opening, wiring, and testing the inverter must be performed by a qualified person according to the exact manufacturer procedure, including isolation of AC and DC sources, the specified waiting time, and verification of absence of voltage. This communication description does not replace the product manual or a professional electrical inspection.

1. Wire the RS485 interface

The product manual documents the monitoring connector as:

  • pin 3: +T/R
  • pin 5: −T/R
  • pin 7: RTN
  • pins 1, 2, 4, 6, and 8: unused

This RJ45 connector is not Ethernet. Match signal names and polarity rather than relying only on A and B, because vendor naming differs.

Enable termination on the last or only inverter. The address must be fixed and unique; the unit in this installation uses address 2. Select Aurora (Slave) in the inverter menu. A Modbus setting will not work with this aurorapy design.

2. Configure the Ethernet converter

Give the converter a stable DHCP lease or fixed address. Use transparent TCP-to-serial transport, not Modbus TCP-to-RTU conversion. This installation uses TCP port 502 as a deliberately chosen transparent server port; Aurora itself does not mandate it. Waveshare also commonly uses 502 for its Modbus gateway mode, so verify that protocol conversion remains disabled.

Keep the converter's management interface inside a trusted management LAN, set an access password where supported, and do not expose the raw serial bridge to the internet.

3. Prepare Python


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

aurorapy is a small community project rather than a vendor library. Test Python compatibility and the required commands before relying on it in production.

The service reads broker credentials, converter address, inverter address, polling interval, coordinates, and night thresholds from /opt/system.conf. Protect that file so only the service account can read it; do not hard-code passwords in published Python.

4. Run as a systemd service


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

The complete Python implementation and unit file are part of the planned download package and cannot be independently verified from this article alone.

5. Verify Home Assistant

After the first successful Discovery publish, the device should appear under Settings → Devices & services → MQTT.

If it does not:

1. Test the converter IP address and TCP port from the Linux server.

2. Confirm the inverter address and Aurora protocol setting.

3. Check polarity, RTN, cable termination, and serial parameters against the manual.

4. Verify broker authentication and ACLs.

5. Inspect journalctl -u abb-aurora-mqtt.service without exposing credentials.

Why Aurora rather than Modbus?

Modbus would require a different library, a verified register map, and different parsing. aurorapy implements the Power-One/ABB Aurora commands and provides both serial and TCP clients, making it the more direct route for this installation. A nearby server could use a suitable USB-RS485 adapter and AuroraSerialClient instead.

Practical assessment

The retrofit does not change the inverter's power electronics; it adds local visibility. In my installation the useful result is immediate access to output, yield, voltage, and temperature without replacing a working inverter or depending on a cloud service.

Sources and technical documentation

Links marked with * are affiliate links. As an Amazon Associate I earn from qualifying purchases.

More articles about IoT