LED PLC API
В этом разделе рассматриваются способы отправки информации на светодиодное табло из внешних источников. Предположим что у нас уже есть табло с 9-ю настроенными областями отображения.
На иллюстрации ниже показана разметка областей отображения для табло 240 x 80 пикселей.
Каждая область имеет размер 80 x 20 пикселей.
Границы областей обведены линиями.
Внизу остаётся область 240 x 20, которая пока не задействована.
Пример информационного табло с номерами автомобилей
Задача: В локальной сети предприятия устанавливать и оперативно менять номера автомобилей согласно очереди на выезд.
Способ 1. Прямая передача текста в область через GET-запрос
Самый простой способ передачи текста заключатся в том, чтобы открыть любой браузер, в адресной строке поместить нужный GET-запрос и нажать кнопку перехода по этому адресу.
Ниже в таблице показаны примеры GET-запросов на вывод текста в области табло.
В запросах вместо
[ip-addr]
нужно будет подставить IP-aдрес контроллера.
Номер области | Пример текста | GET-запрос |
---|---|---|
1 | А111AA | http://[ip-addr]/lcdmsg?st=1&txt=А111AA |
2 | А222AA | http://[ip-addr]/lcdmsg?st=2&txt=А222AA |
3 | A333AA | http://[ip-addr]/lcdmsg?st=3&txt=А333AA |
4 | Б111ББ | http://[ip-addr]/lcdmsg?st=4&txt=Б111ББ |
5 | Б222ББ | http://[ip-addr]/lcdmsg?st=5&txt=Б222ББ |
6 | Б333ББ | http://[ip-addr]/lcdmsg?st=6&txt=Б333ББ |
7 | В111ВВ | http://[ip-addr]/lcdmsg?st=7&txt=В111ВВ |
8 | В222ВВ | http://[ip-addr]/lcdmsg?st=8&txt=В222ВВ |
9 | В333ВВ | http://[ip-addr]/lcdmsg?st=9&txt=В333ВВ |
Результат (на фотографии дополнительно обозначены номера областей):
Здесь для примера используется стандартный шрифт малого размера. В реальных проектах возможен выбор более подходящего шрифта под задачу. Шрифт и цвет текста задаются в рамках настройки зоны отображения.
Также можно использовать специальные утилиты (сurl, Postman, PacketSender или другие) для посылки нескольких запросов в более удобном виде. Таким образом можно заранее протестировать API и приступить к интеграции с Вашей системой или ПО.
В одной сети может быть несколько табло (несколько контроллеров).
Можно организовать сеть из нескольких табло и управлять ими централизованно из одного места.
Полезная информация
Обобщённо команды API описаны в разделе "Краткая справка по API"
Примечание
Если прошивка была скомпилирована с поддержкой "MDNS", то также доступно обращение по имени контролера,
тогда вместо <ip>
можно подставить имя.local
. Например если контроллер назван (на вкладке Main) как disp
, то вместо
<ip>
можно подставить disp.local
Способ 2. Компактная передача информации одним запросом
Иногда может быть удобнее отправить один запрос сразу со всеми данными для вывода.
Некоторые конфигурации ПО контроллеров поддерживают такой тип GET-запроса с поддержкой формата JSON.
Он удобен тем, что все необходимые данные можно послать одной командой вместо пачки из нескольких запросов (как это было в предыдущем примере).
Подробности по настройке прошивки
Если Вы приобрели контроллер с предустановленным ПО (приложением), вы можете уточнить поддерживает ли ПО контроллера пакетный запрос. Как правило, поддержка уже добавлена и дополнительная настройка не требуется.
Далее приведены некоторые сервисные подробности (они пригодятся, если Вы настраиваете контроллер самостоятельно).
Данные способ можно использовать если прошивка была сконфигурирована с опцией API Options.
Также на вкладке Display
потребуется привязать каждую область отображения к соответствующему номеру строки в "Конструкторе строк".
Для этого выберите в списке "Designer line X", где "X" - номер области и строки. И повторите эти настройки для каждой используемой области.
В итоге каждая область будет выводить текст из соответствующей ей строки "Конструктора строк" (Designer lines). Это нужно для дальнейшей работы.
Рассмотрим вариант компактного GET-запроса:
-
формируем данные для отправки
Объединяем все данные из предыдущего примера в формат JSON в таком виде: -
сжимаем получившийся JSON в одну строку
Чтобы автоматически упаковать JSON в одну строку, можно применить один из онлайн-сервисов, которые можно найти в интернете по ключевым словам "JSON Minifier". -
отправляем данную JSON-строку как часть GET-запроса:
где XXXXX - параметры в формате JSON.
-
полный текст запроса:
В запросе вместо
[ip-addr]
нужно подставить IP-адрес контроллера.
Особенности использования компактного запроса
Переданные в запросе строки сохраняются в памяти контроллера и восстанавливаются после включения табло.
После отправки запроса контроллеру требуется некоторое время на его обработку (примерно от 3 до 10 секунд). Если нужна более быстрая реакция, пожалуйста используйте прямой вывод текста в область из способа 1.
Пример табло c метео-информацией
Задача: Мониторинг климата в помещениях
Используя такое же табло (с той же компоновкой зон отображения), но с другими данными можно выводить показания с метео-датчиков.
Номер области | Пример текста | GET-запрос |
---|---|---|
1 | Помещение | http://[ip-addr]/lcdmsg?st=1&txt=Помещение |
2 | Цех #1 | http://[ip-addr]/lcdmsg?st=2&txt=Цех%20%231 |
3 | Проходная | http://[ip-addr]/lcdmsg?st=3&txt=Проходная |
4 | Температура | http://[ip-addr]/lcdmsg?st=4&txt=Температура |
5 | +31,3 | http://[ip-addr]/lcdmsg?st=5&txt=%2B31%2C3 |
6 | +24,5 | http://[ip-addr]/lcdmsg?st=6&txt=%2B24%2C5 |
7 | Влажность | http://[ip-addr]/lcdmsg?st=7&txt=Влажность |
8 | 15 % (!) | http://[ip-addr]/lcdmsg?st=8&txt=15%20%25%20%28%21%29 |
9 | 73 % | http://[ip-addr]/lcdmsg?st=9&txt=73%20%25 |
Примечание
В тексте в некоторых местах присутствуют пробелы и другие символы, которые в явном виде в строке запроса использовать нельзя. Тогда вместо символа используется его код, идущий после знака процента. Это общее правило к построению любого URL. Ниже представлена таблица для перевода наиболее встречающихся символов в тексте:
в тексте | в GET-запросе (URL) |
---|---|
(пробел) | %20 |
! | %21 |
" | %22 |
# | %23 |
$ | %24 |
% | %25 |
( | %28 |
) | %29 |
* | %2A |
+ | %2B |
, | %2C |
. | %2E |
/ | %2F |
- | - |
Возможна кодировка и других символов. Более подробные таблицы и сервисы перевода можно найти в Интернете по запросам "url encode" или "HTML URL Encoding Reference".
Также прошивка LED GPU должна поддерживать шрифт в котором присутствуют соответствующие символы. Некоторые шрифты могут содержать не все символы.
Результат:
Вариант запроса с использованием JSON
Поскольку в данном примере присутствует много русских букв и символов, при построении GET-запроса в JSON данных нужно будет передавать символы с учётом ограничений URL. Возьмём коды согласно данным выше в таблице
исходные данные:
{
"linesdesigner": {
"1": "Помещение",
"2": "Цех #1",
"3": "Проходная",
"4": "Температура",
"5": "+31,3",
"6": "+24,5",
"7": "Влажность",
"8": "15 % (!)",
"9": "73 %"
}
}
{
"linesdesigner": {
"1": "Помещение",
"2": "Цех%20%231",
"3": "Проходная",
"4": "Температура",
"5": "%2B31%2C3",
"6": "%2B24%2C5",
"7": "Влажность",
"8": "15%20%25%20%28%21%29",
"9": "73%20%25"
}
}
[ip-addr] - нужно заменить на ip-адрес контроллера
http://[ip-addr]/jsonoptions?write={"linesdesigner":{"1":"Помещение","2":"Цех%20%231","3":"Проходная","4":"Температура","5":"%2B31%2C3","6":"%2B24%2C5","7":"Влажность","8":"15%20%25%20%28%21%29","9":"73%20%25"}}
OK:9
- установлено 9 значений.
Примечание
Если в ответ на запрос пришёл код OK:0
(0 параметров обновлено), а на табло через 10-20 секунд информация не поменялась - это означает что запрос не был выполнен. Одной из причин может быть слишком длинный запрос, т.к. ресурсы контроллера ограничены. В таком случае попробуйте разбить запрос на несколько или воспользоваться отдельными более простыми GET-запросами, описанными выше в таблице. Другая причина может быть в неверном кодировании данных в формате URL. Проверьте и закодируйте ваши данные автоматически, при помощи сервисов или утилит, вроде "url encode".