Venstar Errors: Fetching & Requesting Data from Thermostat

Posted a preliminary version of this issue on Discord as well, but have seen no replies there.

Was seeing a solid "Unavailable" failure of all points from the T7900 thermostat in the Venstar integration. After recovering from that (like a few months ago) by deleting and then reinstalling the integration, when H/A was restarted, although the sensor data was initially being displayed - it would again become unavailable - but now it recovers and repeats several times an hour.

Current versions:
H/A Core 2026.4.4
H/A O/S 17.2

All through these events, the Venstar data remains available to the Android app and the Venstar Skyport web interface.

It seems to be looking like a network communications error that only affects the Venstar.

Not being familiar with the H/A error logs, I'm wondering about other users thoughts on this.

Thanks.

Core log error report requesting data:

Logger: homeassistant.components.venstar.const
Source: helpers/update_coordinator.py:497
integration: Venstar (documentation, issues)
First occurred: May 6, 2026 at 9:57:20 PM (92 occurrences)
Last logged: 9:12:08 AM

Error fetching venstar data: Unable to update Venstar thermostat info
Error fetching venstar data: Unable to update Venstar alert data
Error fetching venstar data: Unable to update Venstar sensor data
Error fetching venstar data: Unable to update Venstar runtime data

Core log error report requesting alerts:

Logger: venstarcolortouch.venstarcolortouch
Source: /usr/local/lib/python3.14/site-packages/venstarcolortouch/venstarcolortouch.py:148
First occurred: May 6, 2026 at 9:52:55 PM (117 occurrences)
Last logged: 9:12:08 AM

