tion_home_assistant
tion_home_assistant copied to clipboard
V2 интеграция добавляется через UI, бризеры и модули в списке устройств
- Обновление констант как рекомендует свежая версия HA 2024.1
- Добавлены 2 сенсора: скорость вентилятора и состояние вентилятора(on/off). Состояние полезно для отображения истории(когда работал в течение суток), а скорость - для красивой индикации сегментов, как в мобильном приложении.
@airens Прими PR
Проверил у себя этот 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 добавил
@RealLord up
@airens может ты посмотришь? отрефакторил на V2 - теперь интеграция добавляется через UI, в списке устройств теперь есть бризеры(а не просто куча ничейных объектов) компонент airens/tion тоже расширил - теперь есть управление расписанием. Планирую в интеграцию завести устройства для управления расписанием в разных комнатах.
пока сильно не хатает сведений MAC, firmware и т.д., поэтому выглядит пусто в информации устройства...
У меня интеграция из коробки не добавляется через 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 я так и не дождался принятия 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 да, я тоже долго ждал, следил за пулреквестом)) Сам не обновляюсь с 2023.12. Но тут понадобилась интеграция на свежей версии HA на другом объекте, вот появился повод разобраться. Да, я попробую использовать Ваш пакет api, спасибо за наводку про переопределение зависимости! Карточку тоже гляну как будет время. Выглядит интересно - как в приложении. Как я понял, она чисто информативная, без управления, верно? Ладно, посмотрю - разберусь. Благодарю!