Найти в Дзене
HASSStas: Рецепты HomeAssistant

ИК-пульт Broadlink RM2 Pro: управляем неумной техникой.

В процессе раздумывания над управлением светом заказал на распродаже с Aliexpress универсальный пульт для домашней техники. В результате просмотра обзоров и отзывов выбор пал на треугольник Broadlink RM2 Pro - относительно недорогой "все в одном". Поскольку изначально думал менять выключатели с обычных кнопочных на управляемые по радиоканалу, то и пульт взял "с запасом" - ИК и RF. Работает пульт просто - нужно разместить треугольник со всенаправленными излучателями в удобном месте, откуда открывается прямой обзор до всех устройств, которыми планируется управлять, затем пульт обучается с родных пультов и готово - можно через фирменное приложение или из HomeAssistant управлять всей техникой в пределах прямой видимости. Можно так же привязать пульт к голосовым ассистентам и управлять голосом. С помощью этого пульта я управляю люстрой Navigator (дневной/ночной свет, регулировка яркости) и своим "медиакомплексом", состоящим из телевизора без смарт-функций, саундбаром и медиаприставкой на An
Оглавление

В процессе раздумывания над управлением светом заказал на распродаже с Aliexpress универсальный пульт для домашней техники. В результате просмотра обзоров и отзывов выбор пал на треугольник Broadlink RM2 Pro - относительно недорогой "все в одном". Поскольку изначально думал менять выключатели с обычных кнопочных на управляемые по радиоканалу, то и пульт взял "с запасом" - ИК и RF.

Broadlink RM2 Pro
Broadlink RM2 Pro

Работает пульт просто - нужно разместить треугольник со всенаправленными излучателями в удобном месте, откуда открывается прямой обзор до всех устройств, которыми планируется управлять, затем пульт обучается с родных пультов и готово - можно через фирменное приложение или из HomeAssistant управлять всей техникой в пределах прямой видимости. Можно так же привязать пульт к голосовым ассистентам и управлять голосом.

С помощью этого пульта я управляю люстрой Navigator (дневной/ночной свет, регулировка яркости) и своим "медиакомплексом", состоящим из телевизора без смарт-функций, саундбаром и медиаприставкой на Android.

Подключение к HomeAssistant

Интеграция Broadlink поставляется в HomeAssistant "из коробки" - не надо искать его в магазине HACS или устанавливать откуда-то ещё, достаточно добавить в файле secrets.yaml IP-адрес и MAC своего устройства (я посмотрел их в настройках роутера, в списке подключенных устройств):

broadlink_ip: 192.168.1.XXX
broadlink_mac: 'XX:XX:XX:XX:XX:XX'

И прописать configuration.yaml секцию remote:

remote:
- platform: broadlink
  host: !secret broadlink_ip
  mac: !secret broadlink_mac

После перезапуска HomeAssistant пульт управления готов к работе, но пока ещё ничего не умеет. Надо его обучить. Переходим в Панель разработчика, на вкладку Службы и находим службу remote.learn_command, указываем наш новый объект remote.broadlink и в окне Данные службы в формате yaml добавляем параметры device и command:

-2

Где device и command - это название устройства и название команды для этого устройства, которые нужны для удобного вызова команд в дальнейшем, называете на свой вкус. Например для потолочной люстры (device: Light) я обучил команды Daylight, Nightmode, Lighter и Darker.

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

Теперь эти команды выучены и ими можно пользоваться. Проверяем: очищаем службу, находим remote.send_command и вводим наши параметры:

num_repeats - сколько раз выполнить команду.
num_repeats - сколько раз выполнить команду.

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

Когда все команды настроены, можно использовать их для управления и автоматизации.

Управление из HomeAssistant

Когда все команды обучены, можно их повесить на кнопки: переходим на главную страницу или другую заранее созданную панель управления и нажимаем в правом верхнем углу кнопку с тремя точками, выбираем "Настройка интерфейса" - переходим в режим редактирования.

В этом режиме нам доступна кнопка с плюсом - добавить новый элемент на панель. Начиная с версии HomeAssistant 0.108 все встроенные компоненты сразу отображаются в виде превью. Находим элемент "Кнопка" и настраиваем, например, кнопку "Дневной свет":

  • Объект: remote.broadlink
  • Название: Дневной свет
  • Значок: mdi:white-balance-sunny (справочник значков мы заранее настроили, теперь достаточно легко подобрать нужный)
  • При нажатии: call-service (будем вызывать службу)
  • Служба: remote.send_command
-4

Теперь для нашей службы надо прописать дополнительные параметры: device и command. В графическом режиме это недоступно, поэтому переключаемся в режим Текстового редактора и под записью service: remote.send_command прописываем параметры:

service_data:
    entity_id: remote.broadlink
    device: Light
    command: Daylight

Внимательно следим за отступами, иначе будут предупреждения об ошибках и кнопка работать не будет:

-5

Сразу можно проверить работу кнопки нажав на превью справа.

