Имеем в наличии:
1. TPLink W703N с установленным OpenWRT
Про установку OpenWRT можно почитать здесь (устанавливать все пакеты узла автоматики не нужно, только OpenWRT).
2. Led-бейджик на светодиодах под названием B1236TAW 12*36 Dots USB Rechargeable Advertising Scrolling Board Message Name Badge Sign w/ 432-LED
Покупался здесь.
Задача: сделать на нём возможность вывода сообщений путём отправки оных HTTP-запросом по WiFi
Решение:
(UPDATE: При использовании CyberWRT можно подключить модуль LedTicker, где всё уже настроено и прописано)
1. Ставим дополнительные пакеты на OpenWRT:
opkg update
opkg install bash
opkg install coreutils-stty
opkg install kmod-usb-serial
opkg install kmod-usb-serial-pl2303
2. Подключаем светодиодную панель к роутеру (определяется как /dev/ttyUSB0)
3. создаём папку /www/cgi-bin и ставим ей права запуска
chmod 0777 /var/cgi-bin
4. Копируем в эту папку два файла из архива
miniled.cgi
tail.bin
5. Запускаем форму по адресу http://IPроутера/cgi-bin/miniled.cgi
Можно заполнить форму и отправить комаду. Если всё хорошо, то сообщение появится на led-панели. В строке браузера можно посмотреть http-запрос, который можно отправлять с той же MajorDoMo для периодического обновления данных.
Так же можно указать URL, чтобы панелька сама брала с него данные (надо добавлять запуск /www/cgi-bin/miniled.cgi в крон: * * * * * /www/cgi-bin/miniled.cgi > /dev/null). Например, используя ссылку http://СЕРВЕР/objects/?op=get&object=ThisComputer&p=textBoxTest можно отображать на панельке текущее время.
После обновления саму панельку можно даже отключить от роутера и прицепить куда-нибудь -- всё будет показываться, но, понятное дело, данные при этом обновляться не будут.
Из особенностей -- не поддерживается русский язык и не поддерживаются спец. символы типа анимированных сердечек, телефона и т.п.
Чтобы подключить панельку пришлось сначало пару недель наскоками пытаться скомпилировать программу на Си под OpenWRT, потом бросить это дело (найденная мной программа не работала с панелями такого типа) и пойти другим путём. Может кому пригодится история на будущее:
* Родная программа (очень убогая, кстати, и на китайском языке) писала данные в панель через этот COM-порт и с помощью программы Free Device Monitoring Studio можно было перехватывать пакеты и смотреть их содержимое. Приблизительно так:
* Поэкспериментировав с данным разобрал структуру сообщения (текст, скорость, эффект). Долго мучился с контрольной суммой, но нашёл perl-овскую библиотеку Device:MiniLED и подсмотрел как она считается (как оказалось, остаток деления на 256 суммы всех байтов сообщения, включая системные поля)
* Потом долго мучился, чтобы весь алгоритм перевести на чистый Bash (на роутере места не особо много для языков более высокого уровня).
* В итоге, после пары дней экспериментов, всё завелось как надо