1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry piのVolumioをAlexaで制御する

Last updated at Posted at 2021-08-24

はじめに

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だけにチェックする。
今回は次トラックや音量変化させるためパーセントにもチェックしている。
image.png

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回実行する必要があるため。
 (もっと良い方法があるかもしれない)

image.png

Switchノード

ここでの判定基準は「アレクサ、volumioオン」と音声入力した場合にAlexaノードから入力される値となる。

スイッチのON/OFFはbooleanで入力されるのでTrue/Falseで分岐する。
パーセントは数値で入力されるので各数値で分岐するように設定した。
image.png

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

image.png

SSHノード

volumioのIPアドレスとユーザ、パスワードを入力する。

Alexa設定

Alexaのスキルインストール

Nore-Redを検索しインストールする。
インストール後、Node-RED Alexa Home Skill Bridgeで作成したアカウントを入力しアカウントリンクする。
その後、デバイス検出を行い作成したデバイスを設定する。

デバイス設定

デフォルトのままでは使用することは難しい(「アレクサ、volumioの音量10%にして」で次トラックの捜査になる)ので
定型アクションを作成しておくとよい。

ちなみに標準アクションではパーセントの設定が10%、20%、40%、60%、80%、100%の6パターンだが
定型アクションでは0~100%まで作成できるのでかなり細かく制御ができる。
(定型アクションをすべて設定&覚える必要があるが・・・)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?