Jump to content

Зажигаем и выключаем LED на Keenetic по расписанию с cron


Recommended Posts

Зажигаем и гасим светодиоды на роутерах Keenetic по расписанию

Внимание!

Начиная с версии 2.08.A.12.0-0, включение светодиодов возможно встроенными средствами CLI роутера:

Создать расписание и настроить его с 22:00 по 6:00 :

(config)> schedule 
ledCore::Schedule::Manager: Created schedule "led".
(config-sched)> action start 00 22 *
Core::Schedule::Manager: Updated schedule "led".
(config-sched)> action stop 00 6 *
Core::Schedule::Manager: Updated schedule "led".

Привязать к передней панели со светодиодами и созданному расписанию led, как выше:

(config)> system led shutdown front schedule led

И сохранить (объязательно!) конфигурацию:

(config)> system configuration save

Все, в назаченное время по расписанию передняя панель светодиодов отключается и включается. То же самое, что до этой прошивки было возможно только средствами OPKG (cron / crontab), как описано ниже.

-----

 

Продолжение серии тем по расписанию от @Aлександра Рыжова и некоторых моих ранее на вариации ограниение скорости по расписанию... Актуально, пока еще это не реализовано средствами самой прошивки роутера.... Честно признаюсь, что тема была даже больше создана с целю протестировать новый драйвер NTFS , который добавили в последнее обновление прошивки v2.08(AAUX.3)A7  и функции включения и отключения LED для Ultra-II / Giga-III, поэтому 100% гарантировать никто ничего не может, но у меня пока все работает нормально.

 

Сначала установите на свой роутер последнюю экспериментальную прошивку с поддержкой функции LED- гашения и зажигания светодиодов.


1. Только (!!!) для варианта работы на файловых системах EXT2/3/4, не будет работать на NTFS (vixie's cron). Для устрановки cron из busybox для NTFS см. ниже, п.2.

Внимание!!! Не ставить этот вариант, если у вас файловая система диска NTFS, будут сыпаться в лог ошибки по ядру, проверенно только что и 100%! Восстановление симлинка как ранее, на busybox и его установка старым способом opkg install --force-reinstall busybox из за новых введенных ограничений больше не работает, придется переустанавливать busybox вместе по новой с opkg!!! (только так я с этим управился лично).


• Инсталлируем планировщик cron

opkg install cron

• Если у вас еще непроисталлирован nano и (или) эмулятор командной строки CLI ndmq (только если его сносили по каким-то причинам, стандартно уже в системе), то сделаете это:

opkg install nano
opkg install ndmq

• редактируем конфигурационный файл cron:

nano /opt/etc/crontab

Отредактировать файл /opt/etc/crontab, добавив в него следующие строчки:
 

# Your LED control schedule for front leds #
48 15 * * * root ndmq -p 'system led shutdown front' -P message
49 15 * * * root ndmq -p 'no system led shutdown' -P message

Где 48 15 и 49 15 соответсвенно время включения в 15:48 и выключения в 15:49, меняйте на свое время, какое вам нужно. Для отключения всех светодиодов укажите вместо system led shutdown front следующее system led shutdown back  или все если хотите гасить, то system led shutdown all.


• Запустить cron вручную или перезагрузить роутер:

/opt/etc/init.d/S10cron start

 

 

 

2. Для варианта работы на файловых системах NTFS (busybox crontab). Этот вариант несколько сложнее первого, но на данной файловой системе должен работать без проблем и не вызывать ошибок ядра (так как на этой файловой системе нет правильной поддержки атрибутов для vixie's cron). Если у Вас ntfs - используйте именно этот вариант из установленного busybox.


• Если у вас еще непроисталлирован nano и (или) эмулятор командной строки CLI ndmq, то сделаете это:

opkg install nano
opkg install ndmq

• Для создания заданий crontab для него необходимо создать файл заднаний crontabs и его папку на вашем внешнем диске

mkdir -p /opt/var/spool/cron/crontabs


• Первый раз создать и потом всегда редактировать файл настроек нужно следующим вводом команды:

EDITOR='/opt/bin/nano' crontab -e


Формат файла cronttab немного отличается. Для апплета на одно поле меньше, т.к. не указывается от какого юзера выполнять задание. В первый раз откроется естественно совершенно пустой файл, в который мы пропишем следующее:

PATH=/opt/bin:/opt/sbin:/sbin:/usr/sbin:/bin:/usr/bin
# Your LED control schedule for front leds #
43 16 * * * ndmq -p 'system led shutdown front' -P message
44 16 * * * ndmq -p 'no system led shutdown' -P message


Где 43 16 и 44 16 соответсвенно время включения в 16:43 и выключения в 16:44, меняйте на свое время, какое вам нужно. Для отключения всех светодиодов укажите вместо system led shutdown front следующее system led shutdown back  или все если хотите гасить, то system led shutdown all.

Потом жмем Ctrl+X, соглашаемся Y, сохраняем файл. Посмотреть, что он действительно появился и сохранился, можно в папке на вашем диске, которую мы ранее создали /opt/var/spool/cron/crontabs (папка на вашем_Диске/var/spool/cron/crontabs)

• Чтобы crond каждый раз запускался автоматически,  файл-скрипт S05crond в папке /opt/etc/init.d


 

nano /opt/etc/init.d/S05crond


и наполним его следующим содержанием

Скрытый текст

 

#!/bin/sh
 

CRON="/opt/sbin/crond"

export PATH=/opt/bin:/opt/sbin:/sbin:/usr/sbin:/bin:/usr/bin

start() {
 $CRON -L /dev/null
}

 stop() {
 killall crond
}

 case "$1" in
 start)
     start
     ;;
 stop)
     stop
     ;;
 restart)
     stop
     start
     ;;
 *)
     echo "Usage: $0 {start|stop}"
     ;;
