CrazyAleks

Профи в Сат-ТВ
Поставил себе задачу разобраться с переводом приёмника в режим standby после включения приёмника (может быть полезно при пропадании писания и последующем его включении)

Скрипта который сделает это корректно не обнаружил, полез копаться во всех исполняемых файлах в папке /MMP/usr/bin с целью найти неизвестные ключи для запуска программ, чтобы использовать недокументированные фичи для более удобной работы с приёмником типа vfd_display для выключения ламочек и включения вентилятора.
И НАШЁЛ !good!

Исполняемый файл /MMP/usr/bin/td210_ip_remote судя из названия предназначен для удалённого управления приёмником по IP.
При запуске без параметров выдаёт формат запуска первый параметр IP адрес возможно получится извлечь из этого какую-то пользу для мульти-рум применения (пока использую как localhost), второй параметр определяет режим работы с двумя основными режимами разобрался достаточно хорошо:

1. /MMP/usr/bin/td210_ip_remote 127.0.0.1 N
переводит приёмник в диалоговый режим ввода команд, на каждое нажатие клавиш на клавиатуре (цифровых и букв верхнего ряда от q до ] ) в консоли есть диагностика, что за команду мы посылаем и приёмник на неё реагирует. Количество и тип команд примерно соответствует числу кнопок на пульте ДУ, их перечень можно увидеть если просмотреть выполняемый файл в редакторе как текстовый.

2. /MMP/usr/bin/td210_ip_remote 127.0.0.1 S /path/file
запускает программу в режиме выполнения скрипта из файла
в файле должны быть записаны команды типа: HOME, MENU, VOLUP, MUTE и тп.
не разобрался пока как создать скрипт с несколькими командами, если сразу после первой идёт юниксовый признак конца строки (байт 0A) программа ругается и команду не выполняет.
Нашёл выход ставить после команды дополнительный пробел ;)
Если общими силами разберёмся какой должен быть разделитель между командами - можно заставить приёмник сделать что-то сложное, например, переключиться на нужный канал, убавить громкость, перезапустить эмулятор и тд и тп всё на что хватит фантазии :)

Для иллюстрации применения привожу первый полезный скрипт
#!/bin/sh
#
# Go to SLEEP script for AzBox
# /DISK2/etc/start.d/S20Sleep
# (C) CrazyAleks

start() {

echo "SLEEP " > /tmp/sleep.cmd
sleep 1
echo "OK " >> /tmp/sleep.cmd
/MMP/usr/bin/td210_ip_remote 127.0.0.1 S /tmp/sleep.cmd

}

stop() {

rm /tmp/sleep.cmd

}

restart() {

stop
start

}

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

exit $?

Собственно вот :pardon:
Кому интересно - предлагаю развивать тему и делиться удачным опытом.

В скрипт внесены изменения, добавлена вторая команда (типа нажатие кнопки ОК на пульте) в standby переходим сразу, без ожидания 10 секунд.

Команды в скрипте нужно писать по одной в каждой строке,
после команды должен стоять пробел (признак конца строки недопустим)
echo SLEEP > /tmp/sleep.cmd - НЕ ПРАВИЛЬНО
echo "SLEEP " > /tmp/sleep.cmd - ПРАВИЛЬНО

Для тех кто собирается регулярно пользоваться скриптами, можно не генерировать командные файлы каждый раз при запуске скрипта,
а создать папку типа /DISK2/ect/command в разделе доступном на запись для удобной работы: создания резервных копий и переноса на другие приёмники, в таком случае команда будет иметь вид:
/MMP/usr/bin/td210_ip_remote 127.0.0.1 S /DISK2/etc/command/sleep.cmd
 
Последнее редактирование:

VadimIv

Moderator
Команда форума
Подразумевается, что ресивер должен уйти в стендбай после загрузки если скрипт положить в /DISK2/etc/start.d/S90Sleep?
 
Последнее редактирование:

CrazyAleks

Профи в Сат-ТВ
Ага, это написано в шапке скрипта ;)
подсознательно должно следовать из названия скрипта и временного файла ;)
можно не писать сам скрипт, наберите в консоли две завтные строчки из процедуры start

программа засылает комаду внутрь vfd_display или Dstar и происходит всё тоже самое,
как будто мы чесно направили на приёмник пульт ДУ и нажали кнопку включения питания.
Возникает меню выключения обратный отчёт от 10 до 1 и приёмнк уходит в слип.
Никаких неформальных действи, только команда не с пульта а из консоли.
Так-же выглядят на экране последствия от других команд типа MENU или MUTE.

