Настройка работы контроллера TouchOn через HTTP

Материал из Touchon

Пример интеграции контроллера 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