С помощью элемента "Горизонтальный массив" можно выстроить в ряд несколько кнопок:

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

Если планируется использовать кнопку в нескольких местах на панелях, то, чтобы каждый раз не набирать параметры службы, можно заранее записать один скрипт, а потом вызывать его. Переходим в Настройки - Сценарии и добавляем новый сценарий для вызова службы с теми же параметрами, с которыми мы кнопку делали:

Создание скрипта в редакторе
Создание скрипта в редакторе

(Обратите внимание на кнопку Добавить действие - в скрипте можно перечислить несколько действий, которые выполнятся последовательно, например сценарий для просмотра фильмов: выключить люстру, включить торшер, включить подсветку телевизора, переключить телевизор в нужный режим.)

Сохраняем скрипт и проверяем правильность всех настроек: Настройки - Сервер - Начать проверку конфигурации, если обошлось без ошибок - перезагружаем сценарии.

Теперь создание кнопки обойдётся без доработок в текстовом режиме, достаточно просто создать кнопку и выбрать нужный скрипт в качестве объекта:

Выбор объекта
Выбор объекта

Остётся только назначить нужную иконку и, при необходимости, поменять название:

Готовая кнопка, запускающая скрипт
Готовая кнопка, запускающая скрипт

Недостатком создания скрипта через интерфейс является непонятное название скрипта: script.1588429222216. Но можно поменять это через Конфигуратор (я предпочитаю написать сразу такой скрипт в текстовом редакторе как мне надо):

-10

На скриншоте два одинаковых скрипта, один из которых будет выглядеть как script.1588429222216, а второй как script.lamp_plus, так гораздо удобнее.

Настройка автоматизации

Автоматизация - это выполнение разных действий (в том числе скриптов) автоматически при достижении заданных условий. Примеры: включить свет при движении (нужен датчик движения) или поменять цветовую температуру в зависимости от времени суток. У меня настроен сценарий приглушить свет, когда запускается фильм или сериал, для чего должен быть подключен и настроен медиаплеер в HomeAssistant. Несмотря на то, что медиаплеер мы ещё не подключали, скрипт автоматизации, я думаю, будет понятен и так.

Во-первых, создаём скрипт для приглушения света. В моей лампочке есть режим "ночной свет", но использовать его для автоматизации нельзя, потому что он не только уменьшает яркость до минимума, но и при повторном нажатии меняет цветовую температуру, чего нам не нужно. Поэтому я использую скрипт нажатия кнопки уменьшения яркости с параметром "повторять 10 раз":

ceiling_cinema:
  sequence:
  - service: remote.send_command
    data:
      entity_id: remote.broadlink
      device: Ceiling
      command: Darker
      num_repeats: 10

Теперь нужно настроить автоматизацию вызова этого скрипта при запуске медиаплеера в файле automations.conf (опять же в текстовом режиме, поскольку создание через интерфейс редко получается сделать как надо, особенно когда начнутся сложные автоматизации):

- alias: Время для фильма
  trigger:
  - platform: state
    entity_id: media_player.kodi
    to: 'playing'
  condition:
  - condition: state
    entity_id: sun.sun
    state: 'below_horizon'
  action:
  - service: script.ceiling_cinema

Здесь:

  • alias - понятное название автоматизации
  • trigger - условие, которое должно сработать, в нашем случае состояние элемента media_player.kodi должно поменяться с любого на "проигрывает"
  • condition - дополнительные условия, которые должны быть соблюдены для запуска автоматизации, в нашем случае элемент sun.sun (базовый элемент HomeAssistant, указывающий на положение солнца) должен поменять своё состояние на "ушло за горизонт"
  • action - то, что должно выполниться при соблюдении всех условий, в нашем случае должен выполниться скрипт, который мы создали ранее script.ceiling_cinema

Сохраняем автоматизацию, проверяем на ошибки в Настройки - Сервер - Начать проверку и перезагружаем автоматизации, если всё хорошо.

Всё, автоматизация создана и при соблюдении всех условий она должна выполниться. Но можно запустить автоматизацию вручную и проверить независимо от условий: переходим в Настройки - Автоматизация, находим нашу автоматизацию и нажимаем "Запуск". Там же можно, при необходимости, выключить автоматизацию, и тогда она не будет выполняться даже при выполнении всех условий.

Дальше можно обучить пульт на все свои устройства и задавать различные сценарии.

Заключение

У меня, кроме управления светом, настроено ещё управление медиасистемой: регулировка громкости, управление приставкой, переключение аудиовхода для проигрывания музыки через саундбар.

Единственное, что мне не пригодилось в моём Broadlink - это управление по радиоканалу. Чем глубже погружался тему управления светом, тем яснее становилось, что радиовыключатели - это совсем не то, что мне нужно, поскольку они не имеют обратной связи (не отдают своё состояние в систему много дома) и полноценного управления ими организовать не получится. В итоге все выключатели я выбрал на Wi-Fi и функция радиоуправления оказалась попросту ненужной. Исходя из этого, сейчас я бы взял ИК-пульт попроще и подешевле.