TionAPI / HA-tion

Home assistant integration for Tion breezers
Apache License 2.0
72 stars 6 forks source link

Нестабильная связь с бризером [HA 2022.8.0 и выше, интеграция v4.0.1] #112

Closed tms320 closed 2 years ago

tms320 commented 2 years ago

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

После обновления HA до версии 2022.9.0 начались проблемы ) Бризер через раз реагирует на команды изменения скорости и смены режима работы. В логах примерно такое (пример при попытке изменить скорость): image

Прикладываю два лога (они достаточно длинные, поэтому в виде файлов):

  1. Лог при запуске HA, никакие команды из UI-интерфейса я не подавал: HA_logs_start.txt
  2. Лог при попытке изменить скорость: HA_logs_set_fan_speed.txt

Как я понимаю, они там опять что-то в Блютусе "обновили"...

IATkachenko commented 2 years ago

Спасибо, посмотрю. С 2022.9 я потестироваться еще не успел -- в ближайшее время. Пока видно что слишком часто вылетает вызов update_btle_device который пересоздает объект для работы с bluetooth.

plesetsk commented 2 years ago

Похожая ситуация только без частого update_btle_device

сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.000 DEBUG (MainThread) [tion_btle.tion] Connecting. self.connection_status='disc'.
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.000 DEBUG (MainThread) [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={})
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.010 DEBUG (MainThread) [tion_btle.tion] Enabling notification. self.connection_status='connected'
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.195 DEBUG (MainThread) [tion_btle.tion] _enable_notifications done
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.195 DEBUG (MainThread) [tion_btle.tion] _connect done. self.connection_status='connected'.
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.195 DEBUG (MainThread) [tion_btle.tion] Trying 0/3: _try_write(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={'request': bytearray(b'\x80\x10\x00:\xa122\xb07\xf2FEz"\x18\xbb\xaa')})
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.196 DEBUG (MainThread) [tion_btle.tion] Writing 8010003aa13232b037f246457a2218bbaa to 98f00002-3788-83ea-453e-f52244709ddb, self.connection_status='connected'
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.197 DEBUG (MainThread) [tion_btle.tion] Collecting data
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.297 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response 002f003aa83132b037f246f10798073f01001404
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.298 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:\xa812\xb07\xf2F\xf1\x07\x98\x07?\x01\x00\x14\x04')]
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.300 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response 400b0c1321d711e7004cfc8600864eec007c0e04
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.301 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:\xa812\xb07\xf2F\xf1\x07\x98\x07?\x01\x00\x14\x04'), bytearray(b'@\x0b\x0c\x13!\xd7\x11\xe7\x00L\xfc\x86\x00\x86N\xec\x00|\x0e\x04')]
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.302 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response c000000000000600b305
сен 13 09:42:06 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:06.302 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:\xa812\xb07\xf2F\xf1\x07\x98\x07?\x01\x00\x14\x04'), bytearray(b'@\x0b\x0c\x13!\xd7\x11\xe7\x00L\xfc\x86\x00\x86N\xec\x00|\x0e\x04'), bytearray(b'\xc0\x00\x00\x00\x00\x00\x06\x00\xb3\x05')]
сен 13 09:42:07 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:07.198 DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='connected'.
сен 13 09:42:09 homeassistant 9e215582ae69[1272]: 2022-09-13 09:42:09.648 DEBUG (MainThread) [tion_btle.tion] _disconnect done. self.connection_status='disc'
сен 13 09:43:09 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:09.000 DEBUG (MainThread) [tion_btle.tion] Connecting. self.connection_status='disc'.
сен 13 09:43:09 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:09.000 DEBUG (MainThread) [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={})
сен 13 09:43:09 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:09.461 WARNING (MainThread) [tion_btle.tion] Got exception: [org.bluez.Error.Failed] Software caused connection abort. Will try again

