[Из песочницы] Управляем устройствами NooLite с роутера Zyxel Keenetic
В этой статье я расскажу о том, как управлять устройствами nooLite через USB переходник РС1ххх прямо из проутера Zyxel Keenetic — без участия компьютера.
Преамбула
Темы про NooLite уже не раз тут мелькали, но, на всякий случай напомню, что это компоненты для построения «умного дома», общающиеся между собой посредством радиоканала. А ещё к их системе можно заказать USB адаптер, позволяющий отправлять команды с компьютера (на самом деле есть и тот, который может эти команды получать, но мы сейчас его рассматривать не будем). Когда-то давно я специально поднимал у себя на машине Web-сервер, на который можно было зайти с компьютера или телефона в домашней сети и управлять освещением, а также добавлять запланированные задачи. Например — я, как истинный сова, с трудом просыпаюсь рано утром, и даже с удовольствием не делал бы этого, но надо. И пробуждаться в темноте от звука будильника, было крайне тяжело, даже если поставить на него самую милую мелодию, из всех милых мелодий на земле. И я решил провести эксперимент, написав скрипт для плавного включения света, когда яркость увеличивается с 0 до 100% за 20 минут, тем самым имитируя восход солнца, и эксперимент удался — просыпаться стало значительно легче, когда свет не резко бьёт по глазам, а едва заметно нарастает, и организм реагирует на подобное пробуждение намного лучше будильника… Но что-то я ушёл от темы. Все это работало себе спокойно, и впрочем меня даже не напрягало то, что требуется постоянно включенный компьютер, у меня стоят тихие вентиляторы и его практически не слышно, но не так давно узнав, что на Zyxel Keenetic с прошивкой второй версии снова можно ставить пакеты OpenWRT у меня в голове начала созревать идея. И когда эта идея совсем меня допекла, никак не желая оставить в покое мой мозг, я решился — а, черт с ним! Впереди выходные, и я сделаю это!
Повестка дня
Итак, что же я собственно сделал? Сделал я следующее:
— Веб-интерфейс управления светом и нагрузками прямо в роутере Zyxel Keenetic.
— Команды отправляются непосредственно с роутера, через USB передатчик NooLite (РС1ххх) воткнутый в USB порт роутера.
— В веб-интерфейсе можно настраивать запланированные задачи для cron для управления светом.
— Консольная утилита, позволяющая отправлять команды непосредственно из командной строки роутера (под SSH) и если мой веб-интерфейс пришёлся не по вкусу, можно написать свой или встроить её вызов откуда угодно.
Shut up and take my money
Итак, что нам потребуется для настройки. Для начала подготовим роутер, делается это просто и достаточно подробно расписано тут. Дальше нам потребуется доустановить несколько пакетов, посему выполняем следующее:
opkg update
opkg install php5-cgi lighttpd-mod-fastcgi cron
Эта команда устанавливает Веб-сервер, PHP, и cron для планирования задач. Я бы ещё Midnight Commander поставил, ибо удобнее:
opkg install mc
Дальше редактируем настройки Web-сервера: /opt/etc/lighttpd/lighttpd.conf указав верный порт: server.port = 82
80-й порт уже занять Web-интерфейсом роутера, поэтому выбираем другой.
Затем редактируем файл:/opt/etc/lighttpd/conf.d/30-fastcgi.conf, сделав так:
fastcgi.server = ( ".php" =>
( "php-local" =>
(
"socket" => "/opt/tmp/php-fastcgi-1.socket",
"bin-path" => "/opt/bin/php-fcgi",
"max-procs" => 1,
"broken-scriptfilename" => "enable",
)
),
# .....
# .....
)
Вот и все, а теперь запускаем сервер:
lighttpd -f /opt/etc/lighttpd/lighttpd.conf
На этом подготовка закончена, и можно приступать к самому главному. Качаем этот архив. В нем находится программа, пару либов, и php файлы. Из папки binaries закидываем бинарники на флешку роутера, bin в bin, lib в lib, share в share. По идее он не должен предлагать что-то заменять, но если предложит — отказываемся, ибо тут надо разбираться. Если вы мне не доверяется, то в архиве в папке source лежит исходник утилиты для отправки команд NooLite, можете собрать его сами. Как это сделать — тема отдельная, здесь расписывать не буду, информации по этому поводу в сети много. Итак, если все файлы закинуты по своим местам, можно проверить работоспособность всего этого чуда. Идём в браузер и вводим IP адрес роутера и порт, который был вами указан в настройке веб-сервера.http://192.168.1.1:82/
Тут мы должны увидеть страницу с управление освещением. Но не вашим, а моим. Для того, чтобы сделать свои настройки, вам понадобиться отредактировать файл: /opt/share/www/config.php
Я специально продокументировал его комментариями, думаю проблем с его редактированием не возникнет. После того как, вы настроите все под свою конфигурацию — можно начинать пользоваться. Веб-интерфейс сделан больше под мобильные устройства, но на десктопе тоже можно вполне пользоваться. Отдельное внимание обращаю на то, что создавать, включать, выключать и удалять задания для cron, можно прямо из браузера, при изменениях cron будет перезапущен и вам не надо ни о чем думать. Если же вы хотите пользоваться консольной утилитой, то просто наберите в SSH команду:
noolite
Вам выведется список параметров, тут тоже ничего сложного.
Я проверял это на Zyxel Keenetic Giga II, у него 2 USB порта, но насколько я знаю, на роутерах с одним USB портом, можно использовать хаб. Я решил это проверить и у меня через хаб заработало.
Вот и все, надеюсь вам было интересно и вы сочли эту статью полезной. Если есть вопросы — задавайте, буду рад ответить.