8000 Предложение: изменить работу метода set_hvac_mode · Issue #56 · TionAPI/HA-tion · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Предложение: изменить работу метода set_hvac_mode #56

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
dmdmvl opened this issue Sep 22, 2021 · 5 comments
Labels
enhancement New feature or request Home Assistant Issues related to interaction with HA work in progress
Milestone

Comments

@dmdmvl
Copy link
dmdmvl commented Sep 22, 2021

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

  • версия Home Assistant: core-2021.9.6
  • способ установки Home Assistant:
    [ ] venv
    [ ] Docker
    [x] Home Assistant OS
  • версия компонента: 1.8.2
  • модель бризера: Lite
  • версия python-модуля: 1.3.3

Дополнительное описание

Возможно я что-то не совсем понял в работе компонента, прошу подсказать, если нижеописанную проблему можно решить другим образом.

Я хочу создать скрипт или сцену задающие конкретный режим работы бризера (скорость плюс режим), но вызов сервиса смены режима бризера может привести к выбору режима не совпадающего с заданным. Например, если сейчас бризер включен в режиме подогрева, то попытка переключить его повторно в режим подогрева на самом деле выключит подогрев.
Скажем при повторных вызовах такого сервиса:

service: climate.set_hvac_mode
target:
  device_id: 1d7bb8c5cfc352edc0a1b44856423b75
data:
  hvac_mode: heat

На самом деле будут переключаться режимы между heat и fan_only.

Это, как я понял, связано с участком кода в climate.py:

    async def async_set_hvac_mode(self, hvac_mode):
        """Set hvac mode."""
        _LOGGER.info("Need to set mode to %s, current mode is %s", hvac_mode, self.hvac_mode)
        if hvac_mode == self.hvac_mode:
            # user pressed current mode at UI card. What should we do?
            if hvac_mode == HVAC_MODE_HEAT:
                hvac_mode = HVAC_MODE_FAN_ONLY

В чем неудобство такого поведения:

  • это не очевидно, вызов включение режима приводит к неожиданному результату
  • не работают сцены, т.к. они запоминают состояние бризера при создании сцены, но при включении сцены результат зависит от текущего состояния бризера
  • нельзя создать скрипт который принудительно включит на бризере определенный режим

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

Что предлагается в качестве решения:

Вариант 1: заменить код метода в climate.py на:

    async def async_set_hvac_mode(self, hvac_mode):
        """Set hvac mode."""
        _LOGGER.info("Need to set mode to %s, current mode is %s", hvac_mode, self.hvac_mode)
        if hvac_mode == self.hvac_mode:
           return

Просто не отправляем текущий статус повторно

Вариант 2. Если вариант 1 не подходит, то добавить в настройках компонента переключатель, который будет определять поведение компонента при смене режима, для тех кому может потребоваться такая возможность. Не хочется при каждом обновлении компонента руками править код.

Вариант 3. Видимо самый сложный способ - добавить настройку пресетов

@IATkachenko IATkachenko added the enhancement New feature or request label Sep 22, 2021
@IATkachenko
Copy link
Contributor

Если в "логичном режиме" в карточке в UI кликнуть на значок обогрева, то включается обогрев. А если кликнуть еще раз -- ничего не происходит (с режимом вентиляции -- аналогично).
Поэтому сделано так, что при повторном вызове активированного режима происходит переключение режима. И при клике на значок обогрева (или вентиляции, в зависимости от того какой режим сейчас активен) на карточке бризер переключается в другой режим.

Как сделать автоматизацию: проверять что устройство в выключенном состоянии.

Текущая логика, действительно, отличается от того что принято в HA, но мне это показалось более удобным чем поведение по умолчанию. Не имею ничего против чтобы привести логику работы в соответствие с логикой HA (тем более что через карточку я сам уже бризером не управляю: на все сделаны автоматизации от уличной погоды, уровня CO2 и наличия людей дома).
Сделаю в ближайшее время.

ps. Если кому-нибудь еще хочется увидеть такое обновление -- подпишитесь на это issue, чтобы я понимал что есть запрос и лучше не особо затягивать ;)

8000

@IATkachenko IATkachenko added Home Assistant Issues related to interaction with HA work in progress labels Sep 22, 2021
@dmdmvl
Copy link
Author
dmdmvl commented Sep 22, 2021

Согласен, в UI текущая реализация может быть удобнее, но вот сцены с таким режимом сделать я не смог, кажется там никак нельзя проверить текущее состояние, сцена запоминается, а потом применяется, иногда не корректно. Аналогично скрипты. Чтобы сохранить это удобство в UI - можно реализовать вариант 2, настройку в опциях компонента, тогда каждый сможет выбрать нужный ему способ работы.

@IATkachenko
Copy link
Contributor

Немного занят в других делах и руки никак не доходят все сделать. Но я помню про эту проблему.
Это изменение будет breaking changes, со всеми вытекающими, и вместе с ним хочется сделать все то, что давно планировалось, но откладывалось, потому что "breaking changes сейчас делать как-то не хочется".

@IATkachenko IATkachenko added this to the v2.0.0 milestone Oct 20, 2021
@makp0
Copy link
makp0 commented Oct 21, 2021

подтверждаю, что этот неочевидный функционал в паре с TionAPI/tion_python#27
создают проблемы с включением обогрева

@IATkachenko
Copy link
Contributor

Исправлено в v2.0.0

v2.0.0 доступна (пока как pre-release, в HACS можно получить включив beta releases в настройках репозитория).
Погоняю у себя какое-то время и после этого уберу флаг "pre".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Home Assistant Issues related to interaction with HA work in progress
Projects
None yet
Development

No branches or pull requests

3 participants
0