сен 13 09:43:11 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:11.463 DEBUG (MainThread) [tion_btle.tion] Trying 1/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={})
сен 13 09:43:13 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:13.046 DEBUG (MainThread) [tion_btle.tion] Enabling notification. self.connection_status='disc'
сен 13 09:43:13 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:13.046 WARNING (MainThread) [tion_btle.tion] Got exception Not connected while enabling notifications!
сен 13 09:43:13 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:13.048 DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='disc'.
сен 13 09:43:13 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:13.048 DEBUG (MainThread) [tion_btle.tion] _disconnect done. self.connection_status='disc'
сен 13 09:43:13 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:13.048 CRITICAL (MainThread) [custom_components.ha_tion_btle] Response is {}
сен 13 09:43:13 homeassistant 9e215582ae69[1272]: 2022-09-13 09:43:13.049 ERROR (MainThread) [custom_components.ha_tion_btle] Unexpected error fetching Tion Breezer data: Not connected
сен 13 09:43:13 homeassistant 9e215582ae69[1272]: Traceback (most recent call last):
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 205, in _async_refresh
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     self.data = await self._async_update_data()
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 164, in _async_update_data
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     return await self.update_method()
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/config/custom_components/ha_tion_btle/__init__.py", line 123, in async_update_state
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     raise e
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/config/custom_components/ha_tion_btle/__init__.py", line 113, in async_update_state
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     response = await self.__tion.get()
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 208, in get
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     await self.get_state_from_breezer()
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 188, in get_state_from_breezer
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     await self.connect()
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 505, in connect
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     await self._connect()
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 308, in _connect
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     await self._enable_notifications()
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 337, in _enable_notifications
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     raise e
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 334, in _enable_notifications
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     await self._btle.start_notify(self.uuid_notify, self._delegation.handleNotification)
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/bleak/backends/bluezdbus/client.py", line 783, in start_notify
сен 13 09:43:13 homeassistant 9e215582ae69[1272]:     raise BleakError("Not connected")
сен 13 09:43:13 homeassistant 9e215582ae69[1272]: bleak.exc.BleakError: Not connected

сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.001 DEBUG (MainThread) [tion_btle.tion] Connecting. self.connection_status='disc'.
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.001 DEBUG (MainThread) [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={})
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.013 DEBUG (MainThread) [tion_btle.tion] Enabling notification. self.connection_status='connected'
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.202 DEBUG (MainThread) [tion_btle.tion] _enable_notifications done
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.202 DEBUG (MainThread) [tion_btle.tion] _connect done. self.connection_status='connected'.
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.202 DEBUG (MainThread) [tion_btle.tion] Trying 0/3: _try_write(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={'request': bytearray(b'\x80\x10\x00:\xa122\xbd\x85\x12>\x8c\xcc\xac\x0c\xbb\xaa')})
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.202 DEBUG (MainThread) [tion_btle.tion] Writing 8010003aa13232bd85123e8cccac0cbbaa to 98f00002-3788-83ea-453e-f52244709ddb, self.connection_status='connected'
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.207 DEBUG (MainThread) [tion_btle.tion] Collecting data
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.299 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response 002f003a2d3132bd85123ef10798073fc1001404
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.300 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:-12\xbd\x85\x12>\xf1\x07\x98\x07?\xc1\x00\x14\x04')]
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.300 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response 400b0c1421d012e70045fd86008d4dec00591304
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.300 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:-12\xbd\x85\x12>\xf1\x07\x98\x07?\xc1\x00\x14\x04'), bytearray(b'@\x0b\x0c\x14!\xd0\x12\xe7\x00E\xfd\x86\x00\x8dM\xec\x00Y\x13\x04')]
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.301 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response c000000000000600deda
сен 13 09:46:17 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:17.301 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:-12\xbd\x85\x12>\xf1\x07\x98\x07?\xc1\x00\x14\x04'), bytearray(b'@\x0b\x0c\x14!\xd0\x12\xe7\x00E\xfd\x86\x00\x8dM\xec\x00Y\x13\x04'), bytearray(b'\xc0\x00\x00\x00\x00\x00\x06\x00\xde\xda')]
сен 13 09:46:18 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:18.208 DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='connected'.
сен 13 09:46:20 homeassistant 9e215582ae69[1272]: 2022-09-13 09:46:20.606 DEBUG (MainThread) [tion_btle.tion] _disconnect done. self.connection_status='disc'
сен 13 09:46:41 homeassistant kernel: i2c_hid i2c-SMO91D0:00: i2c_hid_get_input: incomplete report (53/13568)
сен 13 09:46:46 homeassistant kernel: i2c_hid i2c-SMO91D0:00: i2c_hid_get_input: incomplete report (53/13568)
сен 13 09:47:20 homeassistant 9e215582ae69[1272]: 2022-09-13 09:47:20.005 DEBUG (MainThread) [tion_btle.tion] Connecting. self.connection_status='disc'.
сен 13 09:47:20 homeassistant 9e215582ae69[1272]: 2022-09-13 09:47:20.006 DEBUG (MainThread) [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={})
сен 13 09:47:21 homeassistant 9e215582ae69[1272]: 2022-09-13 09:47:21.442 DEBUG (MainThread) [tion_btle.tion] Enabling notification. self.connection_status='disc'
сен 13 09:47:21 homeassistant 9e215582ae69[1272]: 2022-09-13 09:47:21.442 WARNING (MainThread) [tion_btle.tion] Got exception Not connected while enabling notifications!
сен 13 09:47:21 homeassistant 9e215582ae69[1272]: 2022-09-13 09:47:21.444 DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='disc'.
сен 13 09:47:21 homeassistant 9e215582ae69[1272]: 2022-09-13 09:47:21.444 DEBUG (MainThread) [tion_btle.tion] _disconnect done. self.connection_status='disc'
сен 13 09:47:21 homeassistant 9e215582ae69[1272]: 2022-09-13 09:47:21.444 CRITICAL (MainThread) [custom_components.ha_tion_btle] Response is {}
сен 13 09:47:21 homeassistant 9e215582ae69[1272]: 2022-09-13 09:47:21.444 ERROR (MainThread) [custom_components.ha_tion_btle] Unexpected error fetching Tion Breezer data: Not connected
сен 13 09:47:21 homeassistant 9e215582ae69[1272]: Traceback (most recent call last):
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 205, in _async_refresh
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     self.data = await self._async_update_data()
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 164, in _async_update_data
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     return await self.update_method()
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/config/custom_components/ha_tion_btle/__init__.py", line 123, in async_update_state
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     raise e
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/config/custom_components/ha_tion_btle/__init__.py", line 113, in async_update_state
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     response = await self.__tion.get()
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 208, in get
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     await self.get_state_from_breezer()
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 188, in get_state_from_breezer
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     await self.connect()
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 505, in connect
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     await self._connect()
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 308, in _connect
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     await self._enable_notifications()
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 337, in _enable_notifications
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     raise e
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 334, in _enable_notifications
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     await self._btle.start_notify(self.uuid_notify, self._delegation.handleNotification)
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:   File "/usr/local/lib/python3.10/site-packages/bleak/backends/bluezdbus/client.py", line 783, in start_notify
сен 13 09:47:21 homeassistant 9e215582ae69[1272]:     raise BleakError("Not connected")
сен 13 09:47:21 homeassistant 9e215582ae69[1272]: bleak.exc.BleakError: Not connected

этот блок повторяется очень часто. Спасибо!

IATkachenko commented 2 years ago

Это тоже на 2022.9? Он как-то интересно проваливается через все...

Connecting. self.connection_status='disc'.
DEBUG (MainThread) [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={})
WARNING (MainThread) [tion_btle.tion] Got exception: [org.bluez.Error.Failed] Software caused connection abort. Will try again
DEBUG (MainThread) [tion_btle.tion] Trying 1/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f6a1c6c3430>,),kwargs={})

Вот тут мы вышли из _try_connect() без exception'ов,

DEBUG (MainThread) [tion_btle.tion] Enabling notification. self.connection_status='disc'

но подключение все еще не устанволено:

