Настройка работы контроллера TouchOn через HTTP
Пример интеграции контроллера TouchOn с сервером по протоколу HTTP
Обработка сообщений от контроллера TouchOn и формирование ответов
Для того, чтобы принимать от устройства сообщения, необходим Web-сервер. Простейший Web-сервер можно написать самостоятельно. Однако значительно проще использовать уже готовый, например, Apache, lighttpd, nginx, IIS. Установка Web-сервера на Linux или Windows занимает не более нескольких минут.
Далее необходим какой-либо язык программирования. Например, PHP. Это достаточно простой язык программирования с низким порогом вхождения, в котором легко освоиться начинающим пользователям.
Контроллер формирует сообщения вида http://ip-address/script?pt=n, где ip-address - адрес сервера, указанный в сетевых настройка, scipt - скрипт, указанный в сетевых настройках, а n - номер активированного порта. Запрос может выглядеть так http://192.168.0.250/megad.php?pt=6
Соответственно можно создать на сервере простейший скрипт megad.php
<?php
if ( $_GET['pt'] == "6" )
{
// Выполнение действий
}
?>
Собственно, вот и все программирование. Если мы получили сообщение от устройства о нажатии кнопки, подключенной к порту 6, выполняем необходимые действия.
Но мы можем сразу же сформировать ответ, где скажем контроллеру, какие выходы должен включить, выключить или переключить контроллер. Тогда скрипт приобретает такой вид.
<?php
if ( $_GET['pt'] == "6" )
{
echo "7:1";
}
?>
Если сработал порт 6, включаем нагрузку, подключенную к порту 7. Формат команды описан выше и соответствует формату поля Action.
Первая цифра - номер порта
Вторая цифра после двоеточия - действие (0 - выключить, 1 - включить, 2 - переключить, изменить состояние на противоположное).
Как и в случае с полем Action, есть возможность дать команды на управление сразу нескольким портам.
echo "7:1;8:0";
Команды разделяются точкой с запятой. Порт 7 - включить, Порт 8 - выключить.
Получение состояния портов
Получить состояние порта можно с помощью любого Web-клиента, в том числе с помощью функций PHP.
URL для получения текущего состояния порта:
http://192.168.0.14/sec/?pt=4&cmd=get
где параметр pt определяет номер порта.
Можно использовать любые удобные функции: file_get_contents(), curl() или socket'ы. Например:
<?php
$state = file_get_contents('http://192.168.0.14/sec/? pt=4&cmd=get');
?>
После выполнения данной команды в переменной $state у нас будет содержаться ON (если порт находит в активном состоянии), OFF или текущее значение, если порт настроен в режим PWM (ШИМ) или ADC (АЦП). Если удобнее получить состояние порта не в текстовом: ON/OFF, а в цифровом виде 1/0, то следует добавить к GET-запросу параметр "f=d". Например: "&cmd=get&f=d". Отображение состояния портов в цифровом виде работает только для родных портов контроллера типа IN и OUT/SW.
Контроллер также позволяет вывести состояние всех своих портов по команде cmd=all
http://192.168.0.14/sec/?cmd=all
Управление выходами
В предыдущих примерах сервер управлял выходами в ответ на сообщение контроллера, которое формируется в связи с каким-то событием (например, нажатие выключателя). Но сервер может управлять выходами контроллера, инициировав связь с устройством самостоятельно. Для этого программа на сервере вызывает URL вида:
http://192.168.0.14/sec/?cmd=10:1
Где формат команды (cmd) стандартный, который описан в разделе про Сценарии (Act). Если выход настроен как PWM (ШИМ), то допускается указывать значения от 0 до 255
http://192.168.0.14/sec/?cmd=12:150
Пример управления группой (см. описании работы с группами)
http://192.168.0.14/sec/?cmd=g1:1