- kvazis,
- 3729
Broadlink RM plus - интегрируем в Domoticz, создаем базу IR и RF кодов
|
Свой сегодняшний обзор, я хочу посвятить замечательному гаджету от Broadlink — универсальному пульту дистанционного управления, способному считывать, сохранять и воспроизводить не только обычные, инфракрасные пульты, но и радио пульты, работающие на частоте 433 Mhz. Так же уделю внимание практическим аспектам интеграции в Domoticz и создании сценариев работы.
Так как модель Broadlink RM pro уже неоднократно обозревалась, я решил поработать с моделью Broadlink RM plus, которая стоила ровно столько же сколько и Broadlink RM pro.
На русской версии магазина — ru. значительно дешевле.
Как выяснилось несколько позже, уже когда я ждал заказ, 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 сети и устройство появляется в общем списке.Комбинации кнопок, в любом порядке и любых пультов можно объединять в сценарии и запускать одним нажатием. Для сценариев можно выбирать собственные фото.
Интеграция в 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 коментарі
Это он и есть. Просто с другой крышкой — ОЕМ версия, для последующего брендирования, без наклеек и надписей