本記事はSLP KBIT AdventCalendar 2022の16日目の記事になります。
開発環境
- raspberry pi 3 model B
- Raspbian11(Codename=bullseye)
概要
ラズパイを使用して毎時0分になったときとSLPのサークル活動の開始と終了5分前に時報を鳴らすようにします。具体的にはcronでシェルスクリプトを定期実行することで実現します。実際に時間になったら流す音声ファイルはつくよみちゃんに喋ってもらいました。今回はmp3ファイルを使用するので、つくよみちゃんの音声ファイル(wav形式)は何らかの方法でmp3に変換してください。(wav mp3 変換 で検索検索ゥ)
cronの設定
cronの定期実行を記述するには以下のコマンドで設定ファイルを書き換えることができます。
crontab -e
以下が実際に記述した例です。
# 毎時0分になったらtime_signal(.sh)を実行する
0 * * * * export XDG_RUNTIME_DIR="/run/user/1000";/home/kbit02/2022_adc/time_signal
# 毎週水金の18:55分と20:55分になったらreport_start_and_end(.sh)を実行する
55 18,20 * * 3,5 export XDG_RUNTIME_DIR="/run/user/1000";/home/kbit02/2022_adc/report_start_and_end
シェルスクリプトの中身
今回は毎時0分になったら実行するシェルスクリプトとサークル活動の開始と終了時に実行するシェルスクリプトを分けて記述します。と言っても内容は変わらないので差分だけ示します。
#!/usr/bin/bash
time=`date +%H`
mpg321 --gain 25 "/home/kbit02/2022_adc/koefile/$time.mp3"
# 上は0分に実行するtime_signal.shで下はreport_start_and_end.sh
# mpg321 --gain 25 "/home/kbit02/2022_adc/koefile/report_file/$time.mp3"
mpg321はmp3ファイルを再生するためのコマンドで、以下のコマンドでインストールできます。
sudo apt-get install mpg321
--gain (数字) で音声ファイルを再生する際の音量を指定することができます。なお、実際に呼び出しているkoefileの中には00.mp3、01.mp3、…、23.mp3のmp3ファイルを配置しています。今回はtimeにシェルスクリプト実行時の時間(hour : 0~23)をdateコマンドによって代入し、koefileに入っている0.mp3~23.mp3のファイルを"$time.mp3"として呼び出しています。なおreport_fileの中には18.mp3と20.mp3(koefileの中にあるものとは別の物)を配置しています。
終わりに
これで部室に一人でいるときも寂しくなくなります。しかし一度欲が満たされるとさらに求めてしますのが生き物の性ですね。次は天気や気温、行事にあったことを言ってくれるようにしたり、人が部室に入ると声をかけてくれる機能を作成したいと思います。最後まで見ていただきありがとうございました。