esac

 


Потом жмем Ctrl+X, соглашаемся Y, сохраняем файл. Посмотреть, что он действительно появился и сохранился, можно в папке /opt/etc/init.d (Ваш_Диск/etc/init.d)

• Делаем его исполняемым

chmod +x /opt/etc/init.d/S05crond

• Запускаем планировщик заданий через созданный скрипт в init.d:

/opt/etc/init.d/S05crond start

или просто перегрузив ваш роутер.

 

-------------------------------------------------------------------------
-------------------------------------------------------------------------

Если все в порядке, в установленное время появятся в логе строчки:
 

Скрытый текст

 

Sep 22 16:49:00ndmCore::Server: started obsoleted TCP Session 127.0.0.1:40413.

Sep 22 16:49:00ndmPeripheral::Manager: LED shutdown mode set to "front".

Sep 22 16:49:00ndmCore::Server: client disconnected.

Sep 22 16:50:00ndmCore::Server: started obsoleted TCP Session 127.0.0.1:40430.

Sep 22 16:50:00ndmPeripheral::Manager: LED shutdown mode reset.

Sep 22 16:50:00ndmCore::Server: client disconnected.

 

 

И светодиоды в установленное время погаснут и потом сново же загорятся.


* Почему-то сессию ndmq в последней версии v2.08(AAUX.3)A7 стал воспринимать как obsoleted (устаревшую), почему, я так не понял. Остается гадать, что именно происходит, к сожелению, может знающие прокомментируют. Но работает пока все вполне в пределах нормы.

 

Успехов!

Edited by Roman_Petrov
Дополнение от 18.12.2016
  • Thanks 1
Link to comment
Share on other sites

2 часа назад, Roman_Petrov сказал:

Это всегда хорошо, спасибо!

Это наш внутренний переход ndm на новый тип соединения сервисов с основным демоном с TCP на Unix Domain Stream Socket, но Entware и Debian будут поддерживать оба варианта в целях совместимости.

А про obsolete пишется чтобы юзеры Entware / Debian знали, что скоро поддержка TCP будет убрана и им нужно обновиться ;)

  • Thanks 1
Link to comment
Share on other sites

