= InfoBoard и InfoHub: руководство = Табло InfoBoard имеет интерфейс RS485, взаимодействие осуществляется по протоколу Modbus RTU на скорости 19200. Хаб InfoHub предназначен для инжектирования сети табло питанием и конвертацией внешнего протокола на базе HTTP в протокол Modbus RTU. == Протокол InfoHub == InfoHub последовательно принимает HTTP-запросы на порту 80 (веб-сервер). Данные передаются методами GET/POST на URL вида: {{{ http:///infoboard/{addr}/{request}?<параметры> }}} Компоненты строки url-запроса: * addr - адрес табло InfoBoard (обязательный, 1-255) * request - тип запроса (clear, image, reset, config) После получения HTTP-запроса хаб инициирует синхронную передачу серии соответствующих modbus rtu запросов по всем доступным линиям. В случае подтверждения всех запросов хотя по одной из линий HTTP запрос завершается с кодом "200 OK". В противном случае формируется ответ "504 Gateway Timeout". Ответ HTTP с кодом "400 Bad Request" формируется при некорректных параметрах запроса. InfoHub не предусматривает получение одновременных HTTP-запросов, поэтому при действующем запросе, а также в случае, если линия RS485 занята (не завершен предыдущий запрос), хаб сформирует ответ с кодом "429 Too Many Requests". === Запрос image (POST) === Запрос image позволяет загрузить растровое изображение на экран с указанным адресом. Параметры запроса: * w, h - ширина и высота обновляемой зоны табло, в пикселах (обязательный). Ширина не может превышать 240 пикселей, должна быть кратна 16. * x, y - отступ обновляемой зоны от верхнего левого угла в пикселах. По-умолчанию 0, указывать не обязательно. * pixel_mode - режим передачи. r - попиксельно красным цветом, g - попиксельно зеленым. По-умолчанию pixel_mode=r, можно не указывать. * animate - вариант анимации: none (без анимации), blink (мигание) Для анимации типа blink (мигание) необходимо дополнять запрос следующими параметрами: * animate_count - кол-во миганий * blink_ontime - время показа картинки в миллисекундах (активная фаза мигания) * blink_offtime - время показа черного экрана в миллисекундах (неактивная фаза мигания) Пример запроса: {{{ http://192.168.1.117/infoboard/16/image?w=64&h=32&y=0&x=0&pixel_mode=g }}} В содержимом (content) POST-запроса передается побитовая пиксельное изображение в бинарном виде. Единичка бита соответствует включенному светодиоду. Размер изображение должен в точности совпадать с площадью отображаемой зоны в пикселах, т.е. Content-Length (количество данных) * 8 = w (ширина) * h (высота). Для примера: передача полного изображения на экран 64x32 требует объема данных 64 * 32 / 8 = 256 байт. Пример тестового запроса с использованием утилиты CURL: {{{ curl -v -X POST --data-binary @demo3 'http://192.168.1.117/infoboard/16/image?w=64&h=32&y=0&x=0&pixel_mode=g' }}} Размер файла demo3 в точности равен 256 (пиксельной площади односегментного экрана 64x32). === Запрос clear (POST) === Очищает экран. Параметры запроса не используются, данные не передаются. === Запрос logo (POST) === Отображает логотип. Параметры запроса не используются, данные не передаются. == Примеры использования == === Запрос reset (POST) === Перезгружает устройство. Устройство будет перезагружено спустя 3 секунды после получения запроса, все запросы на данный период игнорируются. === Запрос config (GET) === Получает настройки и параметры с устройства. Параметры запроса не используются, данные не передаются. Хаб возвращает в теле ответа блок настроек и параметров в виде массива в формате JSON: Пример ответа: {{{ { "network_mode": "auto", "ip": "192.168.0.2", "gw": "192.168.0.1", "mask": "255.255.255.0", "baudrate": 19200, "version": "1.1" } }}} В ответе указываются следующие параметры (ключ-значение): * network_mode - режим работы сети (dhcp/static) * ip/gw/mask - ip-адрес, шлюз и маска подсети. Используется для режима static, но может быть сохранено в виде настроек в режиме dhcp. * baudrate - текущий baudrate линии. * version - версия прошивки === Запрос config (POST) === Загружает новые настройки на устройство. Данные не передаются, в ответе хаб возвращает актуальные настройки и параметры как в запросе config (GET). Сетевые настройки применяются только после перезагруки устройства (команда reset или после перезагрузки по питанию). Параметры: * network_mode - режим работы сети (dhcp/static) * ip/gw/mask - ip-адрес, шлюз и маска подсети. Параметры можно указывать как все сразу, так и отдельно (например, менять только ip-адрес). Рекомендуется проверить корректность настроек по ответу команды перед перезагрузкой. == Настройка InfoHub == Настройка осуществляется нажатиями на кнопку, расположенную на плате хаба (скрыта под технологической крышкой на корпусе). Информация в режиме конфигурации отображается на экране с адресом 16, подключенному к первой линии (разъем рядом с портом ethernet). По-умолчанию Хаб автоматически получает адрес (Сеть = авто) и не требует дополнительных настроек. Для входа в режим конфигурации необходимо включить питание при нажатой кнопке, после чего кнопку отпустить. При настройке различаются несколько видов нажатий: * короткое - кратковременной нажатие на кнопку (< 1c) * двойное - двойное кратковременной нажатие на кнопку (< 1c) * длительное - нажатие на кнопку длительностью 2-3с * сверхдлительное - нажатие на кнопку длительностью более 3с Длительное нажатие меняет пункт настройки (режим сети, ip-адрес, адрес шлюза, маска подсети). Короткое нажатие меняет выбранную опцию (в пункте режима сети) или изменяет значения байта адреса на единицу. Двойное нажатие меняет выбранную опцию (в пункте режима сети) или значения байта адреса на десять единиц. Для сохранение используется сверхдлительное нажатие до появления надписи Сохранено. == Настройка InfoBoard == Настройка осуществляется нажатиями на кнопку, расположенную на плате контроллера табло (через технологическое отверстие рядом с разъемом на корпусе). Настройка сводится к установке modbus-адреса. Короткое нажатие увеличивает значения адреса на единицу. Двойное нажатие уменьшает значения адреса на единицу. Для сохранение используется сверхдлительное нажатие, после которого экран переходит в рабочий режим (демонстрационный).