WARNING (MainThread) [tion_btle.tion] Got exception Not connected while enabling notifications!
DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='disc'.
DEBUG (MainThread) [tion_btle.tion] _disconnect done. self.connection_status='disc'
CRITICAL (MainThread) [custom_components.ha_tion_btle] Response is {}

Похоже что на стороне bleak вся магия происходит.

plesetsk commented 2 years ago

Это тоже на 2022.9? Он как-то интересно проваливается через все...

Home Assistant 2022.9.2

IATkachenko commented 2 years ago

Похоже что это -- продолжение #111

Как я сейчас вижу происходящее: когда мы пытаемся получить что-то от бризера в HA тоже происходит какое-то обращение к bleak. Выглядит это примерно так

23:48:47.001 INFO [custom_components.ha_tion_btle] Tion instance update started
23:48:47.002 DEBUG [tion_btle.tion] self.__connections_count=0, self.connection_status='disc'
23:48:47.002 DEBUG [tion_btle.tion] semaphore grabbed
23:48:47.002 DEBUG [tion_btle.tion] Connecting. self.connection_status='disc'.
23:48:47.003 DEBUG [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s3.TionS3 object at 0xb1fe4640>,),kwargs={})
23:48:47.003 DEBUG [bleak.backends.bluezdbus.client] Connecting to device @ FF:FF:FF:FF:FF:FF with hci0
23:48:50.095 INFO [custom_components.ha_tion_btle] update_btle_device called with service_info=BluetoothServiceInfoBleak(name='Tion Breezer 3S', address='FF:FF:FF:FF:FF:FF', rssi=-75, manufacturer_data={}, service_data={}, service_uuids=[], source='local', device=FF:FF:FF:FF:FF:FF: Tion Breezer 3S, advertisement=AdvertisementData(local_name='Tion Breezer 3S')), _change=<BluetoothChange.ADVERTISEMENT: 1>
23:48:50.096 DEBUG [bleak.backends.bluezdbus.client] Device disconnected (/org/bluez/hci0/dev_FF_FF_FF_FF_FF_FF)
23:48:50.096 DEBUG [bleak.backends.bluezdbus.client] _cleanup_all(/org/bluez/hci0/dev_FF_FF_FF_FF_FF_FF)

и после _cleanup_all уже ничего не происходит.

Что интересно -- во время такого обновления приходит пустой массив service_uuids. И если параллельно запросить данные вот таким скриптом

import asyncio

from tion_btle.s3 import TionS3 as Breezer

async def main():
    t = Breezer("FF:FF:FF:FF:FF:FF")
    print(await t.get())

asyncio.run(main())

все волшебным образом чинится до следующего раза: deadlock в bleak сбрасывается, приходит обновление с нормальными serivce_uuids и все становится хорошо.

fishenebelny commented 2 years ago

В 2022.9.3 bleak обновили, какие-то еще изменения сделали с bluetooth. Может это решить проблему стабильности?

IATkachenko commented 2 years ago

В 2022.9.4 все точно также. Я, наверное чего-то в этой жизни не понимаю, но HA с BT сейчас работает как-то совсем не правильно. Может чуть позже заведу им issue, потому что я честно вызываю connect, а bleak выдает

[bleak.backends.bluezdbus.client] Connecting to device
[homeassistant.components.bluetooth.manager] hci0: ...
 [custom_components.ha_tion_btle] update_btle_device
[homeassistant.components.bluetooth.manager] hci0: ...
 [custom_components.ha_tion_btle] update_btle_device
[homeassistant.components.bluetooth.manager] hci0: ...
 [custom_components.ha_tion_btle] update_btle_device
[bleak.backends.bluezdbus.client] Device disconnected

и все, привет.

plesetsk commented 2 years ago

Не знаю на сколько правильно, но я добавил в cron перезагрузку блютуса на хосте каждый час + иногда передергиваю бризер по питанию. стало получше, но это вообще не решение. даже на костыль не тянет.

Еще обратил внимание, что моя автоматизация долбит бризер до тех пор пока он не примет нужное состояние. Это приводит либо к зависанию бризера, либо он срабатывает на n-ную итерацию и дальше работает норм до следующего изменения состояния..

