На дворе конец мая, отопление у всех уже отключили - не самое подходящее время, казалось бы, чтобы писать про увлажнитель. Но тем не менее.
С появлением ребёнка появление увлажнителя в квартире - вопрос времени. У меня этот вопрос совпал по времени с началом работы над моей домашней автоматизацией. Ещё не было почти ничего, но уже тогда покупка любой техники рассматривалась через призму управления и автоматизации. Логичным шагом стала покупка увлажнителя именно Xiaomi. Метания по обзорам и причины выбора модели остаются за скобками этой заметки. Итог: Xiaomi Smartmi Air Humidifier 2 с поддержкой Wi-Fi и Bluetooth-шлюзом (последний, впрочем, никак не пригодился при наличии полноценного сервера).
Подключение
После первых полевых испытаний встал вопрос интеграции в HomeAssistant. Для этого обнаружился уже готовый встроенный компонент fan, предназначенный в первую очередь для кондиционеров, но и для очистителей/увлажнителей годящийся.
Но для начала нам нужно найти токен устройства.
Для этого ставим приложение MiHome от vevs (только для Android), подключаем свой увлажнитель и находим токен в файле vevs/logs/devices.txt (с помощью менеджера файлов или подключив телефон к компьютеру как накопитель). Если в MiHome устройств несколько, то наш увлажнитель - zhimi.humidifer.8. Там же можно увидеть IP-адрес. Сохраняем адрес и токен в secrets.yaml:
humidifier_ip: 192.168.1.123
xiaomi_token: '12a3bc4d5678ef9g0h12i3jk4lm56n78'
Подключаем увлажнитель в configuration.yaml:
fan:
- platform: xiaomi_miio
host: !secret humidifier_ip
token: !secret xiaomi_token
Перезагружаем конфигурацию и увлажнитель в нашей системе:
Теперь, для красоты, можно его кастомизировать на свой вкус - поменять иконки, название, навесить темплейты.
Управление
Когда я только настраивал и подключал свой увлажнитель, никаких отдельных карточек для управления ими ещё не было, поэтому набор кнопок и датчиков представлял собой набор кнопок.
Но не так давно в HACS появился удобный плагин Mini-humidifier, который выводит всю информацию об устройстве и органы управления в одном месте без ручной сборки.
Находим в HACS это плагин, устанавливаем его и добавляем на панель:
Варианты настройки можно найти по ссылке выше в репозитории плагина. Лично меня карточка устроила и в таком виде, я себе оставил так, всё равно вручную параметры я меняю не так часто.
От старого набора элементов управления у меня не остались без дела датчики влажности и температуры, которые имеет этот увлажнитель, и переключатель "скоростей". Переключатель скоростей до сих пор используется в автоматизациях, а датчики - на главной панели.
Датчики в файле sensors.yaml:
hum_temp:
friendly_name: Температура в спальне
value_template: '{{ states.fan.xiaomi_miio_device.attributes.temperature }}'
unit_of_measurement: "°C"
hum_hum:
friendly_name: Влажность в спальне
value_template: '{{ states.fan.xiaomi_miio_device.attributes.humidity }}'
unit_of_measurement: "%"
Датчик уровня воды (уровень воды в увлажнителе меряется в какой-то непонятной глубине, которая не коррелирует с процентами, опытным путём установлено, что показатель глубины нужно делить на 1.2, чтобы получить примерный уровень в процентах), при этом в автоматизации заложено, что иконка будет меняться с полного стакана при уровне воды больше 40% на пустой стакан, если ниже. Датчик прописывается тоже в sensors.yaml:
hum_level:
friendly_name: Уровень воды
unit_of_measurement: "%"
value_template: '{{ (states.fan.xiaomi_miio_device.attributes.depth | float / 1.2) | round(1) }}'
icon_template: >
{% if states.fan.xiaomi_miio_device.attributes.depth > 40 %}
mdi:cup-water
{% else %}
mdi:cup-off
{% endif %}
Текущий режим увлажнителя с меняющейся иконкой (взял спидометр, поскольку он наиболее полно отражает суть датчика и имеет нужное количество положений), тоже задаётся в sensors.yaml:
hum_mode:
friendly_name: Режим увлажнителя
value_template: '{{ states.fan.xiaomi_miio_device.attributes.mode }}'
icon_template: >
{% if is_state('input_select.humiditing', 'Silent') %}
mdi:gauge-empty
{% elif is_state('input_select.humiditing', 'Auto') %}
mdi:gauge
{% elif is_state('input_select.humiditing', 'High') %}
mdi:gauge-full
{% else %}
mdi:cloud-question
{% endif %}
Автоматизация
Ну и самое интересное - автоматизация.
Обычный сценарий, наиболее часто встречающиеся в теме на 4PDA - включить увлажнитель, если влажность ниже 40% и выключить, если влажность выше 60%. Поскольку увлажнитель у меня испарительного типа, который в принципе не может сделать тропическую влажность, и за всю зиму показания влажности у меня лишь чуть-чуть превышали 50%, то вся эта автоматизация была мне ни к чему - увлажнитель просто молотил круглые сутки.
Зато мне актуально было заглушать гул увлажнителя на ночь, поскольку прибор стоит в спальне. И тут на помощь пришли простейшие автоматизации, построенные на времени:
- alias: Увлажнитель на максимум днём
trigger:
- platform: time
at: 08:00:00
action:
- service: fan.set_speed
data:
entity_id: fan.xiaomi_miio_device
speed: auto
- alias: Увлажнитель тихий режим ночью
trigger:
- platform: time
at: '20:00:00'
action:
- service: fan.set_speed
data:
entity_id: fan.xiaomi_miio_device
speed: silent