HA-tion icon indicating copy to clipboard operation
HA-tion copied to clipboard

При отправке команды (смена режима, температуры или скорости вентилятора) - возникает сбой.

Open xapepam opened this issue 2 months ago • 0 comments

Общая информация

  • версия Home Assistant: 2025.10.2
  • способ установки Home Assistant: [ ] venv [ ] Docker [x ] Home Assistant OS
  • версия компонента: v4.2.0
  • модель бризера: Lite
  • версия python-модуля: default (Python 3.12.11)

[x] в момент проявления проблемы к бризеру никто не подключен [x] bluetooth в системе работает корректно, действий из WiKi не требуется [x] проблема не похожа ни на одну из FAQ

Краткое описание

Время от времени 1 из двух подключенных Tion Lite при попытке послать любую команду, отдают ошибку: ('_get_data_from_breezer', 'Could not get breezer state'). Это может происходить как во время работы автоматизации, так и во время ручного управления. До передатчика от 3 до 5 метров, притом на дальнем бризере ошибки чаще всего происходят. Из этого родилось предположение, что это связано с грязным радио эфиром. Но, в 70% случаев все работает, просто расстраивает сбой автоматизации, которой не помогает даже параметр continue_on_error: true - после первого же сбоя, автоматизация просто отменяется.

Debug-log

