Модуль "RM-Brige manage"

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm
Благодарил (а): 43 раза
Поблагодарили: 7 раз

Re: Модуль "RM-Brige manage"

Сообщение chip » Вс апр 10, 2016 3:59 pm

А не пробовали реализовать поддержку шаблонов из облака?
Особенно интересно как это реализовано при работе с кондиционером, так как пульт от оного посылает каждый раз набор команд с полными параметрами (темп, режим, обогрев, и т.д.). И в итоге если сохранить команду на включение при температуре (к примеру) 20 градусов, то нажав на "вкл. поворота шторки" он отправляет команду с которой эта кнопка поворота была сохранена (допусти 25).

А при работе из eremote - всё правильно обрабатывается на основании тех значений температур и режимов, которые были установлены ранее.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль "RM-Brige manage"

Сообщение nick7zmail » Вс апр 10, 2016 5:11 pm

chip писал(а):А не пробовали реализовать поддержку шаблонов из облака?
Особенно интересно как это реализовано при работе с кондиционером, так как пульт от оного посылает каждый раз набор команд с полными параметрами (темп, режим, обогрев, и т.д.). И в итоге если сохранить команду на включение при температуре (к примеру) 20 градусов, то нажав на "вкл. поворота шторки" он отправляет команду с которой эта кнопка поворота была сохранена (допусти 25).

А при работе из eremote - всё правильно обрабатывается на основании тех значений температур и режимов, которые были установлены ранее.
Хм...не знал...т.к. нет кондиционера - не на чем тестить)...На счет облака - по-моему оно привязано к бродлинковскому приложению, и врят ли даст доступ "первому встречному")) Это нужно в бридж встраивать...и то врят ли в sdk есть команды на запрос содержания облака... Подумаю что ещё можно сделать.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
jjevgen
Сообщения: 3
Зарегистрирован: Чт мар 17, 2016 2:07 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Модуль "RM-Brige manage"

Сообщение jjevgen » Чт апр 14, 2016 1:34 am

День добрый! Не работает

Код: Выделить всё

getURL('ссылка из строки URL',0); 
Подскажите пожалуйста, в чем может быть проблема?
А в поле выбора устройства для записи кода, в модуле RM BroadLink, не определяется устройство для выбора. Хотя на http://rm-bridge.fun2code.de/rm_manage/ ... rning.html все работает.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль "RM-Brige manage"

Сообщение nick7zmail » Чт апр 14, 2016 6:24 am

jjevgen писал(а):День добрый! Не работает

Код: Выделить всё

getURL('ссылка из строки URL',0);
Подскажите пожалуйста, в чем может быть проблема?
А в поле выбора устройства для записи кода, в модуле RM BroadLink, не определяется устройство для выбора. Хотя на http://rm-bridge.fun2code.de/rm_manage/ ... rning.html все работает.
Попробуйте с http://rm-bridge.fun2code.de/ Скачать офлайн версию, и проверьте. Возможно проблемы с правами (если линукс) или с фаерволом/брандмауэром виндовскими.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
madkeeper
Сообщения: 6
Зарегистрирован: Ср июн 08, 2016 7:44 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Модуль "RM-Brige manage"

Сообщение madkeeper » Ср июн 08, 2016 11:07 pm