Всё делал по инструкции, но почемуто на моём Keenetic II светодиоды не гаснут.

~ # opkg install cron
Installing cron (4.1-3) to root...
Downloading http://pkg.entware-keenetic.ru/binaries/keenle/cron_4.1-3_keenle.ipk.
Configuring cron.
~ # opkg install ndmq
Package ndmq (1.0.2-1) installed in root is up to date.
~ # /opt/etc/init.d/S10cron start
 Starting cron...              done.

 

Содержимое файла crontab:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
*/1 * * * * root /opt/bin/run-parts /opt/etc/cron.1min    
*/5 * * * * root /opt/bin/run-parts /opt/etc/cron.5mins    
01 * * * * root /opt/bin/run-parts /opt/etc/cron.hourly    
02 4 * * * root /opt/bin/run-parts /opt/etc/cron.daily    
22 4 * * 0 root /opt/bin/run-parts /opt/etc/cron.weekly    
42 4 1 * * root /opt/bin/run-parts /opt/etc/cron.monthly    
# Your LED control schedule for front leds #
20 32 * * * root ndmq -p 'system led shutdown front' -P message
20 30 * * * root ndmq -p 'no system led shutdown' -P message


Дождался времени 20:30, но светодиоды не погасли.

Edited by beowulf0208
Link to comment
Share on other sites

26 минут назад, beowulf0208 сказал:

Всё делал по инструкции, но почемуто на моём Keenetic II светодиоды не гаснут.


# ---------- ---------- Default is Empty ---------- ---------- #
*/1 * * * * root /opt/bin/run-parts /opt/etc/cron.1min    
*/5 * * * * root /opt/bin/run-parts /opt/etc/cron.5mins    
01 * * * * root /opt/bin/run-parts /opt/etc/cron.hourly    
02 4 * * * root /opt/bin/run-parts /opt/etc/cron.daily    
22 4 * * 0 root /opt/bin/run-parts /opt/etc/cron.weekly    
42 4 1 * * root /opt/bin/run-parts /opt/etc/cron.monthly    
# Your LED control schedule for front leds #
20 32 * * * root ndmq -p 'system led shutdown front' -P message
20 30 * * * root ndmq -p 'no system led shutdown' -P message


Дождался времени 20:30, но светодиоды не погасли.

Синтаксис у вас неправильный:

Цитата

20 32 * * * root ndmq -p 'system led shutdown front' -P message
20 30 * * * root ndmq -p 'no system led shutdown' -P message

Должно быть так

32 20 * * * root ndmq -p 'system led shutdown front' -P message
30 20 * * * root ndmq -p 'no system led shutdown' -P message

А вообще, если вы хотели выключить в 20:30 и снова включить в 20:32 (а не выключить в 20:32 и потом через день включить в 20:30 на 2 минуты), то так:

 

Цитата

30 20 * * * root ndmq -p 'system led shutdown front' -P message
32 20 * * * root ndmq -p 'no system led shutdown' -P message

 

Edited by Roman_Petrov
Link to comment
Share on other sites

12 минуты назад, TheBB сказал:

`opkg update && opkg upgrade` ;)

Быстро, молодцы! Спасибо за подсказку.

P.S. Однако по ходу еще:

Скрытый текст

~ # opkg update
Downloading http://pkg.entware-keenetic.ru/binaries/keenle/Packages.gz.
Updated list of available packages in /opt/var/opkg-lists/keenle.
~ # opkg upgrade
~ # opkg list ndmq
ndmq - 1.0.2-1 - NDM Query utility
~ #

Во всяком случае у меня ничего не обновилось, а утром еще было:

Скрытый текст

Core::Server: started obsoleted TCP Session 127.0.0.1:47441

 

Edited by Roman_Petrov
Link to comment
Share on other sites

  • 2 weeks later...

На официальной прошивке версии 2.06.C.0  данный способ будет работать или нет? Смущают ваши слова "последнюю экспериментальную прошивку с поддержкой функции LED- гашения и зажигания светодиодов." Поэтому начал сомневаться в возможностях установленной прошивки.