2025-10-16 00:58:43.008 WARNING (MainThread) [habluetooth.wrappers] DA:41:09:6E:72:73: BleakClient.connect() called without bleak-retry-connector. For reliable connection establishment, use bleak_retry_connector.establish_connection(). See https://github.com/Bluetooth-Devices/bleak-retry-connector
2025-10-16 00:58:49.065 DEBUG (MainThread) [tion_btle.tion] Enabling notification. self.connection_status='connected'
2025-10-16 00:58:49.092 DEBUG (MainThread) [tion_btle.tion] _enable_notifications done
2025-10-16 00:58:49.092 DEBUG (MainThread) [tion_btle.tion] _connect done. self.connection_status='connected'.
2025-10-16 00:58:49.092 DEBUG (MainThread) [tion_btle.tion] Trying 0/3: _try_write(args=(<tion_btle.lite.TionLite object at 0x7fd378fbecf0>,),kwargs={'request': bytearray(b'\x80\x10\x00:\x022\x12\r\xd7\x1f\x8fH\xd3\xc3\x1a\xbb\xaa')})
2025-10-16 00:58:49.093 DEBUG (MainThread) [tion_btle.tion] Writing 8010003a0232120dd71f8f48d3c31abbaa to 98f00002-3788-83ea-453e-f52244709ddb, self.connection_status='connected'
2025-10-16 00:58:49.095 DEBUG (MainThread) [tion_btle.tion] Collecting data
2025-10-16 00:58:49.114 DEBUG (MainThread) [tion_btle.tion] Got data in 98f00003-3788-83ea-453e-f52244709ddb (Handle: 17): Unknown response 0049003a4631120dd71f8f6f87c3decfd8020e06
2025-10-16 00:58:49.114 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00I\x00:F1\x12\r\xd7\x1f\x8fo\x87\xc3\xde\xcf\xd8\x02\x0e\x06')]
2025-10-16 00:58:49.114 DEBUG (MainThread) [tion_btle.tion] Got data in 98f00003-3788-83ea-453e-f52244709ddb (Handle: 17): Unknown response 40050c1ba9e51200269d1200f434e000ab843300
2025-10-16 00:58:49.115 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00I\x00:F1\x12\r\xd7\x1f\x8fo\x87\xc3\xde\xcf\xd8\x02\x0e\x06'), bytearray(b'@\x05\x0c\x1b\xa9\xe5\x12\x00&\x9d\x12\x00\xf44\xe0\x00\xab\x843\x00')]
2025-10-16 00:58:49.115 DEBUG (MainThread) [tion_btle.tion] Got data in 98f00003-3788-83ea-453e-f52244709ddb (Handle: 17): Unknown response 4000000000000000000000000000000100000000
2025-10-16 00:58:49.115 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00I\x00:F1\x12\r\xd7\x1f\x8fo\x87\xc3\xde\xcf\xd8\x02\x0e\x06'), bytearray(b'@\x05\x0c\x1b\xa9\xe5\x12\x00&\x9d\x12\x00\xf44\xe0\x00\xab\x843\x00'), bytearray(b'@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00')]
2025-10-16 00:58:49.115 DEBUG (MainThread) [tion_btle.tion] Got data in 98f00003-3788-83ea-453e-f52244709ddb (Handle: 17): Unknown response c000000000000a1419020406062300638e
2025-10-16 00:58:49.116 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00I\x00:F1\x12\r\xd7\x1f\x8fo\x87\xc3\xde\xcf\xd8\x02\x0e\x06'), bytearray(b'@\x05\x0c\x1b\xa9\xe5\x12\x00&\x9d\x12\x00\xf44\xe0\x00\xab\x843\x00'), bytearray(b'@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00'), bytearray(b'\xc0\x00\x00\x00\x00\x00\n\x14\x19\x02\x04\x06\x06#\x00c\x8e')]
2025-10-16 00:58:50.097 DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='connected'.
2025-10-16 00:58:52.740 CRITICAL (MainThread) [custom_components.ha_tion_btle] response={}, e=EOFError()
2025-10-16 00:58:52.741 ERROR (MainThread) [custom_components.ha_tion_btle] Unexpected error fetching Br Lite data
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 392, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 293, in _async_update_data
    return await self.update_method()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ha_tion_btle/__init__.py", line 125, in async_update_state
    raise e
  File "/config/custom_components/ha_tion_btle/__init__.py", line 115, in async_update_state
    response = await self.__tion.get()
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/tion_btle/tion.py", line 209, in get
    await self.get_state_from_breezer()
  File "/usr/local/lib/python3.13/site-packages/tion_btle/tion.py", line 193, in get_state_from_breezer
    await self.disconnect()
  File "/usr/local/lib/python3.13/site-packages/tion_btle/tion.py", line 517, in disconnect
    await self._disconnect()
  File "/usr/local/lib/python3.13/site-packages/tion_btle/tion.py", line 318, in _disconnect
    await self._btle.disconnect()
  File "/usr/local/lib/python3.13/site-packages/habluetooth/wrappers.py", line 510, in disconnect
    await self._backend.disconnect()
  File "/usr/local/lib/python3.13/site-packages/bleak/backends/bluezdbus/client.py", line 450, in disconnect
    reply = await self._bus.call(
            ^^^^^^^^^^^^^^^^^^^^^
    ...<6 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/dbus_fast/aio/message_bus.py", line 398, in call
    await future
  File "src/dbus_fast/aio/message_reader.py", line 23, in dbus_fast.aio.message_reader._message_reader
  File "src/dbus_fast/_private/unmarshaller.py", line 868, in dbus_fast._private.unmarshaller.Unmarshaller._unmarshall
  File "src/dbus_fast/_private/unmarshaller.py", line 732, in dbus_fast._private.unmarshaller.Unmarshaller._read_header
  File "src/dbus_fast/_private/unmarshaller.py", line 453, in dbus_fast._private.unmarshaller.Unmarshaller._read_to_pos
  File "src/dbus_fast/_private/unmarshaller.py", line 393, in dbus_fast._private.unmarshaller.Unmarshaller._read_sock_with_fds
EOFError

Как можно воспроизвети вашу проблему

  1. Заходим в управление устройством.
  2. Выбираем предустановленный режим Турбо. Дожидаемся переключения, оно либо произойдет, либо сразу же ошибка.
  3. Если переключение произошло, то переключаемся на другой режит, например "Сон", в 1 из 3 случаев, будет сбой.

Дополнительное описание

Тоже самое на установке температуры и скорости вентилятора. Можно легко повторить руками и все получится скорее всего. Заметил, что при ошибке режим может сброситься на "нет". т.е. проблема именно с получением текущего статуса устройства перед изменением этого статуса. Так же в логах вижу: 025-10-16 01:08:09.783 WARNING (MainThread) [habluetooth.wrappers] E0:48:80:2C:99:E5: BleakClient.connect() called without bleak-retry-connector. For reliable connection establishment, use bleak_retry_connector.establish_connection(). See https://github.com/Bluetooth-Devices/bleak-retry-connector - возможно это может помочь, если последовать рекомендации.

xapepam avatar Oct 15 '25 22:10 xapepam