AlexxIT / YandexStation

Управление Яндекс.Станцией и другими устройствами умного дома с Алисой из Home Assistant
https://t.me/AlexxIT_SmartHome
MIT License
1.37k stars 125 forks source link

Проверка в синхронном режиме #571

Open Mrboob58 opened 2 days ago

Mrboob58 commented 2 days ago

Кондиционер прокинут в УДЯ через пульт "яндекс". Через интеграцию "YandexStation" кондиционер добавлен в HA. Из HA через интеграцию "Yandex Smart Home (Yaha Cloud)" этот кондиционер прокинут в УДЯ на другой аккаунт. Через время появляются ошибки:

Регистратор: custom_components.yandex_smart_home.notifier
Источник: custom_components/yandex_smart_home/notifier.py:291
интеграция: Yandex Smart Home (документация, проблемы)
Первое сообщение: 17:03:05 (2 сообщений)
Последнее сообщение: 17:03:05

<Event state_changed[L]: entity_id=climate.konditsioner, old_state=<state climate.konditsioner=off; hvac_modes=[<HVACMode.COOL: 'cool'>, <HVACMode.HEAT: 'heat'>, <HVACMode.FAN_ONLY: 'fan_only'>, <HVACMode.DRY: 'dry'>, <HVACMode.AUTO: 'auto'>, <HVACMode.OFF: 'off'>], min_temp=16, max_temp=30, target_temp_step=1, fan_modes=['auto', 'low', 'medium', 'high'], current_temperature=None, temperature=16, fan_mode=low, friendly_name=Кондиционер, supported_features=393 @ 2024-11-05T17:03:02.816381+03:00>, new_state=<state climate.konditsioner=off; hvac_modes=[<HVACMode.COOL: 'cool'>, <HVACMode.HEAT: 'heat'>, <HVACMode.FAN_ONLY: 'fan_only'>, <HVACMode.DRY: 'dry'>, <HVACMode.AUTO: 'auto'>, <HVACMode.OFF: 'off'>], min_temp=16, max_temp=30, target_temp_step=1, fan_modes=['auto', 'low', 'medium', 'high'], current_temperature=None, temperature=16, current_humidity=35, fan_mode=low, friendly_name=Кондиционер, supported_features=393 @ 2024-11-05T17:03:02.816381+03:00>>
<Event state_changed[L]: entity_id=climate.konditsioner, old_state=<state climate.konditsioner=off; hvac_modes=[<HVACMode.COOL: 'cool'>, <HVACMode.HEAT: 'heat'>, <HVACMode.FAN_ONLY: 'fan_only'>, <HVACMode.DRY: 'dry'>, <HVACMode.AUTO: 'auto'>, <HVACMode.OFF: 'off'>], min_temp=16, max_temp=30, target_temp_step=1, fan_modes=['auto', 'low', 'medium', 'high'], current_temperature=None, temperature=16, current_humidity=35, fan_mode=low, friendly_name=Кондиционер, supported_features=393 @ 2024-11-05T17:03:02.816381+03:00>, new_state=<state climate.konditsioner=off; hvac_modes=[<HVACMode.COOL: 'cool'>, <HVACMode.HEAT: 'heat'>, <HVACMode.FAN_ONLY: 'fan_only'>, <HVACMode.DRY: 'dry'>, <HVACMode.AUTO: 'auto'>, <HVACMode.OFF: 'off'>], min_temp=16, max_temp=30, target_temp_step=1, fan_modes=['auto', 'low', 'medium', 'high'], current_temperature=26.2, temperature=16, current_humidity=35, fan_mode=low, friendly_name=Кондиционер, supported_features=393 @ 2024-11-05T17:03:02.816381+03:00>>

Регистратор: py.warnings
Источник: components/homeassistant/triggers/state.py:52
Первое сообщение: 17:03:05 (1 сообщений)
Последнее сообщение: 17:03:05

<frozen abc>:117: RuntimeWarning: coroutine 'YandexNotifier.async_event_handler' was never awaited

Регистратор: homeassistant
Источник: custom_components/yandex_smart_home2/notifier.py:288
интеграция: Yandex Smart Home (документация, проблемы)
Первое сообщение: 17:03:05 (2 сообщений)
Последнее сообщение: 17:03:05
Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/config/custom_components/yandex_smart_home2/notifier.py", line 288, in _state_change_listener
    await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
    fut = ensure_future(arg, loop=loop)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
    loop = events.get_event_loop()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_10'.

Регистратор: homeassistant
Источник: custom_components/yandex_smart_home/notifier.py:292
интеграция: Yandex Smart Home (документация, проблемы)
Первое сообщение: 17:03:05 (2 сообщений)
Последнее сообщение: 17:03:05

Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/config/custom_components/yandex_smart_home/notifier.py", line 292, in _state_change_listener
    await asyncio.gather(*[n.async_event_handler(event) for n in hass.data[DOMAIN][NOTIFIERS]])
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/tasks.py", line 831, in gather
    fut = ensure_future(arg, loop=loop)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/tasks.py", line 693, in ensure_future
    loop = events.get_event_loop()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/events.py", line 702, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'SyncWorker_10'.

Регистратор: py.warnings
Источник: components/mqtt/client.py:1259
Первое сообщение: 17:03:05 (1 сообщений)
Последнее сообщение: 17:03:05

/usr/local/lib/python3.12/site-packages/paho/mqtt/matcher.py:62: RuntimeWarning: coroutine 'YandexNotifier.async_event_handler' was never awaited def rec(node, i=0):

Автор "Yandex Smart Home (Yaha Cloud)" пишет, что спровоцирована интеграцией "YandexStation", потом она меняет статус entity в синхронном режиме, а не асинхронном.

AlexxIT commented 1 day ago

Поправлено в последней master версии