Error requesting https://192.168.1.100/query/alerts from Venstar ColorTouch.
Error requesting https://192.168.1.100/query/info from Venstar ColorTouch.
Error requesting https://192.168.1.100/query/sensors from Venstar ColorTouch.
Error requesting https://192.168.1.100/query/runtimes from Venstar ColorTouch.
Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 464, in _make_request
    self._validate_conn(conn)
    ~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn
    conn.connect()
    ~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.14/site-packages/urllib3/connection.py", line 796, in connect
    sock_and_verified = _ssl_wrap_socket_and_match_hostname(
        sock=sock,
    ...<14 lines>...
        assert_fingerprint=self.assert_fingerprint,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/connection.py", line 975, in _ssl_wrap_socket_and_match_hostname
    ssl_sock = ssl_wrap_socket(
        sock=sock,
    ...<8 lines>...
        tls_in_tls=tls_in_tls,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/util/ssl_.py", line 483, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
  File "/usr/local/lib/python3.14/site-packages/urllib3/util/ssl_.py", line 527, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/ssl.py", line 455, in wrap_socket
    return self.sslsocket_class._create(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        sock=sock,
        ^^^^^^^^^^
    ...<5 lines>...
        session=session
        ^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/ssl.py", line 1076, in _create
    self.do_handshake()
    ~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.14/ssl.py", line 1372, in do_handshake
    self._sslobj.do_handshake()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
TimeoutError: _ssl.c:1063: The handshake operation timed out

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

Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/requests/adapters.py", line 645, in send
    resp = conn.urlopen(
        method=request.method,
    ...<9 lines>...
        chunked=chunked,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 841, 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 490, in increment
    raise reraise(type(error), error, _stacktrace)
          ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/urllib3/util/util.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
        conn,
    ...<10 lines>...
        **response_kw,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 488, in _make_request
    raise new_e
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 466, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout
    raise ReadTimeoutError(
        self, url, f"Read timed out. (read timeout={timeout_value})"
    ) from err
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='192.168.1.100', port=443): Read timed out. (read timeout=5)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/venstarcolortouch/venstarcolortouch.py", line 142, in _request
    req = requests.get(uri,
                       verify=self.SSLCert,
                       timeout=self.timeout,
                       params=params,
                       auth=self.auth)
  File "/usr/local/lib/python3.14/site-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "/usr/local/lib/python3.14/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/requests/sessions.py", line 592, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.14/site-packages/requests/sessions.py", line 706, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.14/site-packages/requests/adapters.py", line 691, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='192.168.1.100', port=443): Read timed out. (read timeout=5)

Core log error report requesting sensors:

Logger: venstarcolortouch.venstarcolortouch
Source: /usr/local/lib/python3.14/site-packages/venstarcolortouch/venstarcolortouch.py:148
First occurred: 2:51:22 AM (4 occurrences)
Last logged: 6:54:07 AM

Error requesting https://192.168.1.100/query/sensors from Venstar ColorTouch.
Error requesting https://192.168.1.100/query/alerts from Venstar ColorTouch.
Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/urllib3/connection.py", line 204, in _new_conn
    sock = connection.create_connection(
        (self._dns_host, self.port),
    ...<2 lines>...
        socket_options=self.socket_options,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/util/connection.py", line 85, in create_connection
    raise err
  File "/usr/local/lib/python3.14/site-packages/urllib3/util/connection.py", line 73, in create_connection
    sock.connect(sa)
    ~~~~~~~~~~~~^^^^
TimeoutError: timed out

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

Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
        conn,
    ...<10 lines>...
        **response_kw,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 488, in _make_request
    raise new_e
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 464, in _make_request
    self._validate_conn(conn)
    ~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn
    conn.connect()
    ~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.14/site-packages/urllib3/connection.py", line 759, in connect
    self.sock = sock = self._new_conn()
                       ~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.14/site-packages/urllib3/connection.py", line 213, in _new_conn
    raise ConnectTimeoutError(
    ...<2 lines>...
    ) from e
urllib3.exceptions.ConnectTimeoutError: (<HTTPSConnection(host='192.168.1.100', port=443) at 0x7f779fb110>, 'Connection to 192.168.1.100 timed out. (connect timeout=5)')

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

Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/requests/adapters.py", line 645, in send
    resp = conn.urlopen(
        method=request.method,
    ...<9 lines>...
        chunked=chunked,
    )
  File "/usr/local/lib/python3.14/site-packages/urllib3/connectionpool.py", line 841, 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 535, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='192.168.1.100', port=443): Max retries exceeded with url: /query/sensors (Caused by ConnectTimeoutError(<HTTPSConnection(host='192.168.1.100', port=443) at 0x7f779fb110>, 'Connection to 192.168.1.100 timed out. (connect timeout=5)'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/venstarcolortouch/venstarcolortouch.py", line 142, in _request
    req = requests.get(uri,
                       verify=self.SSLCert,
                       timeout=self.timeout,
                       params=params,
                       auth=self.auth)
  File "/usr/local/lib/python3.14/site-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "/usr/local/lib/python3.14/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/requests/sessions.py", line 592, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.14/site-packages/requests/sessions.py", line 706, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.14/site-packages/requests/adapters.py", line 666, in send
    raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='192.168.1.100', port=443): Max retries exceeded with url: /query/sensors (Caused by ConnectTimeoutError(<HTTPSConnection(host='192.168.1.100', port=443) at 0x7f779fb110>, 'Connection to 192.168.1.100 timed out. (connect timeout=5)'))

Is there a bug issue open, or have you reported an issue? Bug reports:

If it's a custom integration, do it in their git repo.

This issue hasn't been submitted yet. I wanted to ask the community before I did, just in case it might be something specific to my installation that I could resolve.

1 Like

According to Venstar's API documentation, if you enter the following URL into your web browser (replace 192.168.1.50 with your thermostat's IP address) it should reply with information about its current state.

http://192.168.1.50/query/info

If it replies with data in JSON format then you have confirmed it is alive and communicating normally.

Thanks Taras - like with the Venstar Android app and Skyport web interface, the query/info is fine after H/A reports that everything as unavailable:

And then it recovers on its own and a few minutes later the cycle continues ...

In that case, it appears the problem is exclusively between your Home Assistant server and the Venstar thermostat (a software bug in the integration or a LAN communications problem).

requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='192.168.1.100', port=443): Read timed out. (read timeout=5)

Maybe I am misunderstanding the error message but it's curious that it is attempting to connect via HTTPS on port 443. My understanding is that Venstar's API uses HTTP on port 80.

I suggest you report the problem as a new Issue in Home Assistant's Github Core repo and see what the maintainer of the Venstar integration has to say.

FWIW, the Venstar integration had two Pull Requests in the last two weeks but they would not have been included in 2026.4.X. The other recent PRs were months ago. All this to say that nothing appears to have changed in the integration since February.

1 Like

Issue posted to: Venstar Integration - regularly raising errors when requesting and fetching · Issue #170067 · home-assistant/core · GitHub