Модуль посылает команды ДУ через Ipod RC. Команды берутся из конфиг файла, файл можно редактировать из веб-интерфейса. Решение, конечно, далекое от идеала, но работает. Может кому пригодится.
Установка: в usr/local/etc/mos создаем директорию autoplay. Туда складываем autoplaysh, control и playradio.
Даем права чмод +x usr/local/etc/mos/autoplay/autoplaysh --> чмод = chmod, иначе не постит движок...
В /usr/local/etc/mos/scripts складываем autoplay.
Даем права чмод +x usr/local/etc/mos/scripts/autoplay
После этого в веб-интерфейсе появится AutoPlay. Оттуда его можно запустить или остановить как любой модуль. Там же можно отредактировать набор команд под свои нужды.
Команды вводятся по одной на строку и выполняются в порядке "сверху вниз". Комментарии (#) игнорируются. Если в строке обнаруживается целое число, оно интерпретируется как "пауза" (задержка) в милисекундах. Т.е. 500 = 0.5 сек. Если в строке обнаруживаются буквы, они интерпретируются как команда ду.
В приведенном ниже виде скрипт работает только на прошивке HD2 1.12.06 Rev3. На более ранних HD2 нужно поменять URL в autoplaysh с "http://127.0.0.1/cgi-bin/IpodCGI.cgi?id=0&command=" на "http://127.0.0.1/www/cgi-bin/IpodCGI.cgi?id=0&command=".
Конечно, стартовый скрипт можно объединить с основным, но данная структура хорошо подходит под дальнейшее развитие идеи (прицепить основной скрипт на кнопку пульта).
Oсновной скрипт autoplaysh:
- Code: Select all
#!/bin/sh
#
# description: executes remote commands via ipod RC interface.
#
##Global variables
AUTO_CONF=$1 #configuration file containing commands in format: <command> <delay>
#Check for a Config file
if [ -f "$AUTO_CONF" ]; then
##Read the Config file, ignoring lines with "#" as comments
sed '/^ *#/d;s/#.*//' "$AUTO_CONF" | while read LINE
do
DELAY=$LINE
COMMAND=$LINE
#strip non-numeric charachters from DELAY string
lft=${DELAY%%[0-9]*}
rght=${DELAY##*[0-9]}
temp=${DELAY#"$lft"}
DELAY=${temp%"$rght"}
#echo $DELAY
#strip non-alphabetic charachters from COMMAND string
lft=${COMMAND%%[a-z]*}
rght=${COMMAND##*[a-z]}
temp=${COMMAND#"$lft"}
COMMAND=${temp%"$rght"}
#echo $COMMAND
if [ "$DELAY" -gt 0 ]; then #Check if argument is a number
DELAY=$((${DELAY}*1000)) #convert delay to uS
usleep $DELAY #execute delay
fi
if [ "$COMMAND" ]; then #Check if argument is not an empty string
#send remote command
RC_CMD='wget ''http://127.0.0.1/cgi-bin/IpodCGI.cgi?id=0&command='${COMMAND}' -q -O /dev/null'
echo $RC_CMD
$RC_CMD
fi
done
else
echo "No Valid Configuration File Found"
exit 1
fi
Скрипт autoplay (запускает autoplaysh):
- Code: Select all
#!/bin/sh
#
# description: starts AutoPlay
#
case "$1" in
start)
echo "Starting Auto Play..."
/usr/local/etc/mos/autoplay/autoplaysh /usr/local/etc/mos/autoplay/playradio
;;
stop | restart | status | enable | disable)
;;
*)
echo "Usage: $0 {start|stop|restart|status|enable|disable}"
esac
exit $?
файл control:
- Code: Select all
Rev = 0.1
Name = Auto Play Radio
Edit = AutoPlay
Config = /usr/local/etc/mos/autoplay/playradio
файл конфигурации playradio:
- Code: Select all
#expected line format: <delay> or <command>, one or the other, one per line
#<delay> = integer, milliseconds
#<command> : right, left, up, down, select, return, home etc.
#terminate last line with line feed
10000
right
500
right
500
right
1000
select
1000
select
1000
select