core: Honeywell TCC integration, log in errors make climate entities unavailable

The problem

Recently thermostats through TCC become unavailable (daily). Errors in log indicate trouble logging-in in despite username/password is unchanged. The only way to restore system functionality is to reload the TCC integration. The request here is for graceful handling of the login errors and an automatic recovery.

What version of Home Assistant Core has the issue?

2023.3.6

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

integration: honeywell

Link to integration documentation on our website

https://www.home-assistant.io/integrations/honeywell#climate

Diagnostics information

Home Assistant Core Login as xyzxyz@outlook.com failed 4:57:36 AM – (ERROR) components/honeywell/climate.py 401 Error at update (Key expired?). 4:57:35 AM – (ERROR) components/honeywell/climate.py - message first occurred at 2:30:32 AM and shows up 4 times [139929708047584] Disconnected: Did not receive auth message within 10 seconds 2:53:33 AM – (WARNING) Home Assistant WebSocket API - message first occurred at 12:45:07 AM and shows up 2 times Update for climate.bedroom_suite fails 2:30:11 AM – (ERROR) components/honeywell/climate.py - message first occurred at 2:30:11 AM and shows up 3 times Update of climate.bedroom_suite is taking over 10 seconds 2:30:11 AM – (WARNING) helpers/entity.py - message first occurred at 2:30:11 AM and shows up 3 times

Example YAML snippet

No response

Anything in the logs that might be useful for us?

2023-04-03 02:30:11.738 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.bedroom_suite is taking over 10 seconds
2023-04-03 02:30:11.742 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.guest_floor is taking over 10 seconds
2023-04-03 02:30:11.744 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.main_floor is taking over 10 seconds
2023-04-03 02:30:11.765 ERROR (MainThread) [homeassistant.helpers.entity] Update for climate.bedroom_suite fails
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1152, in _create_direct_connection
    hosts = await asyncio.shield(host_resolved)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 874, in _resolve_host
    addrs = await self._resolver.resolve(host, port, family=self._family)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/resolver.py", line 33, in resolve
    infos = await self._loop.getaddrinfo(
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 863, in getaddrinfo
    return await self.run_in_executor(
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.10/socket.py", line 955, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Try again

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 541, in async_update_ha_state
    await self.async_device_update()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 747, in async_device_update
    await task
  File "/usr/src/homeassistant/homeassistant/components/honeywell/climate.py", line 430, in async_update
    await self._data.client.login()
  File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 536, in _request
    conn = await self._connector.connect(
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 540, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 901, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1166, in _create_direct_connection
    raise ClientConnectorError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host www.mytotalconnectcomfort.com:443 ssl:default [Try again]
2023-04-03 02:30:11.777 ERROR (MainThread) [homeassistant.helpers.entity] Update for climate.guest_floor fails
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1152, in _create_direct_connection
    hosts = await asyncio.shield(host_resolved)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1152, in _create_direct_connection
    hosts = await asyncio.shield(host_resolved)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 874, in _resolve_host
    addrs = await self._resolver.resolve(host, port, family=self._family)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/resolver.py", line 33, in resolve
    infos = await self._loop.getaddrinfo(
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 863, in getaddrinfo
    return await self.run_in_executor(
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.10/socket.py", line 955, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Try again

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 541, in async_update_ha_state
    await self.async_device_update()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 747, in async_device_update
    await task
  File "/usr/src/homeassistant/homeassistant/components/honeywell/climate.py", line 430, in async_update
    await self._data.client.login()
  File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 536, in _request
    conn = await self._connector.connect(
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 540, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 901, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1166, in _create_direct_connection
    raise ClientConnectorError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host www.mytotalconnectcomfort.com:443 ssl:default [Try again]
2023-04-03 02:30:11.782 ERROR (MainThread) [homeassistant.helpers.entity] Update for climate.main_floor fails
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1152, in _create_direct_connection
    hosts = await asyncio.shield(host_resolved)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1152, in _create_direct_connection
    hosts = await asyncio.shield(host_resolved)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 874, in _resolve_host
    addrs = await self._resolver.resolve(host, port, family=self._family)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/resolver.py", line 33, in resolve
    infos = await self._loop.getaddrinfo(
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 863, in getaddrinfo
    return await self.run_in_executor(
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.10/socket.py", line 955, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Try again

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 541, in async_update_ha_state
    await self.async_device_update()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 747, in async_device_update
    await task
  File "/usr/src/homeassistant/homeassistant/components/honeywell/climate.py", line 430, in async_update
    await self._data.client.login()
  File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 536, in _request
    conn = await self._connector.connect(
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 540, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 901, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1166, in _create_direct_connection
    raise ClientConnectorError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host www.mytotalconnectcomfort.com:443 ssl:default [Try again]
2023-04-03 02:30:32.100 ERROR (MainThread) [somecomfort] 401 Error at update (Key expired?).
2023-04-03 02:30:32.111 ERROR (MainThread) [somecomfort] 401 Error at update (Key expired?).
2023-04-03 02:30:32.118 ERROR (MainThread) [somecomfort] 401 Error at update (Key expired?).

Additional information

No response

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Reactions: 3
  • Comments: 30 (12 by maintainers)

Most upvoted comments

I’m wondering if we have a date for when this new code might get merged into HA yet?

It happened again this morning, all three t-stat entities were greyed out “unavailable”. When I went to the settings->devices and Services->integration tab, the honeywell tile was showing “Failed to set up: Incorrect Password”. From the “3 dots” I selected “Reload” and the 3 t-stat entities showed up again. I wasn’t prompted to retype a password. tstat

Happy to try the changes above with some guidance on the exact steps of deploying the change.