Skip to content

Catch errors when seam api disconnects #2

@iluvdata

Description

@iluvdata

Their API is very unrealiable.

This error originated from a custom integration.

Logger: custom_components.august_access_codes.coordinator
Source: helpers/update_coordinator.py:434
Integration: August Access Codes (documentation, issues)
First occurred: June 12, 2026 at 17:37:38 (44 occurrences)
Last logged: 07:05:10

Unexpected error fetching aac_coordinator_f059dac0-778f-4f35-9398-d903abb45e70 data
Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/niquests/adapters.py", line 910, in send
    resp_or_promise = conn.urlopen(  # type: ignore[call-overload,misc]
        method=request.method,
    ...<14 lines>...
        multiplexed=multiplexed,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 1900, in urlopen
    retries = retries.increment(
        method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/util/retry.py", line 515, in increment
    raise reraise(type(error), error, _stacktrace)
          ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/urllib3/util/util.py", line 40, in reraise
    raise value
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 1821, in urlopen
    response = self._make_request(  # type: ignore[call-overload,misc]
        conn,
    ...<15 lines>...
        extension=extension,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 1456, in _make_request
    response = conn.getresponse(
        police_officer=self.pool,
        early_response_callback=on_early_response,
        promise=rp,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/connection.py", line 636, in getresponse
    low_response = super().getresponse(
        promise=promise,
        early_response_callback=early_response_handler,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/backend/hface.py", line 1742, in getresponse
    head_event: HeadersReceived | EarlyHeadersReceived = self.__exchange_until(  # type: ignore[assignment]
                                                         ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        (
        ^
    ...<9 lines>...
        stream_id=stream_id,
        ^^^^^^^^^^^^^^^^^^^^
    ).pop()
    ^
  File "/usr/local/lib/python3.14/site-packages/urllib3/backend/hface.py", line 1182, in __exchange_until
    raise ProtocolError(
        "Remote end closed connection without response"
    )
urllib3.exceptions.ProtocolError: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 434, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/august_access_codes/coordinator.py", line 78, in _async_update_data
    unmanaged_ac: list[UnmanagedAccessCode] = await self.api.unmanaged_access_codes(
                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.seam_id
        ^^^^^^^^^^^^
    )
    ^
  File "/config/custom_components/august_access_codes/api.py", line 294, in unmanaged_access_codes
    return await self._hass.async_add_executor_job(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        partial(self._seam.access_codes.unmanaged.list, device_id=seam_device_id)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 86, in run
    result = ctx.run(self.task)
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 73, in run
    return fn(*args, **kwargs)
  File "/usr/local/lib/python3.14/site-packages/seam/routes/access_codes_unmanaged.py", line 92, in list
    res = self.client.post("/access_codes/unmanaged/list", json=json_payload)
  File "/usr/local/lib/python3.14/site-packages/niquests/sessions.py", line 966, in post
    return self.request(
           ~~~~~~~~~~~~^
        "POST",
        ^^^^^^^
    ...<14 lines>...
        cert=cert,
        ^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/site-packages/seam/client.py", line 44, in request
    response = super().request(method, url, *args, **kwargs)
  File "/usr/local/lib/python3.14/site-packages/niquests/sessions.py", line 695, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.14/site-packages/niquests/sessions.py", line 1432, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.14/site-packages/niquests/adapters.py", line 944, in send
    raise ConnectionError(err, request=request)
niquests.exceptions.ConnectionError: Remote end closed connection without response```

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions