Добрый день. Пытаюсь подключить контроллер управления освещением в систему умного дома на базе сервера ioBroker.
Вот протокол взаимодействия по HTTP
Получение состояния реле
HTTP-GET запрос вида
http://megalight/state?c=get&n=1
n - ID нужного реле (обязательный)
Ответ: text/plain в виде
1;255
где первое число - состояние (1 - вкл), второе - значение диммера
Установка состояния реле
HTTP-GET запрос вида
http://megalight/state?c=set&n=1&o=1&v=200&t=30000
http://megalight/state?c=set&n=1&i=10
n - ID нужного реле (обязательный)
o - состояние (1 - вкл, 0 - выкл)
v - значение диммера (0-255)
i - инкремент/декремент значения диммера (-255 по 255)
t - таймаут в миллисекундах
Ответ: пусто
Получение состояния кнопки
HTTP-GET запрос вида
http://megalight/state?c=button&n=1
n - ID нужной кнопки/выключателя (обязательный)
Ответ: text/plain в виде
1
состояние (1 - нажата, 0 - не нажата)
Я не силён пока в JavaScript но покопавшись в инете нашёл пару скриптов для управления через Get запросы.
Это первый вариант
createState('javascript.0.test', '');
var url = 'http://192.168.0.89';
var request = require('request');
var options = {
url: ''
};
on({id: 'javascript.0.test', change: 'any'}, function (obj) {
if(obj.newState.val === 0){
options.url = url+'/state?c=set&n=7&o=1';
} else {
options.url = url+'/state?c=set&n=7&o=0';
}
request(options, function (error, response, body) {
log('Ответ' + body);
});
});
Это второй вариант
createState('javascript.0.test', '');
on({id: 'javascript.0.test', change: 'any'}, function (obj) {
if((obj.newState.from == 'web.0' || obj.newState.from == 'system.adapter.web.0' ) && obj.newState.val == '0'){
request ('http://192.168.0.89/state?c=set&n=7&o=0');
}
if((obj.newState.from == 'web.0' || obj.newState.from == 'system.adapter.web.0' ) && obj.newState.val == '1'){
request ('http://192.168.0.89/state?c=set&n=7&o=1');
}
});
Оба прекрасно работают. И управляют включением и выключением реле. Но если я включаю свет с выключателя на стене то увы сервер не видит этого.
Чувствую что в эти скрипты надо что-то добавить, но вот что?
Контроллер сам при изменении состояния выходных портов отсылает Get запрос на сервер. Но вот как отследить этот запрос ума не приложу.