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.
У комплекті поставки йде база, трикутної форми, кабель 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 повідомленнями.
Звіт одержуваний від скрипта на пошту виглядає так:
Вітальня - зволожувач включений в: 8: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
Де купити?Де купити?