はじめに
Raspberry Pi上のvolumioとAlexaを連携する記事はいくつかあるが
記事と同じ手順では実行不可もしくは実行できても不具合があったため解決方法を記載する。
不具合・・・Raspberry piに刺したUSBメモリがvolumioで認識できない(OSでは認識している)
できるようになること
volumioを音声で制御できる。
再生・停止・音量UP/DOWN・次トラックなどなど
構成
volumioとNode-Redを使用する。
Raspberry piでNode-RedをインストールするとUSBメモリ上の音楽ファイルが認識できなくなるため別サーバを使用。
volumio :aspberry pi zero
Node-Red:Ubuntu
動作原理
volumioの再生や停止はコマンドで実行できる。
Node-RedでAlexaのコマンドを受け取り、volumioにSSHコマンドを実行する。
Alexa音声入力
↓
Node-RED Alexa Home Skill Bridge
↓
Node-RedでSSHコマンド実行
↓
Volumioの再生・停止など
Node-Red
AlexaとNode-Redの連携はAlexaスキル「Node-RED Alexa Home Skill Bridge」を使用する。
ここの作業は以下3点。
・Node-RED Alexa Home Skill Bridgeのアカウント作成・デバイス作成
・Node-Redのインストールと
・Node-REDで処理フロー作成
Node-RED Alexa Home Skill Bridge設定
アカウント作成
以下のURLにアクセスし、アカウントを作成する。
https://alexa-node-red.bm.hardill.me.uk/
デバイス作成
再生・停止だけで良いならON・OFFだけにチェックする。
今回は次トラックや音量変化させるためパーセントにもチェックしている。
Node-Redインストール
インストール方法は任意の方法でOK
ここではDockerを使用する。
ワークディレクトリ作成
mkdir node-red-volumio && cd node-red-volumio && mkdir node-red_data
docker-compose作成
device: /home/user/docker/node-red-volumio/node-red_data
の部分は個人の環境に合わせる。
cat << EOF > docker-compose.yml
version: "3"
services:
# Node-Red
node-red:
container_name: node-red-alexa
image: nodered/node-red:latest
environment:
- TZ=Asia/Tokyo
ports:
- 1880:1880
volumes:
- node-red-data:/data
restart: always
volumes:
node-red-data:
driver_opts:
type: none
device: /home/user/docker/node-red-volumio/node-red_data
o: bind
EOF
Node-Red起動
docker-compose up -d
Node-Redのフロー作成
必要なノード
パレット管理から以下のノードを追加する。
・node-red-contrib-alexa-home-skill
Alexaとの連携ノード
・node-red-contrib-ssh-coco
SSH実行ノード
フロー全体
volumioから受信したコマンドをSwitchノードで各処理に分岐する。
各Changeノードで実行コマンドを登録する。
SSHノードでChangeノードに登録したコマンドを実行する。
※「最小:前トラック」の後続にSSHノードが2つあるのは前トラックコマンドを2回実行する必要があるため。
(もっと良い方法があるかもしれない)
Switchノード
ここでの判定基準は「アレクサ、volumioオン」と音声入力した場合にAlexaノードから入力される値となる。
スイッチのON/OFFはbooleanで入力されるのでTrue/Falseで分岐する。
パーセントは数値で入力されるので各数値で分岐するように設定した。
Changeノード
msg.payloadにvolumioで実行したいコマンドを設定する。
コマンドの一覧はVolumio Documentationを参照
設定例
内容 | コマンド |
---|---|
再生 | volumio play |
一時停止 | volumio pause |
次トラック | volumio next |
前トラック | volumio previous |
音量UP 1step | volumio volume plus |
音量DOWN 1step | volumio volume minus |
音量20% | volumio volume 20 |
音量40% | volumio volume 40 |
SSHノード
volumioのIPアドレスとユーザ、パスワードを入力する。
Alexa設定
Alexaのスキルインストール
Nore-Redを検索しインストールする。
インストール後、Node-RED Alexa Home Skill Bridgeで作成したアカウントを入力しアカウントリンクする。
その後、デバイス検出を行い作成したデバイスを設定する。
デバイス設定
デフォルトのままでは使用することは難しい(「アレクサ、volumioの音量10%にして」で次トラックの捜査になる)ので
定型アクションを作成しておくとよい。
ちなみに標準アクションではパーセントの設定が10%、20%、40%、60%、80%、100%の6パターンだが
定型アクションでは0~100%まで作成できるのでかなり細かく制御ができる。
(定型アクションをすべて設定&覚える必要があるが・・・)