ポケモン30周年だし、ポケモン目覚まし時計をラズパイzeroで作る#2 コーディング部分

スポンサーリンク
Uncategorized

はじめに

前回は目覚まし時計のプログラムまで作成した。

今回は実際にめざまし時計として動くようにする。

前回の記事でも記載したが、以下のようにXに完成した様子は投稿している。

目覚まし用のmp3ファイルを作成する

まずは、目覚まし時計用の音楽をmp3ファイルとして用意する。

僕は以下のポケットモンスターのファンタジーオーケストラアレンジの動画を使用させていただいた。

これをmp3ファイルとしてダウンロードして、(ダウンロードはネット上にある無料で使用できるサービスを使用)

目覚ましに使う部分をトリミングした。

トリミングはReal Playerを使用した。

スピーカーを動かす

実際にラズパイに入って設定を行い、目覚まし時計が動くことを確認する。

まずはラズパイにsshで入って以下のコマンドを実行する。

$ sudo apt update
$ sudo apt install -y mpg123 alsa-utils

次に以下のコマンドを実行する。

$ aplay -l

すると、以下のような出力がされる。

**** List of PLAYBACK Hardware Devices ****
card 0: ・・・【略】・・・
card 1: Audio [KM_24bit96khz Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

スピーカーが接続されていると「card 1: Audio~」のところが表示される。

次に.asoundrcの中の設定を確認する。

$ cat ~/.asoundrc
pcm.!default {
  type hw
  card 1
}
ctl.!default {
  type hw
  card 1
}

スピーカーが動くかを確認するために以下のコマンドを実行する

$ speaker-test -c2 -twav -l1

実行すると、スピーカーからテスト用の女の人の声が聞こえてくるのでびっくりする。

音楽をかけられるか確認するコマンドは以下。

$ mpg123 sounds/alarm.mp3

プログラムを動かす

scpで用意したファイルをラズパイ側の作業フォルダにコピーする。

前回のpythonもそうだけど、mp3ファイルも、あと後述するserviceファイルもscpでラズパイ上に持ってくる。

以下のコマンドもラズパイ上で行っていく。

pythonで使用するモジュールをインストールするために以下のコマンドを実行する。

$ pip3 install --break-system-packages jpholiday

アラームの時間を設定するコマンドは以下。設定は平日と週末の土日と祝日で設定できる。

$ python3 alarm.py set weekday 07:05
$ python3 alarm.py set weekend 07:30
$ python3 alarm.py set holiday 07:30

各曜日でそれぞれ音楽を変えたいときは以下のように設定ができる。

$ python3 alarm.py sound mon sounds/a.mp3
$ python3 alarm.py sound tue sounds/b.mp3
$ python3 alarm.py sound wed sounds/c.mp3
$ python3 alarm.py sound thu sounds/d.mp3
$ python3 alarm.py sound fri sounds/e.mp3
$ python3 alarm.py sound sat sounds/f.mp3
$ python3 alarm.py sound sun sounds/g.mp3

scpでラズパイに持ってきたalarm-clock.serviceを/etc/systemd/system/に置いて(コピーして)、サービスとして起動することになる。

alarm-clock.serviceは以下のような内容。

[Unit]
Description=Python Alarm Clock
After=network.target sound.target

[Service]
Type=simple
User=user1
WorkingDirectory=/home/user1/alarm_clock
ExecStart=/usr/bin/python3 /home/user1/alarm_clock/alarm.py run
Restart=on-failure

[Install]
WantedBy=multi-user.target

alarm.pyをバックグラウンド常駐させる設定している。

このserviceファイルを/etc/systemd/system/に配置し、設定するために以下のコマンドを実行していく。

$ sudo cp ~/alarm_clock/alarm-clock.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now alarm-clock
$ sudo systemctl status alarm-clock

alarm-clockサービスが動いていることを確認する。

● alarm-clock.service - Python Alarm Clock
     Loaded: loaded (/etc/systemd/system/alarm-clock.service; enabled; preset: enabled)
     Active: active (running) ....

最後に

実際に動くと感動した。

タイトルとURLをコピーしました