Пробовал управлять светодиодами програмным путём - работает. Для этого вводил комманды:

phr_ctl -p SYS GREEN off GREEN off

phr_ctl -p SYS GREEN off GREEN on

phr_ctl -t on

phr_ctl -t off

Хочется управлять светодиодами таким образом чтоб все светодиоды гасли в 22:00 (вечером) и загорались снова в 7:00 (утром следующего дня) и так каждый день. Чтоб спать не мешали.)) Если не трудно, то напишите пожалуйста подходящий конфиг фаил (crontab) и выложите его здесь на форуме в виде вложения к сообщению. Я пробовал написать, но у меня почему то светодиоды не гаснут по расписанию.

Edited by beowulf0208
Link to comment
Share on other sites

52 минуты назад, beowulf0208 сказал:

На официальной прошивке версии 2.06.C.0  данный способ будет работать или нет? Смущают ваши слова "последнюю экспериментальную прошивку с поддержкой функции LED- гашения и зажигания светодиодов." Поэтому начал сомневаться в возможностях установленной прошивки.

Пробовал управлять светодиодами програмным путём - работает. Для этого вводил комманды:

phr_ctl -p SYS GREEN off GREEN off

phr_ctl -p SYS GREEN off GREEN on

phr_ctl -t on

phr_ctl -t off

Хочется  выложите его здесь на форуме в виде вложения к сообщению. Я пробовал написать, но у меня почему то светодиоды не гаснут по расписанию.

Вам нужно было пробовать в cli вводить команды 

system led shutdown front

no system led shutdown

Но, насколько я помю (не хочется поднимать тему уже), поддержки этих команд еще не было на этой 2.06 (могу и ошибаться, не проверил).

Команды группы phr_ctl были началом данного направления и были направлены на включение и выключение отдельных светодиодов, например sys (системного) и в нашем случае не так удобно соответственно.

Ну а так, чтобы сильно не заморачиваться, буквально недавно чудесными действиями @Padavan, он буквально вдохнул жизнь в устройства с процессорами с устаревшим ядром прямо чудесным образом, и была добавлена для 2.08 прошивки и вашего роутера  , качайте, ставьте на ваш роутер и делаете все в точности, как написано в шапке и заработает. 

Edited by Roman_Petrov
Link to comment
Share on other sites

К сожалению команды не поддерживаются. Не хочется ставить стороннюю не официальную прошивку, думаю что в ней много глюков. Я всётаки больше доверяю официальным прошивкам.

Image 2.jpg

Edited by beowulf0208
Link to comment
Share on other sites

  • 1 month later...
В 06.10.2016 в 17:36, beowulf0208 сказал:

На официальной прошивке версии 2.06.C.0  данный способ будет работать или нет? Смущают ваши слова "последнюю экспериментальную прошивку с поддержкой функции LED- гашения и зажигания светодиодов." Поэтому начал сомневаться в возможностях установленной прошивки.

Пробовал управлять светодиодами програмным путём - работает. Для этого вводил комманды:

phr_ctl -p SYS GREEN off GREEN off

phr_ctl -p SYS GREEN off GREEN on

phr_ctl -t on

phr_ctl -t off

Хочется управлять светодиодами таким образом чтоб все светодиоды гасли в 22:00 (вечером) и загорались снова в 7:00 (утром следующего дня) и так каждый день. Чтоб спать не мешали.)) Если не трудно, то напишите пожалуйста подходящий конфиг фаил (crontab) и выложите его здесь на форуме в виде вложения к сообщению. Я пробовал написать, но у меня почему то светодиоды не гаснут по расписанию.

Прошивка v2.05(AAGK.4)C6. Использую команды:

30 22 * * * root ndmq -p 'system led shutdown all' -P message
30 10 * * * root ndmq -p 'system no led shutdown' -P message

 

Edited by TheBB
ошибка
Link to comment
Share on other sites

  • 4 weeks later...

Здравствуйте! Я правильно понимаю, что единожды введенная команда "system led shutdown front" является приоритетной по отношению к расписанию, заданному в cron'е?  