IATkachenko commented 2 years ago

Ну, поехали, https://github.com/home-assistant/core/issues/78576

fishenebelny commented 2 years ago

Новые обновления в 2022.9.5 потенциально могут улучшить ситуацию?

plesetsk commented 2 years ago

Обновился. всё тоже самое. Обратил внимание еще что со второй попытки отправить управляющую команду она проходит.

Нажимаю выключить :

2022-09-19 11:01:45.709 DEBUG (MainThread) [tion_btle.tion] Connecting. self.connection_status='disc'.
2022-09-19 11:01:45.709 DEBUG (MainThread) [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f09f0bef8e0>,),kwargs={})
сен 19 11:01:45 homeassistant systemd[164457]: Reached target Bluetooth.
 2022-09-19 11:01:47.592 DEBUG (MainThread) [tion_btle.tion] Enabling notification. self.connection_status='disc'
 2022-09-19 11:01:47.592 WARNING (MainThread) [tion_btle.tion] Got exception Not connected while enabling notifications!
 2022-09-19 11:01:47.619 DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='disc'.
 2022-09-19 11:01:47.619 DEBUG (MainThread) [tion_btle.tion] _disconnect done. self.connection_status='disc'
 2022-09-19 11:01:47.630 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [139679942939680] Not connected
 Traceback (most recent call last):
   File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 200, in handle_call_service
     await hass.services.async_call(
   File "/usr/src/homeassistant/homeassistant/core.py", line 1738, in async_call
     task.result()
   File "/usr/src/homeassistant/homeassistant/core.py", line 1775, in _execute_service
     await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
   File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
     await service.entity_service_call(
   File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 676, in entity_service_call
     future.result()  # pop exception if have
   File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 931, in async_request_call
     await coro
   File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 713, in _handle_entity_call
     await result
   File "/config/custom_components/ha_tion_btle/climate.py", line 117, in async_set_hvac_mode
     await self._async_set_state(is_on=False)
   File "/config/custom_components/ha_tion_btle/climate.py", line 239, in _async_set_state
     await self.coordinator.set(**kwargs)
   File "/config/custom_components/ha_tion_btle/__init__.py", line 152, in set
     await self.__tion.set(kwargs)
   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 247, in set
     await self.connect()
   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 505, in connect
     await self._connect()
   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 308, in _connect
     await self._enable_notifications()
   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 337, in _enable_notifications
     raise e
   File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 334, in _enable_notifications
     await self._btle.start_notify(self.uuid_notify, self._delegation.handleNotification)
   File "/usr/local/lib/python3.10/site-packages/bleak/backends/bluezdbus/client.py", line 805, in start_notify
     raise BleakError("Not connected")
 bleak.exc.BleakError: Not connected

Далее второй раз нажимаю выключить

11:02:03.771 DEBUG (MainThread) [tion_btle.tion] Connecting. self.connection_status='disc'.
11:02:03.771 DEBUG (MainThread) [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f09f0bef8e0>,),kwargs={})
11:02:03.775 DEBUG (MainThread) [tion_btle.tion] Enabling notification. self.connection_status='connected'
11:02:03.991 DEBUG (MainThread) [tion_btle.tion] _enable_notifications done
11:02:03.991 DEBUG (MainThread) [tion_btle.tion] _connect done. self.connection_status='connected'.
11:02:03.991 DEBUG (MainThread) [tion_btle.tion] Trying 0/3: _try_write(args=(<tion_btle.s4.TionS4 object at 0x7f09f0bef8e0>,),kwargs={'request': bytearray(b'\x80\x10\x00:\xa122Px\xae\x83f\x98,\xd4\xbb\xaa')})
11:02:03.992 DEBUG (MainThread) [tion_btle.tion] Writing 8010003aa132325078ae8366982cd4bbaa to 98f00002-3788-83ea-453e-f52244709ddb, self.connection_status='connected'
11:02:03.995 DEBUG (MainThread) [tion_btle.tion] Collecting data
11:02:04.192 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response 002f003a6731325078ae83b22a31e93f81001603
11:02:04.192 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:g12Px\xae\x83\xb2*1\xe9?\x81\x00\x16\x03')]
11:02:04.194 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response 400c0d1420019aee004bf18c008759e6009ee51c
11:02:04.194 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:g12Px\xae\x83\xb2*1\xe9?\x81\x00\x16\x03'), bytearray(b'@\x0c\r\x14 \x01\x9a\xee\x00K\xf1\x8c\x00\x87Y\xe6\x00\x9e\xe5\x1c')]
11:02:04.195 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response c0000000000006002f78
11:02:04.196 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:g12Px\xae\x83\xb2*1\xe9?\x81\x00\x16\x03'), bytearray(b'@\x0c\r\x14 \x01\x9a\xee\x00K\xf1\x8c\x00\x87Y\xe6\x00\x9e\xe5\x1c'), bytearray(b'\xc0\x00\x00\x00\x00\x00\x06\x00/x')]
11:02:04.996 DEBUG (MainThread) [tion_btle.tion] Will write bytearray(b'\x00\x17\x00:m02\xdb\xcd;p\x10Y0A\x1e\x00\x00\x16\x03\xb5\x00\xbb\xaa')
11:02:04.997 DEBUG (MainThread) [tion_btle.tion] Trying 0/3: _try_write(args=(<tion_btle.s4.TionS4 object at 0x7f09f0bef8e0>, bytearray(b'\x00\x17\x00:m02\xdb\xcd;p\x10Y0A\x1e\x00\x00\x16\x03')),kwargs={})
11:02:04.997 DEBUG (MainThread) [tion_btle.tion] Writing 0017003a6d3032dbcd3b70105930411e00001603 to 98f00002-3788-83ea-453e-f52244709ddb, self.connection_status='connected'сен 19 11:02:05 homeassistant bdd91d07f349[1272]: 2022-09-19 11:02:05.001 DEBUG (MainThread) [tion_btle.tion] Trying 0/3: _try_write(args=(<tion_btle.s4.TionS4 object at 0x7f09f0bef8e0>, bytearray(b'\xc0\xb5\x00\xbb\xaa')),kwargs={})
11:02:05.002 DEBUG (MainThread) [tion_btle.tion] Writing c0b500bbaa to 98f00002-3788-83ea-453e-f52244709ddb, self.connection_status='connected'
11:02:05.003 DEBUG (MainThread) [tion_btle.tion] Collecting data
11:02:05.090 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response 002f003ae63132dbcd3b70105930413e81001603
11:02:05.091 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:\xe612\xdb\xcd;p\x10Y0A>\x81\x00\x16\x03')]
11:02:05.092 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response 400c0d1420029aee004cf18c008659e600a2e51c
11:02:05.092 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:\xe612\xdb\xcd;p\x10Y0A>\x81\x00\x16\x03'), bytearray(b'@\x0c\r\x14 \x02\x9a\xee\x00L\xf1\x8c\x00\x86Y\xe6\x00\xa2\xe5\x1c')]
11:02:05.093 DEBUG (MainThread) [tion_btle.tion] Got data in 17 response c0000000000006009e71
11:02:05.093 DEBUG (MainThread) [tion_btle.tion] self._data=[bytearray(b'\x00/\x00:\xe612\xdb\xcd;p\x10Y0A>\x81\x00\x16\x03'), bytearray(b'@\x0c\r\x14 \x02\x9a\xee\x00L\xf1\x8c\x00\x86Y\xe6\x00\xa2\xe5\x1c'), bytearray(b'\xc0\x00\x00\x00\x00\x00\x06\x00\x9eq')]
11:02:06.004 DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='connected'.
11:02:08.643 DEBUG (MainThread) [tion_btle.tion] _disconnect done. self.connection_status='disc'

Еще обратил внимание, что иногда в логах проскакивает такое сообщение

2022-09-19 11:07:01.627 ERROR (MainThread) [homeassistant.components.bluetooth.scanner] hci0 (E8:2A:EA:7D:76:B5): Error stopping scanner: [org.bluez.Error.Failed] No discovery started

И еще в дополнении вылазит такое

2022-09-19 11:13:58.080 DEBUG (MainThread) [tion_btle.tion] Connecting. self.connection_status='disc'.
2022-09-19 11:13:58.080 DEBUG (MainThread) [tion_btle.tion] Trying 0/1: _try_connect(args=(<tion_btle.s4.TionS4 object at 0x7f09f0bef8e0>,),kwargs={})
2022-09-19 11:14:03.649 DEBUG (MainThread) [tion_btle.tion] Disconnecting. self.connection_status='disc'.
2022-09-19 11:14:03.649 DEBUG (MainThread) [tion_btle.tion] _disconnect done. self.connection_status='disc'
2022-09-19 11:14:03.650 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [139680011208928]
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/bleak/backends/bluezdbus/client.py", line 168, in connect
    reply = await self._bus.call(
  File "/usr/local/lib/python3.10/site-packages/dbus_fast/aio/message_bus.py", line 337, in call
    await future
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:сен 19 11:14:03 homeassistant bdd91d07f349[1272]:
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 200, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1738, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1775, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 676, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 931, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 713, in _handle_entity_call
    await result
  File "/config/custom_components/ha_tion_btle/climate.py", line 117, in async_set_hvac_mode
    await self._async_set_state(is_on=False)
  File "/config/custom_components/ha_tion_btle/climate.py", line 239, in _async_set_state
    await self.coordinator.set(**kwargs)
  File "/config/custom_components/ha_tion_btle/__init__.py", line 152, in set
    await self.__tion.set(kwargs)
  File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 247, in set
    await self.connect()
  File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 505, in connect
    await self._connect()
  File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 302, in _connect
    await self._try_connect()
  File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 31, in wrapper
    return await f(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/tion_btle/tion.py", line 295, in _try_connect
    return await self._btle.connect(timeout=5.0)
  File "/usr/local/lib/python3.10/site-packages/bleak/backends/bluezdbus/client.py", line 167, in connect
    async with async_timeout.timeout(timeout):
  File "/usr/local/lib/python3.10/site-packages/async_timeout/__init__.py", line 129, in __aexit__
    self._do_exit(exc_type)
  File "/usr/local/lib/python3.10/site-packages/async_timeout/__init__.py", line 212, in _do_exit
    raise asyncio.TimeoutError
plesetsk commented 2 years ago

Извиняюсь за флуд.

Вот тыкаю кнопки смотрю как реагирует бризер. И вижу четкую закономерность, что на второй тык в короткий промежуток времени он отрабатывает отлично. Моюет быть ему таймаут как то можно добавить, чтобы дольше операцию отрабатывал?

IATkachenko commented 2 years ago

Там не во втором разе дело. Сейчас вам на второй раз везет. Но не это происходит не каждый раз и не всем также везет на второй раз.

UnnamedHero commented 2 years ago

Наверное, я зря со своей 2022.8.7 влезаю, но у меня примерно такие же симптомы. Бризеры рандомно отваливаются. У меня их три штуки. Отваливают рандомно, в независимости от силы сигнала и удалённости от приёмника. Началось после обновления подсистемы Bluetooth в HA. Лечится простой перезагрузкой HA, работает даже для docker версии при перезагрузки из меню HA. Логи пытался собирать, но внутри ничего нет нетипичного. Бризер банально перестаёт отвечать и всё.

IATkachenko commented 2 years ago

Не зря, это с 2022.8 началось.

Сейчас есть половинчатое решение: удаление вот этой строки https://github.com/TionAPI/HA-tion/blob/7ed1ac0ef0ef3133524e6eeeb211cfc7671543b7/custom_components/ha_tion_btle/__init__.py#L211 и следующей (212) -- повышает стабильность работы, на какое-то время.

IATkachenko commented 2 years ago

Исправлено в v4.1.0.