home-assistant/core · error · UpdateFailed

error

Error message

error

What it means

UpdateFailed raised by the aurora_abb_powerone coordinator only after the retry budget is exhausted: each SerialException or AuroraError decrements `retries`, sleeps 1s, and re-attempts; when retries reaches 0 the exception is re-raised as UpdateFailed. AuroraTimeoutError is treated separately as 'inverter dark' (no failure). This models a solar inverter on a serial/modbus link that is persistently erroring but not merely silent.

Source

Thrown at homeassistant/components/aurora_abb_powerone/coordinator.py:83

                power_in_1 = self.client.measure(8)
                power_in_2 = self.client.measure(9)
                temperature_c = self.client.measure(21)
                voltage_in_1 = self.client.measure(23)
                current_in_1 = self.client.measure(25)
                voltage_in_2 = self.client.measure(26)
                current_in_2 = self.client.measure(27)
                r_iso = self.client.measure(30)
                energy_wh = self.client.cumulated_energy(5)
                [alarm, *_] = self.client.alarms()
            except AuroraTimeoutError:
                self.available = False
                _LOGGER.debug("No response from inverter (could be dark)")
                retries = 0
            except (SerialException, AuroraError) as error:
                self.available = False
                retries -= 1
                if retries <= 0:
                    raise UpdateFailed(error) from error
                _LOGGER.debug(
                    "Exception: %s occurred, %d retries remaining",
                    repr(error),
                    retries,
                )
                sleep(1)
            else:
                data["grid_voltage"] = round(grid_voltage, 1)
                data["grid_current"] = round(grid_current, 1)
                data["instantaneouspower"] = round(power_watts, 1)
                data["grid_frequency"] = round(frequency, 1)
                data["i_leak_dcdc"] = i_leak_dcdc
                data["i_leak_inverter"] = i_leak_inverter
                data["power_in_1"] = round(power_in_1, 1)
                data["power_in_2"] = round(power_in_2, 1)
                data["temp"] = round(temperature_c, 1)
                data["voltage_in_1"] = round(voltage_in_1, 1)
                data["current_in_1"] = round(current_in_1, 1)

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Check the serial device exists and is the right one: ls -l /dev/ttyUSB* and compare with the integration config
  2. Ensure the HA process user can open the device (dialout group / udev rules)
  3. Inspect RS485 cabling/termination if AuroraError dominates (framing/CRC issues)
  4. If the inverter is intentionally off, disable the integration to stop the retry loop

Example fix

# before: config points at a stale device path
# options: /dev/ttyUSB0

# after: pin the adapter via udev by serial
# /etc/udev/rules.d/99-aurora.rules:
# SUBSYSTEM=="tty", ATTRS{idSerial}=="A9012XYZ", SYMLINK+="aurora485"
# then configure the integration with /dev/aurora485
Defensive patterns

Strategy: retry

Validate before calling

import os, stat
mode = os.stat(device_path).st_mode
if not stat.S_ISCHR(mode):
    raise ValueError(f"{device_path} is not a serial device")

Try / catch

try:
    data = await coordinator.async_refresh()
except UpdateFailed as err:
    cause = err.__cause__
    if isinstance(cause, SerialException):
        _LOGGER.error("Serial link down: check adapter/cable")
    elif isinstance(cause, AuroraError):
        _LOGGER.error("Modbus protocol errors: check RS485 wiring")

Prevention

When it happens

Trigger: Repeated SerialException (USB/serial adapter unplugged, wrong device path, permissions on /dev/ttyUSB*) or AuroraError (modbus framing errors, bad response CRC) on every retry attempt of the measurement loop (voltage, current, power, energy, alarms).

Common situations: Serial adapter re-enumerated to a different ttyUSB device after reboot; user lacks dialout group membership; RS485 wiring/grounding noise causing persistent protocol errors; inverter powered off for the season (though that normally yields AuroraTimeoutError instead).

Related errors


AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14). Data as JSON: /api/errors/ad0b8dac04628bd5. Report an issue: GitHub.