Broadlink RM plus - интегрируем в Domoticz, создаем базу IR и RF кодов

Kvazis House / / комментарии

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

Свой сегодняшний обзор, я хочу посвятить замечательному гаджету от Broadlink — универсальному пульту дистанционного управления, способному считывать, сохранять и воспроизводить не только обычные, инфракрасные пульты, но и радио пульты, работающие на частоте 433 Mhz. Так же уделю внимание практическим аспектам интеграции в Domoticz и создании сценариев работы.

Так как модель Broadlink RM pro уже неоднократно обозревалась, я решил поработать с моделью Broadlink RM plus, которая стоила ровно столько же сколько и Broadlink RM pro. 

Как выяснилось несколько позже, уже когда я ждал заказ, RM plus является OEM вариантом первой версии RM plus, отличия только в верхней крышке корпуса и отсутствии указаний на производителя на корпусе.

Обозреваемый гаджет куплен — здесь 

Комплект поставки

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

В комплекте поставки идет база, треугольной формы, кабель USB и micro USB и немного макулатуры.

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

Размеры

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

Толщина устройства — 3,6 см

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

На другой стороне — порт питания micro USB и окошко кнопки reset

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

Штатное ПО

Для подключения к 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

Создание базы кодов.

Самое время приступить к созданию базы кодов. Для этого я использую бесплатное приложение 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 пишет всю последовательность, код получается избыточно длинный. Но если вы обучаете например плавную регулировку яркости или звука — то можно и придержать кнопку секунду другую. 

 

После обучения сайт показывает считанный код, в виде команды и URL. Введя этот URL в адресную строку — можем сразу проверить корректность считанного кода. Код в hex который идет в кавычках после data в строке Plain Command — и есть искомый код.

 

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

Создание скриптов для 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 — вставляем свои. Скрипт с отправкой одного кода выглядит так:

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

После этого сохраняем Ctrl-X — Y наш файл и даем ему права

sudo chmod +x sendcode.py

sudo chmod 777 /home/pi/python-broadlink/sendcode.py

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

Ну и на десерт — сценарий управления влажностью. У меня их три одинаковых для разных комнат, только в двух сценарий управляет физической розеткой в которую включены увлажнителя — а в этом — виртуальным сценарием, в котором выключатель инициирует запуск кодов с базы 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.

Для тех кто незнаком с темой — 

Надеюсь обзор был полезен, если тема интересна, то буду продолжать.

Вы можете обсудить содержимое поста в нашем чате в телеграм

2 комментария

Taurussian
Спасибо, как всегда, познавательно. RF часть планируете задействовать, или просто для комплекта?
Я как раз присматриваюсь к выключателям Sonoff, а там есть модель с управлением как по WiFi, так и по RF.
kvazis
Да, у меня несколько выключателей на 433 Мгц, потому и брал модель plus