Closed kalend closed 2 years ago
Вроде в #60 вы говорили что перешли на 2.1.3 и проблема ушла? Или я вас не правильно понял?
По логу, без timestamp, понять одновременно ли происходит попытка обратиться к bluetooth не возможно, но думаю что это именно та проблема с которой боролся @kizill в релизе 2.1.3 и странно что вы ее видите...
В 2.1.4 был только исправлен уровень логов для сообщений о повторных попытках.
И приложите, пожалуйста, фрагмент home-assistant.log с debug логом Тиона, а не лог из web-интерфейса: в нем не хватает достаточно большой части полезной для отладки информации.
Игорь как оказалось - поспешил с выводами. Действительно сразу после обновления проблемы не заметил, но прошло 1-2 суток и стал видеть как пропуски идут в шедулере. Bluetooth на малине кстати сам по себе работает четко - я обратил внимание еще вот на что. Если я обращаюсь из штатного приложения Тион, то при запуске приложения он тоже не всегда тион лайт находит. Для этого у них есть кнопочка refresh. Т.е. сами по себе эти железки не всегда цепляются по первому разу. Похоже нужно в алгоритм где-то заложить возможность повторных реконнектов.
Логи файликом за вчера цепляю, а ниже фрагмент из лог файла несколько минут назад
2022-01-18 11:35:39 CRITICAL (MainThread) [tion_btle.tion] Retry limit (1) exceeded for _try_connect((<tion_btle.lite.Lite object at 0xad7719d0>,), {})
2022-01-18 11:35:39 CRITICAL (MainThread) [custom_components.tion] Response is {}
2022-01-18 11:35:39 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/tion/climate.py", line 412, in _async_update_state
await self._tion_entry.async_update_state(time, force, keep_connection)
File "/config/custom_components/tion/__init__.py", line 120, in async_update_state
raise e
File "/config/custom_components/tion/__init__.py", line 106, in async_update_state
response = self.__tion.get(keep_connection)
File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 274, in get
self.get_state_from_breezer(keep_connection)
File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 249, in get_state_from_breezer
self.connect()
File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 598, in connect
self._connect()
File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 371, in _connect
self._try_connect()
File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 43, in wrapper
raise MaxTriesExceededError
tion_btle.tion.MaxTriesExceededError
Реконкеты уже есть (2 попытки подключиться 3 отправить запрос после подключения). Видимо, следующий шаг -- вынести в пользовательские настрйоки сколько раз пытаться переподключиться / перезапросить данные, поскольку все очень индивидуально и сильно зависит от взаиморасположения. В этом ключе тогда и двинусь.
ps. На полный debug лог в вашем случае очень хочется посмотреть: есть подозрение что что-то в retry части идет не так как задумано: bluepy.btle.BTLEDisconnectError
наружу прорываться не должно.
Спасибо. Я погрепал на всякий случай на предмет bluepy.btle.BTLEDisconnectError - действительно в логах такой ругани нет.
Ага, вижу, просто лог из первого сообщения с этим exception, чего быть не должно...
Хех, mybad: в 2.1.2 это починили, а в 2.1.3 я сломал. И заметил только сейчас.
В 2.1.5 снова должно быть также хорошо как было поле правок @kizill и до того как я случайно частично откатил правку для опроса состояния.
Забавно. ;-) Обновил до 2.1.5. Смотрим.
И еще один подход к этой проблеме в ветке i83/#83
Общая информация
Краткое описание
Пытаюсь управлять тремя тионами из под Scheduler Component. Когда управляю "руками" - иногда управляются не с первого раза (как бы просыпаются), но потом рулятся нормально. При управления из Scheduler иногда часть тионов пропускает команду на включить-выключить и приходится потом их руками пинать. В логах при этом ошибка.
Debug-log
Logger: homeassistant.core Source: custom_components/tion/init.py:19 Integration: Tion breezer (documentation) First occurred: 08:00:00 (3 occurrences) Last logged: 16:00:15
Error executing service: <ServiceCall climate.set_hvac_mode (c:9eeda46347a0f1a661e2941627abf3a0): hvac_mode=off, entity_id=['climate.detskaya']> Error executing service: <ServiceCall climate.set_hvac_mode (c:c08fddd63e49fd75629824346423830e): hvac_mode=off, entity_id=['climate.spalnya']> Error executing service: <ServiceCall climate.set_hvac_mode (c:1c50a3f3342dd384c2f30baa984f15a3): hvac_mode=heat, entity_id=['climate.spalnya']> Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/core.py", line 1511, in catch_exceptions await coro_or_task File "/usr/src/homeassistant/homeassistant/core.py", line 1530, in _execute_service await handler.job.target(service_call) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 209, in handle_service await self.hass.helpers.service.entity_service_call( File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 663, in entity_service_call future.result() # pop exception if have File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 896, in async_request_call await coro File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 700, in _handle_entity_call await result File "/config/custom_components/tion/climate.py", line 205, in async_set_hvac_mode await self._async_set_state(is_on=False) File "/config/custom_components/tion/climate.py", line 407, in _async_set_state await self._tion_entry.set(kwargs) File "/config/custom_components/tion/init.py", line 194, in set await btle_exec_helper(self.__tion.set, kwargs) File "/config/custom_components/tion/init.py", line 19, in btle_exec_helper return await asyncio.wrap_future(_BTLE_COMMAND_EXECUTOR.submit(method, *args, *kwargs)) File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run result = self.fn(self.args, self.kwargs) File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 294, in set self.connect() File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 586, in connect self._connect() File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 368, in _connect raise e File "/usr/local/lib/python3.9/site-packages/tion_btle/tion.py", line 349, in _connect self._btle.connect(self.mac, btle.ADDR_TYPE_RANDOM) File "/usr/local/lib/python3.9/site-packages/bluepy/btle.py", line 445, in connect self._connect(addr, addrType, iface) File "/usr/local/lib/python3.9/site-packages/bluepy/btle.py", line 439, in _connect raise BTLEDisconnectError("Failed to connect to peripheral %s, addr type: %s" % (addr, addrType), rsp) bluepy.btle.BTLEDisconnectError: Failed to connect to peripheral fc:2c:c1:7c:f9:dc, addr type: random
Сейчас попробую на последнюю версию Вашу переехать...