tion_home_assistant icon indicating copy to clipboard operation
tion_home_assistant copied to clipboard

V2 интеграция добавляется через UI, бризеры и модули в списке устройств

Open karakum opened this issue 1 year ago • 7 comments

  1. Обновление констант как рекомендует свежая версия HA 2024.1
  2. Добавлены 2 сенсора: скорость вентилятора и состояние вентилятора(on/off). Состояние полезно для отображения истории(когда работал в течение суток), а скорость - для красивой индикации сегментов, как в мобильном приложении.

@airens Прими PR

karakum avatar Jan 17 '24 19:01 karakum

Проверил у себя этот pull request. В него надо добавить исправление из #37 по fan_mode as string, иначе на релизе НА 2024.01 выдает ошибку. sequence item 2: expected str instance, int found File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 526, in _valid_mode_or_raise modes_str: str = ", ".join(modes) if modes else "" Тогда все работает кроме управления воздухозабором, которого еще нет.

RealLord avatar Jan 19 '24 08:01 RealLord

@RealLord добавил

karakum avatar Jan 22 '24 13:01 karakum

@RealLord up

karakum avatar Feb 15 '24 00:02 karakum

@airens может ты посмотришь? отрефакторил на V2 - теперь интеграция добавляется через UI, в списке устройств теперь есть бризеры(а не просто куча ничейных объектов) компонент airens/tion тоже расширил - теперь есть управление расписанием. Планирую в интеграцию завести устройства для управления расписанием в разных комнатах.

изображение

изображение

пока сильно не хатает сведений MAC, firmware и т.д., поэтому выглядит пусто в информации устройства...

karakum avatar Feb 16 '24 21:02 karakum

У меня интеграция из коробки не добавляется через UI. При добавлении получаю:

2024-05-18 21:04:17.646 INFO (SyncWorker_6) [tion] Got new token
2024-05-18 21:04:18.673 INFO (MainThread) [homeassistant.setup] Setting up tion
2024-05-18 21:04:19.491 INFO (MainThread) [custom_components.tion] Api initialized with authorization Bearer 40********************
2024-05-18 21:04:19.494 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry v**@***.ru for tion
Traceback (most recent call last):
  File "/workspaces/core/homeassistant/config_entries.py", line 578, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/core/config/custom_components/tion/__init__.py", line 62, in async_setup_entry
    model=models.get(device.type, "Unknown device"),
                     ^^^^^^^^^^^
AttributeError: 'MagicAir' object has no attribute 'type'

Проверил на двух разных инстансах HA.

Хорошо было бы оставить добавления через конфиг. Мой старый конфиг был проигнорирован. Устройства пропали, пришлось добавлять в UI, но не вышло.

Я поменял проблемную строку на model="Unknown device"

Дальше устройства появились, сенсоры MagicAir работают, НО:

  • бризер - недоступное устройство в HA, сенсоры (скорость, Tin, Tout, Fan state) работают,
  • каждую минуту ошибка из-за атрибута type класса Breezer:
2024-05-18 21:30:02.302 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved:   File "/home/vscode/.local/bin/hass", line 8, in <module>
    sys.exit(main())
  File "/workspaces/core/homeassistant/__main__.py", line 208, in main
    exit_code = runner.run(runtime_conf)
  File "/workspaces/core/homeassistant/runner.py", line 188, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1979, in _run_once
    handle._run()
  File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/workspaces/core/homeassistant/helpers/entity_platform.py", line 664, in _async_handle_interval_callback
    self.config_entry.async_create_background_task(
  File "/workspaces/core/homeassistant/config_entries.py", line 1121, in async_create_background_task
    task = hass.async_create_background_task(target, name, eager_start)
  File "/workspaces/core/homeassistant/core.py", line 860, in async_create_background_task
    task = create_eager_task(target, name=name, loop=self.loop)
  File "/workspaces/core/homeassistant/util/async_.py", line 40, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
Traceback (most recent call last):
  File "/workspaces/core/homeassistant/helpers/entity_platform.py", line 1034, in _async_update_entity_states
    await entity.async_update_ha_state(True)
  File "/workspaces/core/homeassistant/helpers/entity.py", line 970, in async_update_ha_state
    self._async_write_ha_state()
  File "/workspaces/core/homeassistant/helpers/entity.py", line 1137, in _async_write_ha_state
    state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/core/homeassistant/helpers/entity.py", line 1074, in __async_calculate_state
    if state_attributes := self.state_attributes:
                           ^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/core/homeassistant/components/climate/__init__.py", line 324, in __getattribute__
    return super().__getattribute__(__name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/core/config/custom_components/tion/climate.py", line 286, in state_attributes
    data["gate"] = self.gate
                   ^^^^^^^^^
  File "/workspaces/core/homeassistant/components/climate/__init__.py", line 324, in __getattribute__
    return super().__getattribute__(__name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/core/config/custom_components/tion/climate.py", line 271, in gate
    if self._breezer.type == "breezer4":
       ^^^^^^^^^^^^^^^^^^
AttributeError: 'Breezer' object has no attribute 'type'

В climate.py закомментировал строки

if self._breezer.type == "breezer4":
       return "inside" if self._breezer.gate == 1 else ("outside" if self._breezer.gate == 0 else STATE_UNKNOWN)

Бризер заработал, буду тестить

А не видит от type из-за того, что в дочерних классах Breezer и MagicAir не вызван родительский конструктор, а в дочерних конструкторах type не добавляется. Как это работает у Вас: мне вот что интересно..

UPD: увидел, что Вы делали пулреквест на api пакет tion, теперь понятно откуда type;))

vaproloff avatar May 18 '24 21:05 vaproloff

@vaproloff я так и не дождался принятия RP...

предлагаю использовать мои ветки

Манифест кастомного компонента в ветке dev содержит переопределение зависимости(karakum/tion) "git+https://github.com/karakum/tion.git@master#tion==1.29" для корректной работы всей интеграции.

В дополнение есть еще карточка UI изображение

https://github.com/karakum/ha-tion-card/releases/tag/v1.0.0

karakum avatar May 20 '24 13:05 karakum

@karakum да, я тоже долго ждал, следил за пулреквестом)) Сам не обновляюсь с 2023.12. Но тут понадобилась интеграция на свежей версии HA на другом объекте, вот появился повод разобраться. Да, я попробую использовать Ваш пакет api, спасибо за наводку про переопределение зависимости! Карточку тоже гляну как будет время. Выглядит интересно - как в приложении. Как я понял, она чисто информативная, без управления, верно? Ладно, посмотрю - разберусь. Благодарю!

vaproloff avatar May 20 '24 22:05 vaproloff