はじめに
私事ですが、昨年9月にこどもが産まれました。
そして先日、妻がその子のためにくもんのうた200えほんを買いました。
この本に付属しているCDの曲を再生して歌ってあげたいのですが、スマホからは再生させたくないそうです。
しかし我が家にはCDコンポもありません。
そんな折、Amazon Echo Dot Max が安売りされていました。
さらにたまたま家にしばらく使っていなかった RaspberryPi 3B が転がっていました。
これらを組み合わせれば本を持ったままでも音声入力で楽曲を再生できそうです。
ということでラズパイに PlexMediaServer をインストールしてストリーミングサーバーにし、Alexa から操作して楽曲を再生できるようにしたので、備忘録を兼ねて構築方法を記します。
0. 用意するもの
- ラズパイ
- SDカード(今回は32GBのものを使用)
- メディア保存用USBメモリ
- Amazon Echo
- Plex Media Server のアカウント
1. ラズパイのOSを準備する
まずはラズパイに使うSDカードをSD Card Formatterなどでフォーマットします。
そしてRaspberry Pi ImagerでOSイメージを書き込みます。
今回はストリーミングサーバーとして運用するので RaspberryPi OS Lite (32-bit) を選択しました。
また、ここでSSHを有効にしておくとこの後の作業がスムーズです。
2. ラズパイのセットアップ
SDカードが準備できたらラズパイに挿入して電源を投入します。
あとLANケーブルでルーターにも接続しておきます。
PCでコマンドプロンプトを開き、ping [ラズパイの名前].localでラズパイのIPを確認して、ssh [ユーザー名]@[ラズパイのIPアドレス]コマンドでSSH接続します。
パスワードの入力を求められるので、設定したものを入力してログインします。
ログインできたらsudo apt update && sudo apt upgrade -yコマンドでパッケージを更新します。
3. PlexMediaServer のインストール
HTTPS経由でリポジトリを扱うために
- apt-transport-https
- curl
- gnupg2
をインストールします。
sudo apt install apt-transport-https curl gnupg2 -y
そしてGPGキーを追加します。
curl https://downloads.plex.tv/plex-keys/PlexSign.key | gpg --dearmor | sudo tee /usr/share/keyrings/plex-archive-keyring.gpg > /dev/null
最後にリポジトリを登録します。
echo "deb [signed-by=/usr/share/keyrings/plex-archive-keyring.gpg] https://downloads.plex.tv/repo/deb public main" | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
私の場合はここでエラーが発生しました。
調べてみるとタイムリーな不具合のようでした。
https://forums.plex.tv/t/issue-upgrading-to-pms-1-43-0-10467-on-debian-and-rhel-based-distributions/935847
上記 Isuue でも記載されているように、ここに記載されている自動インストールコマンドを実行すれば解決しました。
curl -LsSf https://repo.plex.tv/scripts/setupRepo.sh | sudo bash
インストールが完了したら動作確認します。
sudo systemctl status plexmediaserver
4. USBメモリの自動マウント設定
ラズパイにUSBメモリをマウントし、lsblkコマンドで接続したUSBメモリがシステム上でどう認識されているかを確認します。(sda1などの名前で表示されます)
次にsudo blkidコマンドでUUIDを確認します。
/dev/sda1: UUID="XXXX-XXXX" TYPE="vfat"のような行を探し、この UUID と TYPE をメモしておきます。
sudo mkdir -p /mnt/musicコマンドでPlexがアクセスするためのフォルダを作成します。(フォルダ名は自由です)
このフォルダをPlexが読み取れるように権限を付与します。
sudo chown -R plex:plex /mnt/music
あとは fstab を編集してUSBメモリのマウント設定を記述します。
sudo nano /etc/fstabコマンドで fstab を開き、ファイルの末尾以下を追加して保存します。
UUID=[UUID] /mnt/music [TYPE] defaults,nofail 0 2
※[]は不要
保存したらsudo mount -aコマンドで設定を反映させ、df -hコマンドで正しくマウントされたかを確認します。
/mnt/musicにUSBメモリの容量が表示されていれば設定完了です。
Samba をインストールしてこのフォルダをPCからアクセスできるようにしておくと楽曲の管理が楽になるのでおすすめです。
5. ルーターの設定
使用しているルーターの管理画面に入り、DHCP予約機能などでラズパイのIPアドレスを固定します。
さらにポートフォワーディング設定で32400番を解放し、固定したラズパイのIPアドレスへ向けます。
6. PlexMediaServer の設定
ここまで設定したら、LAN内のPCなどからhttp://固定したラズパイのIP:32400/webにアクセスします。
ログインを求められるので作成したアカウントでログインします。
ログインしたらライブラリを追加します。
種類の選択画面では
種類:音楽
名前:好きな名前
言語:日本語
を選択します。
次の画面では作成した/mnt/musicフォルダを選択し、ライブラリに追加します。
次に設定画面に移動し、リモートアクセスの設定画面を表示して、リモートアクセスを有効にします。
これで外部からラズパイの PlexMediaServer へアクセスできるようになりました。
LAN外のデバイスから https://app.plex.tv へアクセスしてログインし、作成したライブラリにアクセスできるかを確認しましょう。
7. Alexa スキルを作成する
PlexMediaServer を Alexa で再生させる
あとはこの記事の手順で Alexa スキルを作成すれば完成です。
おわりに
たまに Alexa が音声をうまく認識してくれない問題があったりしますが、無事に目的を果たせました。
くもんのうた200えほんは各ページに曲の番号が記載されているので、「アレクサ、(スキル名)でくもんの(番号)を再生して」と発話することで指定の曲を再生できるようになっており、とても便利です。
また、こどもの反応が良かった曲でプレイリストを作って再生したりもしています。
あと、ながらく持て余していたラズパイに役目を与えることもできてよかったです。