tion_home_assistant
tion_home_assistant copied to clipboard
Атрибуты fan_mode/fan_modes должны быть строками
На данный момент компонент использует не совсем корректные типы данных в атрибутах fan_mode (float) и fan_modes (смесь из int/str).
Согласно коду Home Assistant в этих атрибутах должны быть исключительно строки: https://github.com/home-assistant/core/blob/b8613ec09d71a582d32d30d9c5e8f32955a21c39/homeassistant/components/climate/init.py#L215-L216
Из-за int/float страдают компоненты:
- Yandex Smart Home: неможет определить текущий режим работы вентилятора, потому что ожидает увидеть в fan_mode строку
- Google Assistant: fan_mode передаётся "как есть" в
currentFanSpeedSetting, который должен быть строкой: https://github.com/home-assistant/core/blob/d62bdbb9ffa035d5246f3d54619640f4e5616b4f/homeassistant/components/google_assistant/trait.py#L1473-L1475
Что вы предлагаете? Home assistant не знает про такое устройство, как бризер
Что вы предлагаете? Home assistant не знает про такое устройство, как бризер
Возвращать в fan_mode и fan_modes только строки. Грубо говоря:
--- climate.py.orig 2022-12-15 08:01:48
+++ climate.py 2022-12-06 11:45:57
@@ -104,9 +104,9 @@
return FAN_AUTO
elif not self._breezer.is_on:
return FAN_OFF
else:
- return self._breezer.speed
+ return str(int(self._breezer.speed))
@property
def fan_modes(self):
"""Return the list of available fan modes."""
@@ -115,9 +115,9 @@
_fan_modes.extend(range(0, int(self._breezer.speed_limit) + 1))
except Exception as e:
_fan_modes.extend(range(0, 7))
_LOGGER.info(f"breezer.speed_limit is \"{self._breezer.speed_limit}\", fan_modes set to 0-6")
- return _fan_modes
+ return [str(m) for m in _fan_modes]
def set_temperature(self, **kwargs):
"""Set new target temperature."""
if ATTR_TEMPERATURE in kwargs:
Пользуюсь интеграцией tion_home_assistant для управления бризерами из Алисы. Страдаю из-за того, что изменения скорости вентилятора из ХА не отображаются в Алисе (Умном доме Яндекса). Как раз из-за несовпадения передаваемых и ожидаемых типов.
С правками из комментария выше скорость вентилятора начинает обновляться. Но нет возможности использовать пресеты (возникает ошибка).
Обновил компонент, вроде все что хотел сделал. Описание: https://github.com/RealLord/tion_home_assistant У меня 5 бризеров дома, в кабинетах, в спальне, в гостинной. Все работает стабильно, на 3S/4S.
4 бризера работают по пресету:
два по SLEEP в спальнях в 21:00 два в кабинетах по пресету ACTIVITY в 08:00 Один по CO2 от Air Magic в гостиной по скрипту, который раз в минуту запускается, определяет СО2 и выставляет скорость вентилятора.