Помоему полезный горшочек, повторюсь - применений можно найти массу.
Если у всех заработало и даже вопросов нет - может спасибо кто скажет ;) хотябы по совокупности:
раздел под свап
мультирум (nfs server + nfs client)
скрипт для самбы с доступом по имени и паролю
включение вентилятора при переходе в слип
переход в слип при включении
монтировании DVD сфайловойсистемой UDF
Может Хьюго и мне будет приёмники бесплато высылать ;)

PS. должно работать и с 20 и с 90 и из консоли в любой момет, проверно
возможно когда пробовал S20Sleep что-то было забыло, например атрибуты 755.
Цифры влияют лишь на порядок запуска скриптов, в файле S.sh запуск всех скриптов оформлен как цикл
for i in /DISK2/etc/start.d/S??* ; do
$i start
поэтому мадшие запускаются раньше, проверено, сдела так
в 10 создаю каталоги и монтирую в ручную hbd3
в 20 загоняю в слип
в 30 запусаются приложения ipkg
в 50 запускается самба
в 90 делаю renice на всё это влючая unfsd, portmap, smbd & transmission
 
Последнее редактирование:

VadimIv

Moderator
Команда форума
У меня заработал после переименования в S90Sleep. Точнее, на сколько я понял, его порядковый номер должен быть последним.
А нет команды, переводящей в слип без появления меню с отсчетом (как в старых прошивках)?
 
Последнее редактирование:

CrazyAleks

Профи в Сат-ТВ
А я незнаю как было в стрых прошивках, моему опыту и приёмикам месяц,
получил их, первый раз включил и начал осваивать 3 декабря 2010 :)
Мои прошивки 4717 и 5209 :)
Другого более красивого способа я не знаю.
Описанная в первом сообщении темы программа эмитирует команды пульта БЕЗ пульта,
исходя из её возможностей не знаю как отправить приёмник в слип без этого меню.
Тему хочется развивать в ключе возможностей этой программы,
если Вы можете с пульта выключить без меню выключения - готов попробовать это эмулировать.
Если интересно вылючать как-то по другому давайте пойдём сюда http://forum.sat-expert.com/obsujde...67-standby-rejim-posle-vkl-vykl-pitaniia.html
Вы предложите вариант как это сделать, я попробую запрограмировать.
 
Последнее редактирование:

RudElph

Пользователь
/MMP/usr/bin/td210_ip_remote 127.0.0.1 S /path/file
запускает программу в режиме выполнения скрипта из файла
в файле должны быть записаны команды типа: HOME, MENU, VOLUP, MUTE и тп.
не разобрался пока как создать скрипт с несколькими командами, если сразу после первой идёт юниксовый признак конца строки (байт 0A) программа ругается и команду не выполняет.
Нашёл выход ставить после команды дополнительный пробел ;)

Если поковырятся в программах, которые управляют тюнером через webif, то можно увидеть, что в файл /path/file зыписывается команда дважды через пробел, т.е. "VOLUP VOLUP" и т.п.
А подряд несколько команд наверно надо задавать в разных строчках, с новыми значениями в файле.
Например:
echo "SLEEP SLEEP" > /tmp/sleep.cmd
/MMP/usr/bin/td210_ip_remote 127.0.0.1 S /tmp/sleep.cmd
echo "OK OK" > /tmp/sleep.cmd
/MMP/usr/bin/td210_ip_remote 127.0.0.1 S /tmp/sleep.cmd
 
Последнее редактирование:

CrazyAleks

Профи в Сат-ТВ
Спасибо за комментарий, попробовал так - не проходит вторая команда,
похоже повторяют именно для того чтобы не было байта 0Аh
Я нашёл более красивый способ удовлетворить требованиям при разборе строки команд интерпритатором - пробел в конце.

Пользуясь тем что залез в консоль, решил попробовать разделители
"SLEEP OK " не получилось, а вот двумя строками, где каждая заканчивается пробелами - СРАБОТАЛО, теперь не надо ждать обратного отсчёта, уходим в strandby на 10 секунд бустрее :)
Итоговый вариант команды (в первом посте тоже поправил):
echo "SLEEP " > /tmp/sleep.cmd
echo "OK " >> /tmp/sleep.cmd
/MMP/usr/bin/td210_ip_remote 127.0.0.1 S /tmp/sleep.cmd