Link to comment
Share on other sites

7 минут назад, MarkTM сказал:

Здравствуйте! Я правильно понимаю, что единожды введенная команда "system led shutdown front" является приоритетной по отношению к расписанию, заданному в cron'е?  

Нет, это не так, приоритет одинаковый. Результатом работы расписания через него тоже будет отданная команда в CLI через ndmq, например, при наступлении времени отключения подается команда "system no led shutdown" и светодиоды в любом случае загорятся. Другое дело, что использование внешнего расписания становиться бессмысленным, когда можно все сделать проще встроенным. 

Link to comment
Share on other sites

7 минут назад, MarkTM сказал:

Я только начал ) И последнее: какой командой вызвать просмотр созданного расписания и чем его удалить?

Если вы имеете в виду встроенное расписание, CLI, то:

1) show schedule или конкретного вашего расписания show schedule название_вашего_расписания

2) удалить no schedule название_вашего_расписания

Если внешнего, по крону, то смотрите в шапке, там все расписано подробно.

  • Thanks 1
Link to comment
Share on other sites

  • 1 month later...
18 минут назад, Mamay сказал:

Ещё один. Нет такой команды и не будет!

A как же system led shutdown back ???

  • Thanks 1
Link to comment
Share on other sites

Привет форумчане!

Спасибо Roman_Petrov за тему про светодиоды, теперь можно спать (и не только) спокойно :)

1) Установил Ubuntu 16, как вторую систему, после Windows 8.1. Ubuntu создала загрузчик Grub2 с выбором системы при загрузке Ubuntu или Windows.

Отформатировал в Ubuntu флешку в EXT4, установил EntWare 3.x      для Keenetic Giga III.

Для форматирования, сначала, я попробовал рекомендованную под Windows EaseUS Partition Master Home Edition. Программа час или два форматировала флешку 16Гб в EXT3, так и не закончила, пробовал два раза, зависала. EXT4 там не нашёл, подсовывала свой Cleaner системы и прочее, удалил её.

Первый вариант настройки Cron у меня не работает, как и у Buha и у beowulf0208.
Мне кажется, так как я еще не завсегдатай Linux, первый вариант настройки Cron, правкой файла /opt/etc/crontab  неправильный.

Второй вариант работает, через команду crontab -e, после чего, можно проверить созданные задачи через crontab -l

2) Для назначения редактора по умолчанию, после перезагрузки:

Устанавливаем Midnight Commander
install opkg mc

запускаем Midnight Commander
mc

Переходим в папку root
Выделяем файл .profile, нажимаем F4 и добавляем строку ниже
export EDITOR=mcedit
или
export EDITOR=nano
Сохраняем изменения - нажать F2
Выход - Нажать два раза Esc

Для закрытия Midnight Commander можно нажать F10 или скрыть панели Ctrl+O.

Проверяем:
Перезагружаемся
reboot now

Проверяем текущий редактор:
echo $EDITOR

Работаем с планировщиком:
crontab -e

Проверяем задачи планировщика:
crontab -l

С уважением, Netman.

  • Thanks 1
Link to comment
Share on other sites

1 час назад, Netman сказал:

Привет форумчане!

Спасибо Roman_Petrov за тему про светодиоды, теперь можно спать (и не только) спокойно :)

1) Установил Ubuntu 16, как вторую систему, после Windows 8.1. Ubuntu создала загрузчик Grub2 с выбором системы при загрузке Ubuntu или Windows.

Отформатировал в Ubuntu флешку в EXT4, установил EntWare 3.x      для Keenetic Giga III.

Для форматирования, сначала, я попробовал рекомендованную под Windows EaseUS Partition Master Home Edition. Программа час или два форматировала флешку 16Гб в EXT3, так и не закончила, пробовал два раза, зависала. EXT4 там не нашёл, подсовывала свой Cleaner системы и прочее, удалил её.

