この前、OSを入れ替えたら目覚ましが動かなくなった。
原因は、ライン出力が勝手にミュートになることと、
MOCのオプション設定の仕方が微妙に変わってたこと。
ひとつ目は、音声ファイル再生用のスクリプトに、
amixer sset Master on 100%
の一行を追加し、
ふたつ目は、
-o pepeat を -o r
に変更することで解決した。
今年の税理士試験が終わり、風邪も治ったところで、目覚ましのまとめ。
概要:
晩にPCを使ったあと、一定の方法で電源を切る。
翌朝、自動でPCの電源が入り、しばらく音声ファイルを再生した後、
電源が切れる。
種明かしをすると、
rtcwakeを使って指定した時刻(例えば5時57分)にPCを起動すると、
cronによって所定のスクリプトが(例えば6時に)実行される、というだけ。
環境:
OSは、Ubuntu 16.04 LTS 日本語 Remix
マザーボードは、ASRock N3150DC-ITX
百円ショップで買ったキューブ型スピーカー2個
音楽再生ソフトMOC(MusicOnConsole)インストール済み
用意するファイル(4つとも/home/user/に置いておく):
wakeup.mp3 :再生用の音声ファイルとして好きなものを用意
(おいらは、15分ぐらいの鳥のさえずりを使ってる。)
mycrontab.txt :crontabにスケジュールを設定するためのテキストファイル
myplaymusic.sh:cronに呼び出される、音声ファイル再生用スクリプト
mysuspenduntile.sh:起動時刻を指定してPCをシャットダウンするためのスクリプト
手順:
1.crontabへスケジュールを書き込む:
sudo -i
crontab /home/user/crontab.txt
crontab -l
2.毎晩、PCでの作業を終えたあと、スクリプトを呼び出して電源OFF
sudo /home/user/mysuspenduntile.sh
ファイルの内容:
mycrontab.txt --------------------------------------------
00 06 * * * /home/user/myplaymusic.sh
myplaymusic.sh -------------------------------------------
#!/bin/bash
amixer sset Master on 100%
mocp -S
sleep 5
mocp -o r -v -40 -l /home/user/wakeup.mp3
for (( i=1 ; i<9 ; i++ ))
do
sleep 90
mocp -v +10
done
sleep 900
mocp -s -x
sleep 3
/sbin/shutdown -P now
mysuspenduntile.sh ---------------------------------------
#!/bin/bash
WAKEUPTIME="5:57"
DESIRED=$((`date +%s -d "$WAKEUPTIME"`))
NOW=$((`date +%s`))
if [ $DESIRED -lt $NOW ]; then
DESIRED=$((`date +%s -d "$WAKEUPTIME"` + 24*60*60))
fi
killall rtcwake
rtcwake -m off -t $DESIRED
----------------------------------------------------
以上。
なお、mysuspenduntile.shは、次のコードのパクリです。
"Automatically sleep and wake-up at specific times"
http://askubuntu.com/questions/61708/automatically-sleep-and-wake-up-at-specific-times
0 件のコメント:
コメントを投稿