Всем привет!
А как можно получать данные с Broadlink?
К примеру: отправляя в браузере http://192.168.0.104:8080/temperature?d ... d:c7:35:08
Получаю: {"temperature":-7.0,"timestamp":"1465416179570","deviceMac":"b4:43:0d:c7:35:08","status":"ok","uri":"/temperature","temperature_f":19.400002}
А вот как эти полученные данные прикрутить к MD не знаю(
Если надо, могу выложить почти все запросы возможные.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль "RM-Brige manage"

Сообщение nick7zmail » Чт июн 09, 2016 5:29 am

Погуглите обработка ответов ajax

Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
madkeeper
Сообщения: 6
Зарегистрирован: Ср июн 08, 2016 7:44 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Модуль "RM-Brige manage"

Сообщение madkeeper » Чт июн 09, 2016 4:34 pm

В общем разобрался я. Создаем объект, свойство и веб-переменную, в переменной шаблон поиска "temperature":(\d+.\d+) Теперь имею полное управление broadlink и будущих составляющих умного дома через него совместно с MJD. Если кому интересно- спрашивайте. На данный момент имею только сам droadlink и розетку sp cc. прикрутил температуру на шаблон для планшета. Далее буду в шаблон вставлять пульты IR. Ну и голосовое управление также.
СпойлерПоказать
12.jpg
12.jpg (242.96 КБ) 8195 просмотров
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль "RM-Brige manage"

Сообщение nick7zmail » Пт июн 10, 2016 10:47 am

madkeeper писал(а):Всем привет!
А как можно получать данные с Broadlink?
К примеру: отправляя в браузере http://192.168.0.104:8080/temperature?d ... d:c7:35:08
Получаю: {"temperature":-7.0,"timestamp":"1465416179570","deviceMac":"b4:43:0d:c7:35:08","status":"ok","uri":"/temperature","temperature_f":19.400002}
А вот как эти полученные данные прикрутить к MD не знаю(
Если надо, могу выложить почти все запросы возможные.
Прошу прощения, ввел в заблуждение. Строка не ajax а json...
С вэб-переменными конечно тоже вариант, но правильней было бы создать метод, к примеру

Код: Выделить всё

$content=getURL('http://192.168.0.104:8080/temperature?deviceMac=b4:43:0d:c7:35:08', 0);
$data=json_decode($content);
foreach ($data as $key => $value) {
    setGlobal('Объект.temp', $value->temperature);
}
И в Объект.temp должна появляьтся температура из параметра с именем "temperature". Foreach по-идее можно опустить, если это не массив строк, а одна строка. Тогда достаточно просто  setGlobal('Объект.temp', $data->temperature); (вроде как то так).

Кстати говоря - не знал что из бриджа можно температуру вытащить. В документации по API такого нет. Вы где эт нашли? Возможно закину в модуль, как время будет.
За это сообщение автора nick7zmail поблагодарил:
madkeeper (Сб июн 11, 2016 8:23 am)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
madkeeper
Сообщения: 6
Зарегистрирован: Ср июн 08, 2016 7:44 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Модуль "RM-Brige manage"

Сообщение madkeeper » Пт июн 10, 2016 1:36 pm

СпойлерПоказать
RM Plugin API Server [Alpha]
Version: 1.1.7 (45)

This is a Json API server acting as a HTTP Bridge to enable access to your Broadlink devices via simple HTTP commands or URLs.

This release is pretty much in Alpha state, many things might break or does not work properly. But I hope you like the progress so far.
Do send your bug reports, feature requests, feedbacks, cheers, etc. to torin@originally.us.
Recommended setup:
This was designed to work with only Broadlink devices in the same WiFi network. 3G Bridge will not be used.
This Web/API server always runs as a service in background, and it will drain your battery quickly. It is not recommended to use on your daily mobile phone. It was intended to run on Android boxes or other Android devices permanently connected to a power source at home.



Web Console
This is a big feature in the making. This will let you control all your devices, manage codes & learn new code via a web browswer.
Take a look at this awesome work-in-progress demo so far.
DEMO HERE



API Syntax
SEND A CODE
http://192.168.0.103:9876/send
This API let you send a code via a given Broadlink device.
Works with either GET or POST request.

Parameters:
deviceMac : The hardware MAC address of your Broadlink devices. You can use /devices API below to obtain this, or obtain it from RM Plugin app - under Device List. Acceptable MAC formats are (case insensitive):

b4:43:0d:c7:35:08
b4430dc73508
codeId : The ID of the code to be sent. You can use /codes API below to obtain this, or obtain it from RM Plugin app - under Code List.
To control on/off devices such as SP2 or SPMini, use one of the following parameters:
on=true/false
off=true/false
codeId=0/1
repeat : (optional) Number of times to send the code. Values 0 or 1 will not repeat the code. Value 2 means send the code 2 times.
Examples:
http://192.168.0.103:9876/send?deviceMa ... codeId=123
http://192.168.0.103:9876/send?deviceMa ... codeId=123
http://192.168.0.103:9876/send?deviceMa ... 3&repeat=3
http://192.168.0.103:9876/send?deviceMa ... dd&on=true
http://192.168.0.103:9876/send?deviceMa ... d&on=false

Response:

{msg: "Code Fan • Mist successfully sent", status: "ok", codeId: "19", deviceMac: "b4:43:0d:10:56:3a"}
LEARN A CODE
http://192.168.0.103:9876/study?deviceM ... d:c7:35:08
Executing this command will put RM device into 'study mode' for at most 30 seconds.
Orange LED on RM device will lit up until a IR/RF code is detected. Use /get_code API to retrieve the learnt code.
Works with either GET or POST request.

RETRIEVE STUDIED CODE
http://192.168.0.103:9876/get_code?devi ... 08&name=My new code
Retrieve the code that has just been learned in 'study mode' by previous API and save it as a new code.
Works with either GET or POST request.

Parameters:
deviceMac : The hardware MAC address of your Broadlink RM device.
name : Save the studied code with this name.

DEVICES LIST
http://192.168.0.103:9876/devices
Show the list of your configured Broadlink devices.
Works with either GET or POST request.

Response:
{"mac":"b4:43:0d:c7:35:08","typecode":10026,"type":"RM2+","lanaddr":"192.168.0.101:80","name":"eRemote"}
CODES LIST
http://192.168.0.103:9876/codes
Show the list of your codes.
Works with either GET or POST request.

Response:

[]
FIND A DEVICE
http://192.168.0.103:9876/devices?devic ... d:c7:35:08
Find a device with the given MAC address.
Works with either GET or POST request.

FIND A CODE
http://192.168.0.103:9876/codes?codeName=tv
Find a code with the given name.
Works with either GET or POST request.

GET TEMPERATURE (ON RM)
http://192.168.0.103:9876/temperature?d ... d:c7:35:08
Retrieve current temperature reading on a RM device (RM2, RM Home, RM Pro).
Works with either GET or POST request.

Response:

{"status":"ok","temperature":"30.8","timestamp":"1455356271220","deviceMac":"b4:43:0d:10:56:3a"}
GET ON/OFF STATUS
http://192.168.0.103:9876/status?device ... d:b0:ca:dd
Retrieve current on/off status on a SP device (SP2 or SPMini).
Works with either GET or POST request.

Response:

{"on_off_status":1,"status":"ok","timestamp":"1455356271220","deviceMac":"b4:43:0d:10:56:3a"}
GET NIGHT LIGHT ON/OFF STATUS (CONTROS ONLY)
http://192.168.0.103:9876/contros_statu ... d:b0:ca:dd
Retrieve current on/off status of the night light on a Contros device (SP-CC).
Works with either GET or POST request.

Response:

{"led_status":0,"on_off_status":1,"status":"ok","timestamp":"1455356271220","deviceMac":"b4:43:0d:10:56:3a"}
GET ENERGY READING (SP2 ONLY)
http://192.168.0.103:9876/current_power ... d:b0:ca:dd
Retrieve current energy reading on a SP2 device.
Works with either GET or POST request.

Response:

{"status":"ok","timestamp":"1455357197117","current_power":0.823000,"deviceMac":"b4:43:0d:11:35:1e"}
DELETE A DEVICE
http://192.168.0.103:9876/delete?device ... d:c7:35:08
Delete a device from device list.
Note that deleted device will be automatically detect again if it is within LAN network.
Works with either GET or POST request.

DELETE A CODE
http://192.168.0.103:9876/delete?codeId=123
Delete a code from code list.
Works with either GET or POST request.

(RE)START WEB SERVER FROM TASKER
If you want to use Tasker to manage or re-start this web service in case it crashes or stopped, use the following parameters:
Category: Default
Package: us.originally.tasker
Class: us.originally.tasker.service.WebServerService
Target: Service
Leave the other parameters empty.



TODO
These features are currently planned to be released in future updates:

Proper support for Contros device (SPMini-CC)
Read sensor data from A1 device
More API endpoints
TBC: Pretty web-based interface to manage devices & codes
Drop me an email to torin@originally.us to let me know what do you want to see in future updates.


Proudly brought to you by the cool folks at Originally US.
Я пользуюсь RM Plugin.
Копаясь в просторах Connekt я нашел полное решение причем на все датчики и устройства, пользователь: Ultron.
Вот что он выложил у себя в меню обьект:
BroadLinkHTTPBridge
СпойлерПоказать
Свойства класса:

Port
IP
Объекты класса:

HTTPBridge_Main
BroadLinkDevice
СпойлерПоказать
Свойства класса:
HTTPBridge
alive
updated
updatedTime
aliveTimeOut
deviceMAC

RM2
Свойства класса:

HTTPBridge
alive
updated
updatedTime
aliveTimeOut
deviceMAC
Методы класса:

sendCode
if(!isset($params['name'])) {return;}
$name = $params['name'];

$bridge = $this->getProperty('HTTPBridge');
if(!isset($bridge)) {return;}

$ip = gg($bridge.'.IP');
$port = gg($bridge.'.Port');
$mac = $this->getProperty('deviceMAC');

$ctx = stream_context_create(array(
'http' => array('timeout'=>2)
)
);

$response = file_get_contents('http://'.$ip.':'.$port.'/?devMAC='.$mac.'&action=send&name='.$name, 0, $ctx);
requestTemperature
$bridge = $this->getProperty('HTTPBridge');
if(!isset($bridge)) {return;}

$ip = gg($bridge.'.IP');
$port = gg($bridge.'.Port');
$mac = $this->getProperty('deviceMAC');

$ctx = stream_context_create(array(
'http' => array('timeout'=>2)
)
);

$response = file_get_contents('http://'.$ip.':'.$port.'/?devMAC='.$mac, 0, $ctx);
if(isset($response) && $response!='') {
$this->setProperty('temperature', (float)$response);
}
tempChanged
$this->setProperty("updated",time());
$this->setProperty("updatedTime",date("H:i",time()));
$this->setProperty("alive",1);

$ot = $this->object_title;
$alive_timeout = (int)$this->getProperty("aliveTimeOut");
if (!$alive_timeout) {
$alive_timeout = 30*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive", "sg('".$ot.".alive',0);", $alive_timeout);

$old_temp = $params['OLD_VALUE'];
$t = $params['NEW_VALUE'];

if ($t>$old_temp) {
$d = 1;
} elseif ($t<$old_temp) {
$d = -1;
} else {
$d = 0;
}
$this->setProperty('direction', $d);
Объекты класса:

RM2_Living - RM2 в гостинной
RM2_Hall - RM2 в зале
но я так понимаю этот код заточен по rm bridge, а в rm plugin немного другие запросы (ИМХО)
Но прописав все, температура не приходит мне( точнее значение 0.
Немного покопавшись сделал такой код:
СпойлерПоказать
$bridge = $this->getProperty('HTTPBridge');
if(!isset($bridge)) {return;}

$ip = gg($bridge.'.IP');
$port = gg($bridge.'.Port');
$mac = $this->getProperty('deviceMAC');

$ctx = stream_context_create(array(
'http' => array('timeout'=>2)
)
);

$response = file_get_contents('http://192.168.0.103:9876/temperature?d ... d:c7:35:08', 0, $ctx);
$data=json_decode($response);
setGlobal('RM2_Hall.temperature', $data->{'temperature'});
Старый с вставкой переменных айпи мака почему-то не работал(
Кто что подскажет?
Для примера оригинал
СпойлерПоказать
$bridge = $this->getProperty('HTTPBridge');
if(!isset($bridge)) {return;}

$ip = gg($bridge.'.IP');
$port = gg($bridge.'.Port');
$mac = $this->getProperty('deviceMAC');

$ctx = stream_context_create(array(
'http' => array('timeout'=>2)
)
);

$response = file_get_contents('http://'.$ip.':'.$port.'/?devMAC='.$mac, 0, $ctx);
if(isset($response) && $response!='') {
$this->setProperty('temperature', (float)$response);
}
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль "RM-Brige manage"

Сообщение nick7zmail » Пт июн 10, 2016 9:41 pm

Много кода...учитывая что не юзал RM-плагин, не могу пока помочь...может кто юзал - скажет что нить)
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Закрыто