Google Home + Raspberry Piで色々操作(アンプ編)

前回はテレビの操作を声でできるようにしたわけですが、今回はアンプの操作声で操作したいな、と。

台所で作業中に音楽聴きたい時に、Homeに「音楽流して」といったところで、デフォルトの出力先がChromeCastになってるので、音が出ない!
結局アンプの電源をいれるためにリモコンを触る。
これが嫌だったのでちょこっと細工してみました。

うちのアンプはDENONのAVR-X2200Wというちょっと古めなもの(今年コストコで安くなってたので買ったので2世代型落ち)。
一応ネットワーク機能が付いていて、ブラウザからもある程度操作ができる。
この点に目をつけました。

まず、ブラウザでアクセスし、各ボタンが押された時にどのようなパケットが送信されているのかを解析。
どうやらPOSTでapplication/x-www-form-urlencodedでデータのやり取りをしている模様。
中身もcmd0=xxxxのような簡単な感じ。これは解析しやすくて良い!
ということで、本当はnode.jsあたりの勉強がてら、一度経由した上でアンプにコマンドを送ってやろうかと思ったのですが、今はちょっと家庭的な状況でそこまでやっている時間がない。

そこで、nginxのリバースプロキシ機能を使うことに。
要するに外からのアクセスに対してコマンドをアンプに送ってやれば良い、ということ。
外からのアクセスは一度ラズパイが受けます。
テレビ編でその経路までは確率されているので、特定のディレクトリにアクセスしたらアンプのIPアドレスにそのパケットを流す。という設定を実施。

勝手にボリュームあげられたりするとビビるので、ディレクトリ名はランダムな文字列にして簡単にはアクセス出来ないように。
将来的にはコマンドを限定的にするために一層かます必要があるけど、色々落ち着くまではこの対応で。

Google Homeに向かって「アンプの電源を入れて」というとアンプの電源が入り、「アンプの電源を切って」というとアンプの電源が切れる。

寝るときには「音楽止めて」「アンプの電源を切って」と言ってからリビングを去る感じ。
うーん、たとえば、「寝るよ」と言ったら音楽を止めて、アンプの電源が切れてほしい・・。これをやるにはやっぱり一層かまさないとだめだろうな。。

そのうち対応します!
このページ見ても具体的なことは書いてないので、アイディアレベルということで。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です