Пользовательские умения
Только для продвинутых пользователей!
Иногда возможностей компонента недостаточно и хочется добавить свои функции, переключатели и регулировки.
Это можно сделать через "пользовательские умения" для каждого устройства отдельно через entity_config.
Важно! Пользовательские умения являются приоритетными и перекрывают автоматически обнаруженные
Поддерживается несколько видов пользовательских умений:
- Режимы (
mode) - переключение режимов работы устройства (режим работы кондиционера, уборки, источника сигнала и т.п.). Настраиваются через словарьcustom_modes. - Переключатели (
toggle) - управление функциями, которые включаются и выключаются (пауза, вращение вентилятора, ионизация и т.п.). Настраиваются через словарьcustom_toggles. - Выбор из диапазона (
range) - управление параметрами устройства, которые имеют диапазон (яркость лампы, громкость звука, температура нагревателя). Настраиваются через словарьcustom_ranges.
В каждое умение входит ряд функций (например функция volume в умении range).
Для одного устройства может быть несколько функций в разных умениях (или в одном).
Дубликаты функций невозможны (т.е. volume может быть только одна для одного устройства).
Функции никак не привязаны к типу устройства, а это значит, что функция "громкость" может быть, например, у выключателя или увлажнителя. Это позволяет реализовывать безумный набор умений в одном устройстве.
Для всех умений есть общие и специфичные параметрами. Специфичные параметры смотрите в разделе посвящённому конкретному умению.
Общие параметры¶
state_entity_id: Объект в состоянии или атрибуте которого хранится текущее значение умения (громкость, яркость, режим и т.п.). По умолчанию тот, для которого настраивается пользовательское умение.state_attribute: Атрибут, в котором хранится текущее значение умения. Если не задан - значение берётся из состояния объекта.
Допускается одновременное использование state_entity_id и state_attribute. Если ни один из этих параметров не задан - текущее значение функции передаваться не будет.
Умения "Режимы работы" (custom_modes)¶
Выбирает режим работы устройства, при изменении которого будут выполняться произвольные сервисы. Смотрите список всех доступных функций.
Примеры: кофеварка, которая варит кофе скриптом script.makemeonecupofcoffee или моющий пылесос Xiaomi, в котором хочется управлять количеством подаваемой воды через сервис xiaomi_vacuum.set_water_level.
Для пользовательского режима автоматического связывание между значениями УДЯ и Home Assistant не производится. Вам нужно
вручную задать соответствия через modes!
Специфичные параметры:
-
set_mode: Вызываемый сервис при выборе режима в УДЯ. В переменнойmode- значение режима на стороне Home Assistant
Примеры¶
Моющий пылесос¶
Моющий пылесос Xiaomi (vacuum.xiaomi_mop), переключение set_water_level через функцию "Скорость работы"
configuration.yaml
yandex_smart_home:
entity_config:
vacuum.xiaomi_mop:
modes:
work_speed: # соответствие между режимами УДЯ и HA
eco: ['Low']
medium: ['Med']
max: ['High']
custom_modes:
work_speed:
state_attribute: water_level
set_mode:
service: xiaomi_vacuum.set_water_level
entity_id: vacuum.xiaomi_mop
data:
water_level: '{{ mode }}' # сюда подставятся Low/Med/High
Кофеварка¶
Кофеварка (climate.hotcoffee), которая умеет варить кофе скриптами, программа выбирается через функцию "Режим работы кофеварки"
configuration.yaml
Умения "Переключатели" (custom_toggles)¶
Управление функциями устройств, которые включаются и выключаются. Смотрите список всех доступных функций.
Специфичные параметры:
-
turn_onиturn_off: Вызываемые сервисы при включении/выключении функции в УДЯ
Примеры¶
Бризер¶
Управление функцией подогрева для бризера Xiaomi (fan.xiaomi_airfresh_va4) через функцию "Поддержание тепла"
configuration.yaml
Умения "Выбор значения из диапазона" (custom_ranges)¶
Управление параметрами устройства, которые имеют диапазон регулировки (громкость, яркость, температура). Смотрите список всех доступных функций.
Специфичные параметры:
-
set_value: Сервис вызываемый при установке абсолютного значения функции. В переменнойvalueабсолютное или относительное значение (в зависимости от настроекrangeи наличияincrease_valueиdecrease_value). Если не задан - установка абсолютного значения поддерживаться не будет. -
increase_valueиdecrease_value: Сервисы, вызываемые при относительной регулировке (кнопки+и-и "Алиса, убавь температуру"). Если не заданы - будет вызываться сервисset_value. -
range: Граничные значения диапазона. Дляhumidity,open,brightnessесть ограничение: минимум0, максимум100. Если не задатьminиmaxрегулировка будет только относительная (в переменнойvalue-1или-1).
Примеры¶
Бризер¶
Изменение параметра favorit_speed на бризере Xiaomi (fan.xiaomi_airfresh_a1)
configuration.yaml
yandex_smart_home:
entity_config:
fan.xiaomi_airfresh_a1:
custom_ranges:
volume: # как самое подходящее
state_attribute: favorit_speed
set_value:
service: xiaomi_miio_airpurifier.fan_set_favorite_speed
data:
speed: '{{ value }}'
# значения для примера
range:
min: 60
max: 300
precision: 20 # по вкусу
Выбор канала¶
Выбор канала на телевизоре через media_player.play_media, листание каналов через отдельные скрипты, номер текущего канала нигде не хранится.
configuration.yaml
yandex_smart_home:
entity_config:
media_player.stupid_tv:
custom_ranges:
channel:
set_value:
service: media_player.play_media
entity_id: media_player.stupid_tv
data:
media_content_type: channel
media_content_id: '{{ value }}'
increase_value:
# сервис отправит нажатие кнопки "канал вверх" по IR
service: script.next_channel_via_ir
decrease_value:
# сервис отправит нажатие кнопки "канал вниз" по IR
service: script.prev_channel_via_ir
range:
min: 0
max: 999