зачем 2 раза дёргать программу если она в режиме S умеет работать со скриптом из нескольких команд ;)
 

VadimIv

Moderator
Команда форума
Итоговый вариант команды (в первом посте тоже поправил):
Все равно есть отсчет...
А вот так заработало:
Код:
echo "SLEEP " > /tmp/sleep.cmd
sleep 5
echo "OK " >> /tmp/sleep.cmd
/MMP/usr/bin/td210_ip_remote 127.0.0.1 S /tmp/sleep.cmd
 
Последнее редактирование:

CrazyAleks

Профи в Сат-ТВ
Для меня пауза между выводом строк во временный файл кажется более чем странной.
если приёмник чем-то в это время занят и реально без паузы не работает - думаю достаточно одной секунды - sleep 1 (добавил, чтобы скрипт был универсальным).
Создание командных файлов в папке /DISK2/ect/command тоже решает эту проблему.
 
Последнее редактирование:

VadimIv

Moderator
Команда форума
А если попробовать сделать:
echo "SLEEP " >/tmp/sleep.cmd && echo "OK " >>/tmp/sleep.cmd
Не работает - обратный отсчет.
Дкмаю нужно выдернуть и использовать скрипт отключения (ужода в стендбай) из старых прошивок.
 

CrazyAleks

Профи в Сат-ТВ
Ребята, у меня всё работает и переходит в слип сразу, без обратного отсчёта
и на Ultra с прошивкой 5209 и на Preminu + с прошивкой 4717
без всяких слипов между операциями вывода во временный файл.
А что в файле можно проверить (я смотрю в фаре по F3 чтобы убедиться на наличии пробела в конце строки будут 2 байта 20 0А)

echo "SLEEP " > /tmp/sleep.cmd ; echo "OK " >> /tmp/sleep.cmd
так команды запускаются одна за другой, если результат будет НЕ удовлетворительный пробовать.
echo "SLEEP " > /tmp/sleep.cmd ; sleep X ; echo "OK " >> /tmp/sleep.cmd
проверять и подбирать задержку в секундах.

Вообще меня и обратный отсчёт не сильно напрягает, вопрос отправки приёмника в слип при первом включении решён.
Работа второй команды в скрипте интересует больше для нужд других, более сложных скриптов, где потребуется исполнять несколько команд подряд - вот тут надёжность исполнения каждой будет важна.
 
Последнее редактирование:
  • Like
Реакции: werk

RudElph

Пользователь
echo "SLEEP " > /tmp/sleep.cmd ; echo "OK " >> /tmp/sleep.cmd
и
echo "SLEEP " > /tmp/sleep.cmd && echo "OK " >> /tmp/sleep.cmd
могут обрабатываться по-разному. Хотя это наверно зависит от шелла. Кстати, насколько я помню, при установке priority manager у меня поменялась оболочка.
 

werk

Пользователь
Чёт у меня не получается, может что-то не так делаю?
версия софта 0.9.3877sd elit hd
Сделал файлик, закинул в директорию, как указано в первом посте, атрибуты 755. Никаких изменений.
спс
 

CrazyAleks

Профи в Сат-ТВ
Файл автоматом запускается при включении (перезагрузке) приёмника
для тестирования работает или нет, если работает то как можно запускать его руками из консоли (telnet)
"/DISK2/etc/start.d/S20Sleep start"(именно так с полным путём и именем, как вы его назвали)
из обязательных символов в названии дольшая S и две цифры.
Запускайте из консоли - и результат выполнения пишите сюда, посмотрю что не так.
 

werk

Пользователь
MMP[~]$ /DISK2/etc/start.d/S20Sleep start
-sh: /DISK2/etc/start.d/S20Sleep: No such file or directory
 

CrazyAleks

Профи в Сат-ТВ
нет этого файла в папке, или где-то в имени опечатка, или не соблюдены дольшие и маленькие буквы:
смотрим как конкретно называется файл у вас "ls /DISK2/etc/start.d"
и запускаем так, как он называется у вас (буква в букву).
 
Последнее редактирование:

werk

Пользователь
MMP[~]$ /DISK2/etc/start.d/S90Sleep start
: bad interpreter: No such file or directory
MMP[~]$ ls /DISK2/etc/start.d/S90Sleep start
ls: start: No such file or directory
/DISK2/etc/start.d/S90Sleep*
 
Сверху