Для некоторых устройств в УДЯ предусмотрено управление режимами. Типичные примеры - охлаждение/нагрев/осушение для кондиционера, или низкая/средняя скорость вращения для вентилятора.
Список режимов в УДЯ фиксированный,
поэтому их необходимо связывать со значениями атрибутов в Home Assistant. Для большинства устройств этот процесс (маппинг)
происходит автоматически, но в некоторых случаях это требуется сделать вручную через параметр modes
в entity_config
.
Со стороны УДЯ нет жесткой привязки значений режимов к типам устройств. Другими словами, у режима "Скорость вентиляции"
(fan_speed
) значения могут быть не только "низкое", "высокое", но и совсем от другого типа устройств, например "дичь" или "эспрессо".
Если маппинг не удался - управление функцией через УДЯ будет недоступно.
Пример конфигурации:
yandex_smart_home:
entity_config:
light.led_strip:
modes:
scene:
sunrise:
- Wake up
alarm:
- Blink
climate.some_ac:
modes:
fan_speed:
auto: [auto]
min: ['1','1.0']
turbo: ['5','5.0']
max: ['6','6.0']
swing:
auto: ['SWING']
stationary: ['OFF']
scene
,fan_speed
,swing
- режим/функция со стороны УДЯauto
,stationary
,alarm
- значение режима со стороны УДЯ (все возможные значения)- Списки значений (
Wake Up
,Swing
и т.п.) - значения атрибута сущности в Home Assistant, которое соответствует значению режима в УДЯ. Задавать лучше строками в кавычках.
Ниже детальная информация по поддерживаемым режимам и их значениям.
Установка температурного режима работы климатической техники, например, в кондиционере.
- Поддерживаемые домены:
climate
- Рекомендуемые значения режимов:
heat
,cool
,auto
,dry
,fan_only
- Атрибут в Home Assistant:
hvac_modes
Установка направления воздуха в климатической технике.
- Поддерживаемые домены:
climate
- Рекомендуемые значение режимов:
vertical
,horizontal
,stationary
,auto
- Атрибут в Home Assistant:
swing_modes
Установка какой-либо программы работы.
- Поддерживаемые домены:
humidifier
,fan
- Рекомендуемые значения режимов:
normal
,eco
,min
,turbo
,medium
,max
,quiet
,auto
,high
- Атрибут в Home Assistant:
humidifier
:available_modes
fan
:preset_modes
(если поддерживается установка скорости в процентах)
Установка режима работы скорости вентиляции, например, в кондиционере, вентиляторе или обогревателе.
- Поддерживаемые домены:
fan
,climate
- Рекомендуемые значения режимов:
auto
,quiet
,low
,medium
,high
,turbo
- Атрибут в Home Assistant:
fan
:preset_modes
(если не поддерживается установка скорости в процентах, сервисfan.set_speed_percentage
)fan
:speed_list
(сли не поддерживается установка скорости в процентах и режимы, устарело)climate
:fan_modes
Некоторые вентиляторы позволяют устанавливать скорость вентиляции в процентах, используя сервис fan.set_speed_percentage
. Для таких вентиляторов компонент автоматически соотнесёт режим в УДЯ и скорость в процентах для режима "Скорость вентиляции".
Автоматическое соотношение можно переопределить путём указания числа с процентами в качестве режима со стороны HA в конфигурации устройства. Пример:
yandex_smart_home:
entity_config:
fan.xiaomi:
modes:
fan_speed:
low: ['10%'] # округляйте до целого
normal: ['50%']
Рекомендуемые значения режимов: eco
, quiet
, low
, medium
, normal
, high
, turbo
Установка режима уборки.
- Поддерживаемые домены:
vacuum
- Рекомендуемые значения режимов:
auto
,turbo
,min
,max
,express
,normal
,quiet
- Атрибут в Home Assistant:
fan_speed_list
Установка источника сигнала.
- Поддерживаемые домены:
media_player
- Рекомендуемые значения режимов:
one
,two
,three
,four
,five
,six
,seven
,eight
,nine
,ten
- Атрибут в Home Assistant:
source_list
Изменение режима работы светящихся элементов устройства в соответствии с предустановленными темами и сценариями освещения.
- Поддерживаемые домены:
light
- Значения режимов:
alarm
,alice
,candle
,dinner
,fantasy
,garland
,jungle
,movie
,neon
,night
,ocean
,party
,reading
,rest
,romance
,siren
,sunrise
,sunset
(список фиксированный, другими значениями не расширяется) - Атрибут в Home Assistant:
effect_list
Только для продвинутых пользователей!
Иногда возможностей компонента недостаточно и хочется добавить свои функции, переключатели и регулировки.
Это можно сделать через "пользовательские умения" для каждого устройства отдельно через entity_config
.
Важно! Пользовательские умения являются приоритетными и перекрывают встроенные в компонент.
Поддерживается несколько вида пользовательских умений:
- Режимы (
mode
) - переключение режимов работы устройства (режим работы кондиционера, уборки, источника сигнала и т.п.). Настраиваются через словарьcustom_modes
. - Переключатели (
toggle
) - управление функциями, которые включаются и выключаются (пауза, вращение вентилятора, ионизация и т.п.). Настраиваются через словарьcustom_toggles
. - Выбор из диапазона (
range
) - управление параметрами устройства, которые имеют диапазон (яркость лампы, громкость звука, температура нагревателя). Настраиваются через словарьcustom_ranges
.
В каждое умение входит ряд функций (например функция volume
в умении range
). Для одного устройства может быть несколько функций в разных умениях (или в одном). Дубликаты фукнций невозможны (т.е. volume
может быть только одна для одного устройства).
Функции никак не привязаны к типу устройства, а это значит, что функция "громкость" может быть, например, у выключателя или увлажнителя. Это позволяет реализовывать безумный набор умений в одном устройстве.
Для всех умений есть общие и специфичные параметрами. Специфичные параметры смотрите в разделе посвящённому конкретному умению.
Общие параметры:
state_entity_id
: Сущность в состоянии или атрибуте которой хранится текущее значение умения (громкость, яркость, режим и т.п.). По умолчанию та, для которой настраивается пользовательское умение.state_attribute
: Атрибут, в котором хранится текущее значение умения. Если не задан - значение берётся из состояния.
Допускается одновременное использование state_entity_id
и state_attribute
. Если ни один из этих параметров не задан - текущее значение функции передаваться не будет.
Выбирает режим работы устройства, при изменении которого будут выполняться произвольные сервисы. Смотрите список всех доступных функций.
Примеры: коферка, которая варит кофе скриптом script.makemeonecupofcoffee
или моющий ылесос Xiaomi, в котором хочется управлять количеством подаваемой воды через сервис xiaomi_vacuum.set_water_level
.
Для пользовательского режима автоматического связывание между значениями УДЯ и Home Assistant не производится. Вам нужно
вручную задать соответствия через modes
!
Специфичные параметры:
set_mode
: Вызываемый сервис при выборе режима в УДЯ. В переменнойmode
- значение режима на стороне Home Assistant. Пример:set_mode: service: xiaomi_vacuum.set_water_level entity_id: vacuum.xiaomi_mop data: water_level: '{{ mode }}'
-
Моющий пылесос Xiaomi (
vacuum.xiaomi_mop
).Атрибуты:
water_level: High water_level_list: - Low - Med - High
Конфигурация компонента:
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
)Конфигурация компонента:
yandex_smart_home: entity_config: climate.hotcoffee: type: devices.types.cooking.coffee_maker modes: coffee_mode: cappuccino: [cappuccino] latte: [latte] custom_modes: coffee_mode: set_mode: service: script.make_me_{{ mode }}_coffee # вызовется script.make_me_latte_coffee
Управление функциями устройств, которые включаются и выключаются. Смотрите список всех доступных функций.
Специфичные параметры:
turn_on
иturn_off
: Вызываемые сервисы при включении/выключении функции в УДЯ. Пример:turn_on: service: xiaomi_miio_airpurifier.fan_set_ptc_on entity_id: fan.xiaomi_airfresh_va4 turn_off: service: xiaomi_miio_airpurifier.fan_set_ptc_off entity_id: fan.xiaomi_airfresh_va4
-
Управление функцией подогрева для бризера Xiaomi (
fan.xiaomi_airfresh_va4
)Атрибуты:
model: zhimi.airfresh.va4 ptc: false # а может быть true (on/off тоже подходит)
Конфигурация компонента:
yandex_smart_home: entity_config: fan.xiaomi_airfresh_va4: custom_toggles: keep_warm: state_attribute: ptc turn_on: service: xiaomi_miio_airpurifier.fan_set_ptc_on entity_id: fan.xiaomi_airfresh_va4 turn_off: service: xiaomi_miio_airpurifier.fan_set_ptc_off entity_id: fan.xiaomi_airfresh_va4
Управление параметрами устройства, которые имеют диапазон регулировки (громкость, яркость, температура). Смотрите список всех доступных функций.
Специфичные параметры:
set_value
: Сервис вызываемый при установке абсолютного значения функции. В переменнойvalue
абсолютное или относительное значение (в зависимости от настроекrange
и наличияincrease_value
иdecrease_value
). Если не задан - установка абсолютного значения поддерживаться не будет. Пример:set_value: service: xiaomi_miio_airpurifier.fan_set_favorite_speed entity_id: fan.xiaomi_airfresh_a1 data: speed: '{{ value }}'
increase_value
иdecrease_value
: Сервисы, вызываемые при относительной регулировке (кнопки+
и-
и "Алиса, убавь температуру"). Если не заданы - будет вызываться сервисset_value
.range
: Граничные значения диапазона. Дляhumidity
,open
,brightness
есть ограничение: минимум0
, максимум100
. Если не задатьmin
иmax
регулировка будет только относительная (в переменнойvalue
-1
или-1
). Пример:range: # диапазон от -100 до 100 min: -100 max: 100 # шаг изменения при нажатии на плюс или минус в интерфейсе, необязательное, по умолчанию - 1 precision: 2
-
Изменение параметра
favorit_speed
на бризере Xiaomi (fan.xiaomi_airfresh_a1
)Атрибуты:
model: dmaker.airfresh.a1 favorite_speed: 80
Конфигурация компонента:
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
, листание каналов через отдельные скрипты, номер текущего канала нигде не хранится.Конфигурация компонента:
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