はじめに
こんにちは。何も考えずにラズパイzeroを購入してしまったせいで使い道が無くて持て余していたので、volumioをインストールしてミュージックサーバーにしてみたパパドラゴンです。
volumioのインストールはこちらのページで紹介されているDACをそのまま買って組んでSDカード焼くだけでめっちゃ簡単でした!
でもvolumioはブラウザから操作することを考えて作られているらしく、別のラズパイから再生コマンドを送る方法がいまいち分かりにくかったので紹介します。
やりたいこと
- Volumio2を「他のラズパイ」から「コマンドラインで」操作したい
- Google Homeを使って操作したい
- WiFi経由でArduinoから操作したい
方法
結論から言いますと、Volumioの公式ドキュメントにAPI一覧が書いてあります。
ネットワーク関係は全く素人なので理解できたとこだけ読んだところ(よくない)、GETリクエストを送る方法が一番カンタンで早い気がします。
仕組みはともかく使い方だけなら、ブラウザでもラズパイのターミナル上でもpython上でもとにかく「http://volumio.local/api/v1/commands?cmd=〇〇」のアドレスにGETリクエストを送れば、結果(成功すれば現在の状態、失敗すればエラー)が辞書型で帰ってきます。
「volumio.local」の部分は「192.168.0.5」のようなアドレスに変える必要があるかも知れません。
例えばchromeだとアドレスバーに上記を打ち込めばこんな感じに帰ってきて再生が始まります。

ラズパイのターミナルだとcurlコマンドを使ってこんな感じ。
ppdr@raspberrypi:~ $ curl http://volumio.local/api/v1/commands?cmd=stop {"time":1538585873376,"response":"stop Success"}
pythonならこんな感じです。
import urllib2 res = urllib2.urlopen("http://volumio.local/api/v1/commands?cmd=play",timeout=5) print( res.read() )
どんなコマンドが送れるの?っていうとアドレスの「?」以降(クエリ)の部分に色々指定して送れば良さそうです。
クエリ | 動作 |
cmd=play | 再生 |
cmd=stop | 停止 |
cmd=pause | 一時停止 |
cmd=prev | 前の曲へ |
cmd=next | 次の曲へ |
cmd=volume&volume=80 | 音量を80に |
cmd=playplaylist&name=Rock | プレイリスト「Rock」を再生 |
cmd=repeat | リピートをON&OFF |
cmd=random | ランダム再生をON&OFF |
他のコマンドについては公式ドキュメントを参照してくださいm(_ _)m。
これが出来ればとりあえず汎用性は高そうです。プレイリストやキューの一覧を取得するコマンドもあるので帰ってきた辞書型を判断して処理を分けるとかもできそうです。
時間があればGoogle Homeから起動とかも試してみたいです。お部屋BGMライフが始まりそう。