Wi-Fi-пульт для IR- и RF-кодов Broadlink RM4C Pro: управляем кондиционером, работа в Home Assistant

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com
| Обзор | Комфортный дом и бытовая техника

Здравствуйте друзья

В этом обзоре я вернусь к уже неоднократно затрагиваемой мной тематике — управлением устройствами, которые изначально не поддерживают прямую интеграцию в умный дом. А посредником между ними и умным домом — будет служить универсальный пульт дистанционного управления, способный заменить собой любые инфракрасные и радио пульты. 

Также мы рассмотрим пример добавления в Home Assistant не поддерживаемого штатно устройства из интеграции Broadlink. Будет много примеров, а в конце видео приведен рабочий кейс по управлению кондиционером из Home Assistant.

Где купить?

Aliexpress — цена на момент публикации $31.90

Локально в Украине — INSTOR — цена на момент публикации 795 грн + Промокод на скидку 10% для покупки этого пульта (его надо сообщить менеджеру при покупке: KvazisRM4C

Параметры

  • Модель — Broadlink BestCon RM4C Pro
  • Беспроводный интерфейс — wi-fi 2.4 Ghz
  • Частота для ИК диапазона — 38 kHz
  • Частота для RF диапазона — 315 и 433 MHz
  • Дальность работы ИК — до 8 метров
  • Дальность работы RF — до 50 метров
  • Питание — micro USB
  • Потребляемая мощность — около 1 Ватта
  • Условия работы — влажность до 85%, температура 0 — 50 С
  • Размер — 45,7 х 50,1 мм

Поставка

В данном случае пульт был доставлен из локального украинского магазина, ссылку вы найдете в описании, так как стоимость была более чем конкурентна с Aliexpress. На белой коробке изображено устройство и указан бренд — BestCon

На задней стороне перечислены краткие технические параметры и есть еще одно важное упоминание — о работе с BroadLink, собственно поэтому я и вынес это слово в заглавие обзора. По сути это и есть BroadLink.

В коробке, кроме собственно универсального пульта, нашелся кабель питания USB — micro USB и пара инструкций, одна от производителя, другая от BroadLink. Блок питания в комплекте не идет, этот момент нужно учитывать.

Внешний вид

Устройство имеет вид небольшой бочки, однако в отличии от, так сказать, родных моделей BroadLink — дизайн тут немного сложнее и интереснее. Верхняя часть выполнена из темного, прозрачного для инфракрасных лучей, материала.

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

В нижней части по кругу сделана перфорация, хотя устройство совершенно не греется. В центре находится что-то вроде замка — защелки, хотя никаких креплений в комплекте нет.

Для включения устройства — нужно при помощи комплектного кабеля подключить его к любому подходящему источнику питания — зарядке от телефона, удлинителю с USB, зарядной станции и т.п.

Индикатором активности служит светодиод, на противоположной от порта питания стороне. В режиме сопряжения он светит синим, в режиме обучения и отправки команд — желтым.

Broadlink

Приложение Intellectual Home Centre, которое у меня стояло ранее, отправило меня устанавливать обновленное приложение Broadlink. Еще раньше, помнится, использовалось приложение e-control. Ну да ладно. Переходим к добавлению нового устройства.

По умолчанию устройство находится в режиме точки доступа — его светодиод мигает не очень часто небольшими сериями. Для переключения в режим умной настройки, нужно удерживать нажатой кнопку возле разъема питания, пока светодиод не начнет мигать часто. Я подключил в режиме по умолчанию, для этого нужно найти новую сеть Broadlink wifi device.

Действительно нашлась такая, без пароля. Подключаемся к ней, а при сообщении — что сеть не имеет подключения к Интернет — указываем, все равно использовать ее. Согласно указаниям мастера подключения, нужно временно отключить и мобильный доступ к сети.

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

И в конце — необходимо указать комнату в которой будет находится пульт, а также можно изменить его название. Эти установки можно поменять в любой момент.

Теперь устройство добавлено в систему. Пока тут нет ни одного пульта, совсем скоро мы начнем разбираться с тем, как их сюда добавлять.

А пока зайдем в настройки — тут есть один очень важный переключатель, который отвечает за видимость устройства в локальной сети. Для интеграции в Home Assistant — его обязательно нужно отключить. Также стоит проверить версию прошивки.

Добавление пультов

Перейдем к добавлению пультов для управления устройствами. Выбираем соответствующий пункт меню, далее — ИК и РФ устройства и, наконец выбираем героя обзора.

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

Мой телевизор Xiaomi Mi4 — хотя и комплектуется как раз bluetooth пультом с микрофоном, но при этом прекрасно управляется по ИК каналу. Первая же предложенная схема заработала — телевизор включался, корректно регулировал громкость. Нажимаем внизу на кнопку — работает хорошо и пульт добавляется в систему.

Остается указать локацию для устройства и название — теперь у нас есть один пульт и одна новая строка в общем списке.

Теперь перейдем к кондиционерам. Тут тоже есть предупреждение — что в этой категории можно подключать пульты с экраном на котором отображается полная информация о состоянии, которые отправляют одной командой сразу все настройки — температуру, режим, скорость вентилятора и т.п. Для других — есть отдельная категория. Мой кондиционер попадает под Full State. Далее выбираем производителя и тестируем предложенные схемы. 

Проверяем реакцию кондиционера на экранные кнопки — у меня он завелся на первой же схеме, подтверждаем выбор аналогично как мы это делали с телевизором. Теперь в списке уже два устройства, которые изначально не предполагались для управления умным домом.

Добавим обучаемый пульт, для устройства которое не находится в предложенных категориях или производителях. Изначально добавляется просто пустой пульт, в который необходимо будет добавить кнопки.

Далее предлагается выбрать тип пульта и его интерфейс — ИК или радио. Для начала обучим командам с ИК пульта. Тут все довольно просто, включаем режим обучения, направляем пульт-донор в сторону нашего героя и нажимаем, не удерживая, нужную кнопку. После этого можно проверить корректность отправки считанной команды.

Если устройство корректно отработало полученную с универсального пульта команду, подтверждаем это и затем выбираем подходящую иконку и названию для новой кнопки. Для всех последующих команд на этот пульт — его тип уже указывать не надо. Таким образом обучаем всем необходимым командам, которые сможем теперь повторять. 

Теперь разберемся с радиопультами. Создаем новый обучаемый пульт и в меню выбора интерфейса указываем радио. Далее запускаем режим обучения и тут у нас есть две опции — исходный пульт есть в наличии или нет. 

Если выбрать что пульта в наличии нет, то далее нужно будет подобрать вручную, либо найти в инструкции, на какой частоте работает управляемое устройство и попробовать спарить с ним универсальный пульт. Насколько я понимаю — он будет перебирать пока устройство не отреагирует на него.

Все проще когда у вас все-же пульт есть. Тогда не надо угадывать частоту его работы, а запустить — ссылка внизу под кнопкой, режим сканирования частоты. При этом надо нажать и удерживать любую из кнопок  пульта — донора, пока герой обзора не определит и покажет его частоту.

Далее все аналогично ИК командам. Указываем найденную частоту, уже без удержания — коротким нажатием обучаем команде, тестируем реакцию устройства, выбираем имя и иконку.

Автоматизации 

В базовом приложении есть и автоматизации. Других устройств этой экосистемы у меня сюда не добавлено, поэтому смогу поэкспериментировать только с этим пультом. Логика тут привычная — есть триггер — то что вызывает сработку автоматизации, действие — то что автоматизация делает, и при необходимости — условие, это дополнительные параметры при соответствии которым автоматизация будет работать.

Вот вариант включения охлаждения кондиционера по заданному времени — в 6 часов вечера в будние дни. Например чтобы возвращаясь домой с работы — воздух уже был прохладным.

И нечто подобное — включение телевизора, вместо него может быть например музыкальный центр, по утрам, что-то вроде будильника который сложно проигнорировать.

Google Home

Так как на коробке была указана совместимость с Google Assistant — я решил проверить и это. Взаимодействие построено стандартно — на уровне подключения аккаунта, который перебрасывает в Дом те устройства, которые могут с ним взаимодействовать. В этой случае — пульт телевизора и кондиционера. Добавленные и обученные вручную — не пробросились.

Ручное управление тут очень лаконичное — только включить и выключить, как для телевизора, так и для кондиционера, который будет активироваться в последнем настроенном режиме. А вот голосом — можно попросить Ассистента убавить пару градусов, добавить звук или переключить канал.

Home Assistant

Теперь перейдем к работе устройства в Home Assistant. Для этого нам понадобится выяснить его IP адрес и очень желательно закрепить его, чтобы  при очередной перезагрузке роутера или его обновлении — он не поменялся.

Через меню настройки — интеграции, ищем ту, что называется Broadlink, она штатная, отдельно добавлять не нужно.

В следующем окне — необходимо ввести IP адрес подключаемого устройства, поэтому я и сказал о необходимости его закрепления на роутере.

По состоянию на дату этого видео, интеграция Broadlink не поддерживает RM4C Pro. В следующем разделе мы добавим эту поддержку вручную, если у вас устройство добавилось нормально, то эту процедуру вы можете смело пропустить.

Для того чтобы начать что-то делать, нужно сначала выяснить все подробности — в журнале Home Assistant видим запись, что устройство 0х6184 — не поддерживается интеграцией Broadlink.

Не буду утомлять вас историей своих поисков и экспериментов, скажу лишь что необходимые запросы на добавление уже открыты. А мы перейдем к практической части — как сделать так, неподдерживаемая модель заработала в Home Assistant

Добавляем поддержку

Сразу опишу готовый рецепт — нам необходимо зайти по SSH на консоль сервера c Home Assistant, тут показана версия с Raspbian и Supervised установкой. И забраться в внутренности контейнера home assistant. Все команды и примеры вы найдете по по этой ссылке.

Внутри контейнера нам нужно перейти в папку с файлами штатной интеграции broadlink

Вывод списка файлов — не обязателен для решения нашей задачи, просто для иллюстрации. Нам нужен файл init

Открываем его при помощи редактора для настоящих Unix админов — vi. С каждой минутой работы в нем — вы будете чувствовать как у вас отрастает борода и свитер.

Вся задача сводится к добавлению еще одной строки в перечень поддерживаемого оборудования. Так как все остальное для героя обзора — стандартно.

Для перехода в режим редактирования надо нажать клавишу i. После этого из приложенного мной текстового файла — копируем строку устройства 0х6184  и вставляем ее в этот файл при помощи правой клавиши мыши. Проверяем корректность, выравниваем.

Для выхода из режима редактирования нажимаем Esc, а для сохранения изменений — двоеточие и w.

Для выхода из редактора — двоеточие, q и восклицательный знак. Вот так настоящие админы редактируют свои конфиги.

Для выхода из контейнера — набираем команду exit. После этого нужно перезагрузить Home Assistant. Есть один момент — после каждого обновления Home Assistant, эту процедуру придется обновлять до тех пор, пока не будет добавлена штатная поддержка.

Подключение

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

Интеграция предложила сложно читаемое имя написанное иероглифами. Меняем, по своему усмотрению, на более осмысленное и понятное.

Запись для устройства добавлена, при необходимости можем указать для него помещение.

Добавленный гаджет относится к домену remote, когда для Broadlink использовались свои специфические службы, теперь они стандартизированы.

Обучение командам

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

Для обучения используется специальная служба remote learn. 

Далее указываем какое устройство будет обучаться команде.

Следующие настройки задают описание обучаемой команде — имя устройство, указываем как хотим, например tv

И название команды — например power. Сохраняем, перегружаем и запускаем скрипт

На универсальном пульте на 30 секунд загорается желтый светодиод, в меню уведомлений приходит сообщение о том, что нужно нажать указанную клавишу на пульте — доноре. После нажатия — светодиод гаснет, команда сохранена.

Давайте выясним где она физически хранится. Для доступа к ней при помощи штатного редактора File Editor, нам, через меню Supervisor нужно зайти в его конфигурацию, и найти папку storage в списке игнорируемых.

Убираем ее, сохраняем, после чего аддон перезагружается.

Теперь в папке config у нас отображается ранее скрытая папка storage в которой ищем файл который называется на broadlink remote. 

В нем и видим информацию о устройстве, команде и сохраненный код в виде набора символов. Этим набором, кстати можно делится с другими владельцами пультов broadlink — как отправлять команды в виде сырого кода, я покажу далее.

Аналогично добавляем и другие клавиши — например повышение уровня громкости. Новый код добавится к этому устройству. Обратите внимание, что ИК коды имеют одинаковый набор символов в начале команды.

Теперь добавим код с радиопульта. Основной синтаксис тут такой же, служба remote learn, указываем название устройства, команды, но в конце добавляем ее тип — rf

Тут обучение происходит в два этапа — сначала сканирование, на broadlink загорается желтый диод, на пульте доноре нажимаем и удерживаем кнопку. В течении секунд 30 — база определяет частоту, диод гаснет — отпускаем кнопку.

Диод загорается снова, на пульте теперь коротко нажимаем и отпускаем кнопку, команде с которой хотим обучить .

В файле появляется новое устройство и команда. Обратите внимание что ее код кардинально отличается от ИК команд. Именно символы в начале и позволяют понять базе — как отправлять этот код, по ИК или радиоканалу.

Конечно если нужно обучить нескольким командам с одного пульта — удобнее сделать это за один раз. В таком случае в скрипте просто перечисляем названия тех команды которые мы хотим сохранить.

Далее, просто следуем за подсказками в уведомлениях, нажимая поочередно все команды из перечня.

Вот все команды сохранены в той очередности в которой мы указали в скрипте. При повторном обучении — старая команда заменяется новой.

Отправка команд

Логика отправки команд подобна обучению. Для этого используется сервис remote send и указываем с какого устройства слать. 

Далее — указываем устройство и название команды, пишем тоже что и при обучении. Данные берутся с уже рассмотренного нами файла.

Если команду нужно повторить несколько раз, например актуально для громкости, указываем число повторов в параметре repeat.

Можно и просто задать список команд… Это удобно для кейсов, где нужно повторять одну и ту же последовательность, которую можно забить например на одну кнопку.

Как я упоминал вначале — команды можно отправлять с сыром виде, копируя код, указанный в кавычках, в файле storage. В начале такой команды нужно указать префикс b64. 

Для такого формата работает и последовательность команд. Еще раз уточню, что выучить команду вы можете на одном пульте broadlink — причем даже другой модели, а воспроизвести на другом. Это позволяет даже передавать свои команды другим пользователям аналогичных устройств.

Удаление команд

Если вы по какой-то причине захотите удалить сохраненную команду, вручную это сделать не удастся, она все равно появится в файле, да и можно случайно прихватить лишнее. Лучше использовать специальный сервис — remote delete, 

и пульт — чтобы система знала в каком файле ее искать

Далее, как и при обучении и отправке, указываем из какого устройства и какую команду удалять.

Кондиционер

В качестве практики приведу кейс управления кондиционером. В моем случае, при нажатии любой кнопки — пульт передает сразу все параметры — температуру, скорость, режим и так далее. Поэтому, я заранее настроил нужный мне режим работы и теперь мне нужно выучить всего два кода, причем с одной кнопки on off. В одном случае на устройство передаются полностью все настройки работы, во втором — команда на выключение. 

Создаю скрипт для обучения, в котором перечисляю команды — охлаждение и выключение для устройства кондиционер.

Обучаю пульт и проверяю что в файле появились две строки — одна команда для включения режима охлаждения с заданными параметрами, вторая — для выключения.

Создам для удобства отдельный пакадж, его вы тоже найдете в приложенном файле, тут создам раздел switch, буду использовать платформу шаблонов

Для получения обратной связи от кондиционера я буду использовать счетчик потребления питания, если мощность более 10 ватт — значит он включен. Как вариант — можно использовать установленный на закрылках геркон.

При включении этого свича, будет срабатывать сервис отправки команды кондиционеру  на охлаждение.

Соответственно при выключении — команда которая отключает кондиционер. Все довольно просто.

При желании, это необязательно, можно украсить свич иконкой, которая будет менять свой вид, в зависимости от его статуса.

Имея свич, который управляет кондиционером — можно сделать и сущность climate 

Это термостат, который будет поддерживать заданную температуру в комнате и управлять кондиционером.

Указываем созданный нами шаблонный свич

Сенсор температуры, на показания которого будет ориентироваться созданная нами сущность, затем целевую температуру — которую он будет поддерживать, максимальную и минимальную температуры для ползунка

А в этом разделе устанавливаем значение true — тогда термостат, по умолчанию настроенный на нагрев, будет заниматься охлаждением. Указываем значения температурного коридора — в примере полградуса вверх и вниз от целевой температуры.

Режим инициализации — охлаждение. Можно поставит выключено, как нужно для вашего кейса.

А так будет выглядеть эта сущность при визуализации стандартной картой lovelace — термостат. Полностью в автоматическом режиме она будет включать кондиционер при достижении верхней границы температурного коридора, и выключать при достижении нижней.

Обычно подобные кейса имеют обвес из дополнительных автоматизаций — которые, например будут отключать термостат и кондиционер в ночное время, при открытии окон, при обнаружении людей и так далее. Но это уже тема для отдельного обзора.

Видеоверсия обзора

Вывод

На этом все, сегодня у меня получился наполовину обзор, наполовину — очередной урок по работе с Home Assistant. Показанные примеры — актуальны для всех моделей ИК РФ контролеров Broadlink, ссылку на текстовый файл вы найдете в описании. 

Досвидания, до новых встреч.

Другое
Автор не входит в состав редакции iXBT.com (подробнее »)
Об авторе

0 комментариев

Добавить комментарий