I’ve been using your integration for years. Here’s what I used to have in YAML (I edited it to fit the new format when I re-setup the 2.0.x version in the UI):
- platform: xantech
type: dax88
port: /dev/ttyUSB0
zones:
11:
name: "BAZ room"
12:
name: "FOO room"
13:
name: "Kitchen"
14:
name: "Back yard"
15:
name: "Primary bedroom"
16:
name: "BOB"
17:
name: "Garage"
18:
name: "Family room"
sources:
1:
name: "ALICE"
2:
name: "BAZ"
3:
name: "BAR"
4:
name: "FOO"
5:
name: "Shared"
7:
name: "Home assistant"
8:
name: "Wifi"
The new 0.2.2 is giving these errors in the log:
This error originated from a custom integration.
Logger: custom_components.xantech.coordinator
Source: custom_components/xantech/coordinator.py:63
integration: Xantech Multi-Zone Audio (documentation, issues)
First occurred: 6:43:30 PM (9 occurrences)
Last logged: 8:08:53 PM
Failed to get status for zone 13
Failed to get status for zone 16
Failed to get status for zone 18
Failed to get status for zone 14
Failed to get status for zone 12
Traceback (most recent call last):
File "/usr/local/lib/python3.13/asyncio/tasks.py", line 507, in wait_for
return await fut
^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/queues.py", line 186, in get
await getter
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/config/custom_components/xantech/coordinator.py", line 63, in _async_update_data
status = await self.amp.zone_status(zone_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/pyxantech/__init__.py", line 623, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/pyxantech/__init__.py", line 643, in zone_status
status_string = await self._protocol.send(cmd, skip=skip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/pyxantech/protocol.py", line 195, in send
return await self._read_response(skip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/pyxantech/protocol.py", line 214, in _read_response
chunk = await asyncio.wait_for(self._queue.get(), self._timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/tasks.py", line 506, in wait_for
async with timeouts.timeout(timeout):
~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/timeouts.py", line 116, in __aexit__
raise TimeoutError from exc_val
TimeoutError
and
This error originated from a custom integration.
Logger: custom_components.xantech.coordinator
Source: custom_components/xantech/coordinator.py:63
integration: Xantech Multi-Zone Audio (documentation, issues)
First occurred: 7:45:17 PM (3 occurrences)
Last logged: 7:46:19 PM
Failed to get status for zone 17
Failed to get status for zone 13
Traceback (most recent call last):
File "/usr/local/lib/python3.13/asyncio/tasks.py", line 507, in wait_for
return await fut
^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/queues.py", line 186, in get
await getter
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/pyxantech/protocol.py", line 214, in _read_response
chunk = await asyncio.wait_for(self._queue.get(), self._timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/tasks.py", line 506, in wait_for
async with timeouts.timeout(timeout):
~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/timeouts.py", line 116, in __aexit__
raise TimeoutError from exc_val
TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/xantech/coordinator.py", line 63, in _async_update_data
status = await self.amp.zone_status(zone_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/pyxantech/__init__.py", line 623, in wrapper
return await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/pyxantech/__init__.py", line 643, in zone_status
status_string = await self._protocol.send(cmd, skip=skip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/pyxantech/protocol.py", line 195, in send
return await self._read_response(skip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/pyxantech/protocol.py", line 243, in _read_response
self._log_timeout(request=b'', data=data, response_eol=response_eol)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/ratelimit/decorators.py", line 77, in wrapper
raise RateLimitException('too many calls', period_remaining)
ratelimit.exception.RateLimitException: too many calls
If there’s more I can do to debug, please let me know. I am able to install the custom component locally from a branch (and make changes), but I have never figured out how to make changes to pyxantech on the HA machine that actually has the USB connection since I believe the python environment is managed globally (?).