Broadlink RM plus — интегрируем в Domoticz, создаем базу IR и RF кодов
Здравствуйте друзья
Свой сегодняшний обзор, я хочу посвятить замечательному гаджету от Broadlink — универсальному пульту дистанционного управления, способному считывать, сохранять и воспроизводить не только обычные, инфракрасные пульты, но и радио пульты, работающие на частоте 433 Mhz. Так же уделю внимание практическим аспектам интеграции в Domoticz и создании сценариев работы.
Так как модель Broadlink RM pro уже неоднократно обозревалась, я решил поработать с моделью Broadlink RM plus, которая стоила ровно столько же сколько и Broadlink RM pro.
Как выяснилось несколько позже, уже когда я ждал заказ, RM plus является OEM вариантом первой версии RM plus, отличия только в верхней крышке корпуса и отсутствии указаний на производителя на корпусе.
Где купить?
RM Plus - GEARBEST ALIEXPRESS
RM Pro - Gearbest Banggood Aliexpress
Комплект поставки
Поставляется устройство в простой белой картонной коробке, что говорит о том, что данный тип продукта OEM.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/4acf4a6df3.jpg?w=877)
В комплекте поставки идет база, треугольной формы, кабель USB и micro USB и немного макулатуры.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/457f05674c.jpg?w=877)
Внешне база напоминает какой-то артефакт, выполнена из черного глянцевого пластика. Никаких упоминаний о производителе на корпусе нет.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/e39b072dc9.jpg?w=877)
Размеры
Форма корпуса представляет собой равносторонний треугольник. Длина стороны 11,5 см
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/d2ba9121e5.jpg?w=877)
Толщина устройства — 3,6 см
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/672de34cba.jpg?w=877)
На одной из торцевых сторон находятся два индикатора — слева синий — подлкючение к wi-fi, справа — желтый, активируется в момент ожидания или передачи сигнала.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/68a7cd4672.jpg?w=877)
На другой стороне — порт питания micro USB и окошко кнопки reset
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/5b01128508.jpg?w=877)
На нижней стороне — три прорезиненные ножки, вентиляционные отверстия и место для наклейки. Сама наклейка отсутствует.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/a0933e26b1.jpg?w=877)
Штатное ПО
Для подключения к Broadlink RM plus нам понадобится штатная программа E-Control. Она обнаруживает новое устройство, после чего нужно ввести пароль к wi-fi сети и устройство появляется в общем списке.
![]() | ![]() | ![]() |
Дальше мы можем добавлять пульты — выбрать можно среди классов устройств, либо добавить пульт вручную. Например кондиционер.
![]() | ![]() | ![]() |
Конечно имеется возможность ручного добавления кнопок. Внешний вид кнопок можно выбрать из шаблона, либо создать свои, после чего кнопки следует обучить командам реальных пультов. Для ИК пультов — достаточно нажать Обучение, направить пульт на RM plus и нажать на нужную кнопку. Для радиопультов нужно сначала нажать кнопку Сканировать, во время сканирования удерживать нужную кнопку на пульте, и после этого нажать Обучение — и вновь нажать на кнопку пульта.
Комбинации кнопок, в любом порядке и любых пультов можно объединять в сценарии и запускать одним нажатием. Для сценариев можно выбирать собственные фото.
![]() | ![]() | ![]() |
Интеграция в Domoticz
Для интеграции в Domoticz, нам нужны те же самые что и для удлинителя, про которые я рассказывал в обзоре Смарт удлинитель Broadlink MP1. Если вы уже проделывали эту операцию, то ничего дополнительно делать не надо. А если нет — то напоминаю список нужных пакетов
sudo apt-get install python2.7 -y
sudo apt-get install python-pip -y
sudo apt-get install python-dev libgmp-dev
sudo apt-get install git -y
git clone https://github.com/mjg59/python-broadlink
Подробнее в моем обзоре про удлинитель. Все действия аналогичны до момента определения IP адреса устройства. Напоминаю что IP шлюза должен быть статическим. Вот результат вывода поискового скрипта уже с двумя устройствами Broadlink
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/37358eb422.png?w=877)
Создание базы кодов.
Самое время приступить к созданию базы кодов. Для этого я использую бесплатное приложение RM Bridge. Серверная часть ставится на устройство под Android (не знаю есть ли такое под IOS), после чего переходим на сайт http://rm-bridge.fun2code.de/rm_manage/code_learning.html. Запускаем на смартфоне(планшете) серверную часть, вводим появившийся адрес в соответствующие поля и нажимаем Load Devices — после чего можно приступать к считыванию кодов.
Здесь последовательность такая же — для ИК кодов сразу нажимаемLearn Code, направляем пульт на RM plus и нажимаем нужную кнопку, для радио кодов — сначала Frequency Scan — и только потом Learn Code. При обучении не надо долго жать на кнопку — так как RM plus пишет всю последовательность, код получается избыточно длинный. Но если вы обучаете например плавную регулировку яркости или звука — то можно и придержать кнопку секунду другую.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/f930433e85.png?w=877)
После обучения сайт показывает считанный код, в виде команды и URL. Введя этот URL в адресную строку — можем сразу проверить корректность считанного кода. Код в hex который идет в кавычках после data в строке Plain Command — и есть искомый код.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/5cd2f8d259.png?w=877)
Я сделал текстовую базу с нужными мне кодами устройств, для использования их в сценариях.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/1c9cbdfe4b.jpg?w=877)
Создание скриптов для Domoticz
Считав и проверив в rm-bridge коды, можно приступать к написанию скриптов.
В консоли малинки создаем файл командой
sudo nano sendcode.py
Скрипт для передачи считанного кода, выглядит так :
#!/usr/bin/python
# -*- coding: utf-8 -*-
import broadlink
import time
import sys
device = broadlink.rm(host=("192.168.1.171",80),
mac=bytearray.fromhex("B4430DAA92A1"))
device.auth()
device.host
myhex = "*******код*********"
device.send_data(myhex.decode('hex'))
IP и mac — вставляем свои. Скрипт с отправкой одного кода выглядит так:
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/3010380773.jpg?w=877)
Можно одним скриптом передавать несколько кодов. Например вот скрипт запуска моего увлажнителя воздуха. Если просто включить — он работает в автоматическом режиме и сам решает когда ему отключится. Мне так не нужно. Поэтому после кода включения я транслирую код ручного поднятия влажности несколько раз, до недостижимого в реальности значения, завершается скрипт кодом включения режима ионизации.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/d07d219353.jpg?w=877)
После этого сохраняем Ctrl-X — Y наш файл и даем ему права
sudo chmod +x sendcode.py
sudo chmod 777 /home/pi/python-broadlink/sendcode.py
И можем добавлять скрипты в действия виртуальных выключателей Domoticz. В этом примере на включение увлажнителя стоит длинный скрипт с последовательностью кодов, а на выключение — короткий, с одним кодом выкл.
![](https://img.ixbt.site/live/images/original/00/32/07/2017/05/18/408d80be89.jpg?w=877)
Ну и на десерт — сценарий управления влажностью. У меня их три одинаковых для разных комнат, только в двух сценарий управляет физической розеткой в которую включены увлажнителя — а в этом — виртуальным сценарием, в котором выключатель инициирует запуск кодов с базы RM plus.
commandArray = {}
time = os.date('%X');
date = os.date('%d.%m.%Y');
EmailTo = «ВАША_ПОЧТА@gmail.com»
gghum = otherdevices_humidity['GG HT']
ggtemp = otherdevices_temperature['GG HT']
if devicechanged['GG HT'] and otherdevices_humidity['GG HT'] >= 55 and otherdevices ['Vitek'] == 'On' then
commandArray['Vitek'] = 'Off'
Message=' Гостиная — увлажнитель отключен в: '… time… ', '… date… ', влажность — '… gghum… '%, температура — '… string.sub(ggtemp, 1, 4)… ' C'
commandArray['SendEmail']='Domoticz Report#'… Message… '#'… EmailTo
elseif devicechanged['GG HT'] and otherdevices_humidity['GG HT'] <= 45 and otherdevices ['Vitek'] == 'Off' and otherdevices ['GG W1'] =='Closed' and time >= '08:00' and time <= '22:30' then
commandArray['Vitek'] = 'On'
Message=' Гостиная — увлажнитель включен в: '… time… ', '… date… ', влажность — '… gghum… '%, температура — '… string.sub(ggtemp, 1, 4)… ' C'
commandArray['SendEmail']='Domoticz Report#'… Message… '#'… EmailTo
elseif devicechanged['GG W1']=='Open' and otherdevices ['Vitek'] == 'On' then
commandArray['Vitek'] = 'Off'
Message=' Гостиная — открыто окно в: '… time… ', '… date… ', влажность — '… gghum… '%, температура — '… string.sub(ggtemp, 1, 4)… ' C, увлажнитель отключен'
commandArray['SendEmail']='Domoticz Report#'… Message… '#'… EmailTo
elseif devicechanged['GG W1']=='Open' and otherdevices ['Vitek'] == 'Off' then
Message=' Гостиная — открыто окно в: '… time… ', '… date… ', влажность — '… gghum… '%, температура — '… string.sub(ggtemp, 1, 4)… ' C'
commandArray['SendEmail']='Domoticz Report#'… Message… '#'… EmailTo
elseif devicechanged['GG W1']=='Closed' and otherdevices ['Vitek'] == 'Off' and otherdevices_humidity['GG HT'] <= 50 and time >= '08:00' and time <= '22:30' then
commandArray['Vitek'] = 'On'
Message=' Гостиная — окно закрыто в: '… time… ', '… date… ', влажность — '… gghum… '%, температура — '… string.sub(ggtemp, 1, 4)… ' C, увлажнитель включен'
commandArray['SendEmail']='Domoticz Report#'… Message… '#'… EmailTo
elseif devicechanged['GG W1']=='Closed' and time >= '22:31' and time <= '07:59' then
Message=' Гостиная — окно закрыто в: '… time… ', '… date… ', влажность — '… gghum… '%, температура — '… string.sub(ggtemp, 1, 4)… ' C'
commandArray['SendEmail']='Domoticz Report#'… Message… '#'… EmailTo
elseif devicechanged['GG W1']=='Closed' and otherdevices ['Vitek'] == 'Off' and otherdevices_humidity['GG HT'] >= 51 then
Message=' Гостиная — окно закрыто в: '… time… ', '… date… ', влажность — '… gghum… '%, температура — '… string.sub(ggtemp, 1, 4)… ' C'
commandArray['SendEmail']='Domoticz Report#'… Message… '#'… EmailTo
end
return commandArray
Разберем сценарий. В начале сценария мы присваиваем переменным время, дату, для отчетов я использую уведмоления по электронной почте — gmail, которая вкупе с включенными уведомлениями на этот почтовый ящик, работает практически как push уведомление, а так жне значения температуры и влажности получаемые с датчика температуры и влажности Xiaomi.
Первое условие — если влажность достигает 55% и статус выключателя увлажнителя — включено, тогда увлажнитель выключается и шлется отчет на почту.
Для настройки почты — нужно перейти на вкладку настроек, e-mail, там нужно указать smtp сервер и адреса исходящей и входящей почты. Так же в сценариях можно вручную указывать адрес куда слать уведомления.
Я не поленился и завел отдельный gmail адрес для получения отчетов Domoticz, добавил этот аккаунт к существующим в Андроид приложение Gmail и включил уведомления для этого ящика. Получилась вполне себе альтернатива push уведомлениям.
Отчет получаемый от скрипта на почту выглядит так :
Гостиная — увлажнитель включен в: 08:37:40, 18.05.2017, влажность — 43%, температура — 22 C
Второе условие — включение увлажнителя при достижении влажности 45 % и менее %, при условии что закрыто окно и время находится в промежутке с 8 утра до 22.30 вечера
Третье и четвертое условие — открытие окна, если увлажнитель включен — он выключается, в обоих случаях шлется отчет.
Пятое условие — закрытие окна, влажность менее 50%, время с 8 утра до 22.30 вечера, увлажнитель выключен — включаем.
Шестое и седьмое условие — закрытие окна в ночное время или при влажности более 51% — просто шлем отчет.
Видеоверсия
Вывод
Несмотря на всю мою любовь к Xiaomi, должен признать что этот продукт гораздо более удачный. Он более универсальный так как может считывать и IR и RF коды, он работает с Domoticz (шлюз от Xiaomi — нет). Достаточно один раз поиграться с обучением и у вас будет база всех кодов ваших пультов, которые легко тиражировать - если вам нужно несколько таких баз. Если не нужны радиопульты — то можно попробовать это решение реализовать на ИК базе Broadlink Universal WIFI которая стоит в два разе дешевле аналогичной по функциональности «шайбы» Xiaomi.
Для тех кто незнаком с темой —
Надеюсь обзор был полезен, если тема интересна, то буду продолжать.
Таблица (обновляется) по экосистеме Xiaomi
4 комментария
Добавить комментарий
Я как раз присматриваюсь к выключателям Sonoff, а там есть модель с управлением как по WiFi, так и по RF.
Имхо с нативной настройкой без скриптов удобнее.
Добавить комментарий