12. [DKSF 5440] Поддержка устройством HTTP API
Интерфейс URL-encoded-команд в устройстве может быть использован для интеграции с web-приложениями без использования протокола SNMP. Через интерфейс URL-encoded-команд доступно управление следующими функциями:
HTTP API | |||
Команда | Вызов | Ответ | Примечание |
Реле | |||
Запрос состояния реле | /relay.cgi?rN | relay_result('error'); relay_result('ok', 2, 1); первый аргумент всегда 'ok' второй аргумент — состояние реле третий аргумент — моментальное состояние реле | |
Управление реле | /relay.cgi?rN=S | relay_result('ok') relay_result('error') | |
Переключение реле в инверсное состояние | /relay.cgi?rN=S | relay_result('ok') relay_result('error') | |
Ресет, переключение реле в инверсное состояние на время | /relay.cgi?rN=F,10 | relay_result('ok') relay_result('error') | |
Линии ввода-вывода | |||
Запрос состояния линии | /io.cgi?ioN N — номер линии | io_result('error') io_result('ok', -1, 1, 339) Первый аргумент: всегда 'ok' (при ошибке запроса — 'error'). Второй аргумент: всегда «-1», для расширения API в будущем. Третий аргумент: текущее моментальное состояние Линии ввода-вывода, включая состояние сброса. Четвертый аргумент: счетчик импульсов на данной Линии ввода-вывода, считается по фронту. | |
Запрос состояния всех линий | /io.cgi?io | io_result('error') io_result('ok', 246); Первый аргумент: всегда 'ok' (при ошибке запроса — 'error'). Второй аргумент: бит-карта состояния линий. | Бит-карта (представлена в десятичном формате): бит 0 = линия 1 бит 1 = линия 2 ... бит 7 = линия 8 Например: 00000000 — 0 (все линии в лог.0) 11100111 — 231 (4 и 5 линии в лог.0, остальные в лог.1) |
Управление линией в режиме «выход» | /io.cgi?ioN=S N — номер линии S — режим работы (1 — вкл., 0 — выкл.) | io_result('error') io_result('ok') | |
Переключение линии в инверсное состояние в режиме «выход» | /io.cgi?ioN=f N — номер линии | io_result('error') io_result('ok') | |
Ресет, переключение линии в инверсное состояние на время в режиме «выход» | /io.cgi?ioN=f,T N — номер линии T — время переключения в с. | io_result('error') io_result('ok') | |
Изменение режима работы линии | /io.cgi?ioN&mode=S N — номер датчика S — режим работы (1 — выход, 0 — вход) | io_result('error') io_result('ok') | |
Термодатчики | |||
Запрос состояния датчика | /thermo.cgi?tN N — номер датчика | thermo_result('error') thermo_result('ok', 36, 2); Первый аргумент: всегда 'ok' (при ошибке запроса — 'error'). Второй аргумент: текущая температура. Третий аргумент: статус датчика. 0 — датчик не подключен или сбоит; 1 — температура ниже нормы; 2 — температура в норме; 3 — температура выше нормы. | |
Датчики влажности | |||
Запрос влажности | /relhum.cgi?hN N — номер датчика | relhum_result('error') relhum_result('ok', 55, 2) Первый аргумент: всегда 'ok'. Второй аргумент: относительная влажность, %. Третий аргумент: статус датчика. 0 — датчик не подключен или сбоит; 1 — влажность ниже нормы; 2 — влажность в норме; 3 — влажность выше нормы. | |
Запрос температуры | /relhum.cgi?tN N — номер датчика | relhum_result('error') relhum_result('ok', 25, 2) Первый аргумент: всегда 'ok'. Второй аргумент: температура, °C. Третий аргумент: статус датчика. 0 — датчик не подключен или сбоит; 1 — температура ниже нормы; 2 — температура в норме; 3 — температура выше нормы. | |
1-wire-адаптер аналоговых датчиков | |||
Получение суммарного отчета о нескольких параметрах | /inputanalog.cgi?inN N — номер датчика | inputanalog_result('error'); — oшибка возвращается в случае неправильного формата запроса inputanalog_result('ok', status, A, V, R); — успешное выполнение команды Возвращаемые значения: inputanalog_result('error'); — oшибка возвращается в случае неправильного формата запроса inputanalog_result('ok', status, A, V, R); — успешное выполнение команды Расшифровка ответа: Первый аргумент — всегда 'ok' status — статус адаптера: 0 — адаптер неисправен или не подключен; 1 — ниже нормы; 2 — в норме; 3 — выше нормы; 4 — вне раб. диапазона. A — ток в мкА V — напряжение в мВ R — сопротивление в Ом | |
Управление питанием петли | /inputanalog.cgi?inN&pwr=S N — номер датчика S — 0 — выкл., 1 — вкл. | inputanalog_result('error'); inputanalog_result('ok') | |
Сброс питания петли | /inputanalog.cgi?inN&rst /inputanalog.cgi?inN&rst=T N — номер адаптера T — время отключения (1...25 с), если не указано — 10 с | inputanalog_result('error'); inputanalog_result('ok') | |
GSM-модем | |||
Отправка СМС, UTF8 | /sendsms.cgi?utf8 [+7xxxxxxxxxx, +7yyyyyyyyyy..] Текст | smssend_result('ok'); — успешное выполнение команды smssend_result('error') — ошибка в тексте запроса smssend_result('busy') — GSM-модем занят | URL вызывается методом POST. Данные POST представляют собой текст SMS в кодировке UTF-8. Подробнее о том как отправлять произвольные SMS написано в разделе «10.11. [DKSF 5440] Как отправлять произвольные SMS» данного документа. |
Отправка СМС, Win1251 | /sendsms.cgi [+7xxxxxxxxxx, +7yyyyyyyyyy..] Текст | smssend_result('ok'); — успешное выполнение команды smssend_result('error') — ошибка в тексте запроса smssend_result('busy') — GSM-модем занят | URL вызывается методом POST. Данные POST представляют собой текст SMS в кодировке UTF-8. Подробнее о том как отправлять произвольные SMS написано в разделе «10.11. [DKSF 5440] Как отправлять произвольные SMS» данного документа. |
USSD-запрос | /ussdstart.cgi?кодзапроса кодзапроса — a100x, что означает *100#. В коде USSD-запроса «*» заменяется на «a», «#» заменяется на «x» (латинские символы) | ussdsend_result('ok'); | Для получения ответа на запрос вызывать /ussdread.cgi Ответ: ussdsend_result("ответ_gsm_оператора") |
Датчики качества электропитания 1-wire | |||
Запрос состояния | /voltage.cgi?vN N — номер датчика | voltage_result('error'); — oшибка возвращается в случае неправильного формата запроса. voltage_result('ok', 220, 4, 50, 4); — успешное выполнение команды: первый аргумент — всегда 'ok'; 0 — датчик не подключён либо неисправен; 1 — электропитание отсутствует; 2 — плохо; 3 — средне; 4 — отлично. Четвёртый аргумент — текущее значение частоты, Гц. 0 — датчик не подключён либо неисправен; 1 — частота отсутствует; 2 — плохо; 3 — средне; 4 — отлично. |
Пример Ввода команд:
Переключение реле
Смена источника управления, а также ручное включение и выключение реле:
После ?r указывается номер реле, после = указывается номер режима (источника управления).
где:
n — номер реле
s — режим работы реле:
0 — Выключено
1 — Включено
Переключение (инвертирование) реле, вкл <-> выкл:
Реле должно находиться в режиме «Ручное выкл» или «Ручное вкл».
Кратковременное переключение реле в инверсное состояние (выдача импульса сброса):
Длительность в секундах указывается после запятой. Применимо ко всем режимам.
Авторизация
Для добавления в структуру URL-encoded-команды логина и пароля можно воспользоваться следующей схемой:
http://<имя_пользователя>:<пароль>@<хост>:<порт>/<URL‐путь>?<параметры>
где:
<имя_пользователя>:<пароль> — учетные данные для авторизации в web-интерфейсе устройства;
<хост> — IP-адрес устройства;
<порт> — порт HTTP-сервера;
<URL‐путь>?<параметры> — URL-encoded-команда.