Первый вариант настройки Cron у меня не работает, как и у Buha и у beowulf0208.
Мне кажется, так как я еще не завсегдатай Linux, первый вариант настройки Cron, правкой файла /opt/etc/crontab  неправильный.

Второй вариант работает, через команду crontab -e, после чего, можно проверить созданные задачи через crontab -l

2) Для назначения редактора по умолчанию, после перезагрузки:

Устанавливаем Midnight Commander
install opkg mc

запускаем Midnight Commander
mc

Переходим в папку root
Выделяем файл .profile, нажимаем F4 и добавляем строку ниже
export EDITOR=mcedit
или
export EDITOR=nano
Сохраняем изменения - нажать F2
Выход - Нажать два раза Esc

Для закрытия Midnight Commander можно нажать F10 или скрыть панели Ctrl+O.

Проверяем:
Перезагружаемся
reboot now

Проверяем текущий редактор:
echo $EDITOR

Работаем с планировщиком:
crontab -e

Проверяем задачи планировщика:
crontab -l

С уважением, Netman.

Вам захотелось поиграться с пакетами? Это ведь функция доступна из прошивки, без всяких доп.пакетов.

Link to comment
Share on other sites

10 минут назад, AndreBA сказал:

Вам захотелось поиграться с пакетами? Это ведь функция доступна из прошивки, без всяких доп.пакетов.

Я вообще, если честно, не вкурил о чём пост. Как в GNU/Linux назначить дефолтный редактор? 

Link to comment
Share on other sites

  • 3 weeks later...

Здравствуйте.

Время в cron и в веб роутера не совпадает. При смене часового пояса на роутере  время собйтий cron в журнале не меняется. Cron работает по своему часовому поясу не зависимо от астроек роутера.

Помогите разобраться. Entware-3x, Keenetic DSL, v2.08(AAGK.0)C2

2017-05-04_122434.jpg.1cfd8ca3e795a106dba56e91f6b89daf.jpg

Link to comment
Share on other sites

17 минут назад, Buha сказал:

Время в cron

В каком именно cron - в entware их два разных?

Приложения Entware определеют время или по файлу /opt/etc/localtime или по переменной TZ в которой может быть записано ":/etc/opt/localtime" (с двоеточием) или же значение файла с таймзоной. Насколько помню, прошивка создает переменную TZ в другом формате. За записи в журнале отвечает прошиква, что она там пишет - к разработчикам.

Если cron срабатывает в неправильное время (на время в логе не обращайте внимание), то проверьте правильность задания /opt/etc/localtime, задайте правильное значение TZ при запуске cron или же сделайте в скрипте запуска cron `unset TZ`

  • Thanks 1
Link to comment
Share on other sites

  • 1 month later...

Здравствуйте. Как в cron записать две или более команды в одну строку, что бы они выполнялись последовательно?

ndmq -p 'no system led shutdown' -P message
ndmq -p 'system configuration save' -P message

 

Link to comment
Share on other sites

3 часа назад, Buha сказал:

Здравствуйте. Как в cron записать две или более команды в одну строку, что бы они выполнялись последовательно?


ndmq -p 'no system led shutdown' -P message
ndmq -p 'system configuration save' -P message

 

Сделайте скрипт, запихав туда ваши команды. Из cron толкайте этот скрипт...

Link to comment
Share on other sites

3 часа назад, Buha сказал:

Как в cron записать две или более команды в одну строку

Или, если не хочется все-таки делать скрипт, то можно сделать так (команда cmd2 выполнится, если предыдущая команда cmd1 выполнилась без ошибок):

cmd1 && cmd2

Т.е. в вашем случае:

ndmq -p 'no system led shutdown' -P message && ndmq -p 'system configuration save' -P message

 

Link to comment
Share on other sites

4 часа назад, Buha сказал:

Здравствуйте. Как в cron записать две или более команды в одну строку, что бы они выполнялись последовательно?


ndmq -p 'no system led shutdown' -P message
ndmq -p 'system configuration save' -P message

 

ndmq -p 'no system led shutdown' -P message && ndmq -p 'system configuration save' -P message

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...