2016年8月17日水曜日

電脳目覚まし時計化計画 まとめ

この前、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 件のコメント:

コメントを投稿