You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have 2 PV panel sets, both with ECU-C, which I monitor using this integration. First set is on local network, second one is accessible over VPN link. For few months VPN worked so there was no issue with monitoring. But today in the morning VPN broke and suddenly I hade issue to see status not only for remote set but for both sets. Both were reporting no data at all, all was unavailable. At first I did not realize it and checked local set but ECU-C is available all the time, web interface is accessible as usually. Burt no data in HA. The only working fix with no VPN connection was to manually disable remote set in the devices and then restart HA. So IMO there should be some form of fault tolerance for connection issues in general for single set but even more when it comes to using the same integration for multiple PV panel sets.
Here is the log from the issue:
2026-05-19 10:54:22.363 ERROR (MainThread) [homeassistant.config_entries] Setup of config entry 'APsystems ECU XYZ' for apsystems_ecu_reader integration cancelled
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 787, in __async_setup_with_context
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/apsystems_ecu_reader/init.py", line 172, in async_setup_entry
await coordinator.async_config_entry_first_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 326, in async_config_entry_first_refresh
await self._async_config_entry_first_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 349, in _async_config_entry_first_refresh
await self._async_refresh(
...<3 lines>...
)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 433, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 316, in _async_update_data
return await self.update_method()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/apsystems_ecu_reader/init.py", line 155, in do_ecu_update
return await ecu.update(
^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "/config/custom_components/apsystems_ecu_reader/init.py", line 105, in update
data = await self.ecu.get_update(port_retries, show_graphs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/apsystems_ecu_reader/ecu_api.py", line 155, in get_update
await self.open_socket(port_retries)
File "/config/custom_components/apsystems_ecu_reader/ecu_api.py", line 75, in open_socket
self.reader, self.writer = await asyncio.open_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.ipaddr, PORT
^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.14/asyncio/streams.py", line 48, in open_connection
transport, _ = await loop.create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lambda: protocol, host, port, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.14/asyncio/base_events.py", line 1143, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
exceptions, addrinfo, laddr_infos)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.14/asyncio/base_events.py", line 1042, in _connect_sock
await self.sock_connect(sock, address)
File "/usr/local/lib/python3.14/asyncio/selector_events.py", line 645, in sock_connect
return await fut
^^^^^^^^^
asyncio.exceptions.CancelledError: Global task timeout: Bootstrap stage 2 timeout
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
I have 2 PV panel sets, both with ECU-C, which I monitor using this integration. First set is on local network, second one is accessible over VPN link. For few months VPN worked so there was no issue with monitoring. But today in the morning VPN broke and suddenly I hade issue to see status not only for remote set but for both sets. Both were reporting no data at all, all was unavailable. At first I did not realize it and checked local set but ECU-C is available all the time, web interface is accessible as usually. Burt no data in HA. The only working fix with no VPN connection was to manually disable remote set in the devices and then restart HA. So IMO there should be some form of fault tolerance for connection issues in general for single set but even more when it comes to using the same integration for multiple PV panel sets.
Here is the log from the issue:
2026-05-19 10:54:22.363 ERROR (MainThread) [homeassistant.config_entries] Setup of config entry 'APsystems ECU XYZ' for apsystems_ecu_reader integration cancelled
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 787, in __async_setup_with_context
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/apsystems_ecu_reader/init.py", line 172, in async_setup_entry
await coordinator.async_config_entry_first_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 326, in async_config_entry_first_refresh
await self._async_config_entry_first_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 349, in _async_config_entry_first_refresh
await self._async_refresh(
...<3 lines>...
)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 433, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 316, in _async_update_data
return await self.update_method()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/apsystems_ecu_reader/init.py", line 155, in do_ecu_update
return await ecu.update(
^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "/config/custom_components/apsystems_ecu_reader/init.py", line 105, in update
data = await self.ecu.get_update(port_retries, show_graphs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/apsystems_ecu_reader/ecu_api.py", line 155, in get_update
await self.open_socket(port_retries)
File "/config/custom_components/apsystems_ecu_reader/ecu_api.py", line 75, in open_socket
self.reader, self.writer = await asyncio.open_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.ipaddr, PORT
^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.14/asyncio/streams.py", line 48, in open_connection
transport, _ = await loop.create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lambda: protocol, host, port, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.14/asyncio/base_events.py", line 1143, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
exceptions, addrinfo, laddr_infos)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.14/asyncio/base_events.py", line 1042, in _connect_sock
await self.sock_connect(sock, address)
File "/usr/local/lib/python3.14/asyncio/selector_events.py", line 645, in sock_connect
return await fut
^^^^^^^^^
asyncio.exceptions.CancelledError: Global task timeout: Bootstrap stage 2 timeout
All reactions