「Google Home」カテゴリーアーカイブ

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

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

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

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

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

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

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

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

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

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

Google Home + Raspberry Piで色々操作(テレビ編)

Google Home、半額だったので今度はminiではなく、無印の方を追加購入してしまった・・。音声はアンプから出してるから音質は関係ないのに。。

ということで、活用編。

テレビを音声で操作。

Raspberry Pi3に昔買ったBuffaloの赤外線送受信機を使ってシステムを組んでみた。
細かい説明をするのは苦手なので、要点だけ。

ラズパイにはubuntuをインストール。色々パッケージが揃っている&使い慣れているため。
さらにnginxをインストール。PHPもインストール。

すでにNASで自宅サーバーをやているため、ドメインは取得済み。DDNSも登録済み。と言う環境。

80番ポートはこのサーバーで使っているので、違うポートでアクセスするとラズパイにフォーワードされるようにルーターを設定。
そして、iFTTTの登場。

「テレビをつけて」というと、Google Home →IFTTT→Webhook→ラズパイ

という経路でラズパイに到着。受けとりはPHPで、Bodyの内容で赤外線の信号を切替えて、テレビに向けて発射。
テレビがつくという算段。

チャンネルごとに赤外線の信号を学習させているので、チャンネル名をGoogle Homeに言うことでチャンネルの切替や電源のON/OFFが可能に。

これで台所仕事中やこたつから出たくないけどリモコンが近くにない場合などに声で操作可能に!

google homeのAction トクバイ

トクバイというスマホのアプリ。
近所のチラシの情報を探せるアプリ。
そのgoogle home対応版。

OK Google トクバイと話したい

で起動可能。

現在地の情報を共有することで、近所のチラシ情報を音声で教えてくれる。
アプリで表示されるようにすべてのチラシの情報はやっぱり音声では不可能。
1店舗1商品のみ、値段を教えてくれる。
一つ聞き終わると他の店も聞くかと聞かれ、

はい

と堪えると次の店の情報を1件教えてくれる。
そんなAction。

うーん、あんまり使わなそうだな。。

Google Home miniとIFTTT

Google Home miniを購入して2日め。

ちょっとした技術者をやっている身としては、普通に使う他になにか使いみちはないものか、と調べていると、IFTTTと連携ができると。

IFTTTは名前は聞いたことがあったものの、使ったことはなかったので色々検索。

とりあえず、実用的なものとして台所仕事で手が濡れている時にLINEを送りたいと言う需要があるので、それを対応してみた。

まず、IFTTTサービスに登録。
https://ifttt.com/

登録が完了したら、右上のユーザー名を押すと出てくる、New Appletをクリック。

+This

をクリックすると、サービスの一覧が出てくるので、その中から、

google assistant

を検索。さらに、

Say a phrase with a text ingredient

を選ぶ。

What do you want to say?

には、

Lineで $ を送信

を記載、その下のOptionalの部分は他に反応させたい言葉がアレば入力。

What do you want the Assistant to say in response?

には成功した時に何を言わせるかを記載。
うちの場合は、

Lineで $ を送信しました。

とした。

言語は日本語を選んで、トリガを作成。

とその先は接続先のサービスとしてLineを選んで画面の指示に従って行うことで、LINEにメッセージを送信することが可能。

ただ、誰に送る。というのを指定することができないので、Line notifyという発言者(友達)を特定のグループに加えて使う。

家族全員をグループに加えて使う、という用途になるかな。
送り先を選べないからちょっと限定した用途になりそう。

AVアンプとGoogle Home mini

Google Home miniを買って1日。
夜遅くまでいじってたので、ちょっとまとめ。

まず、うちの環境。

テレビ:REGZA 42Z7
AVアンプ:AVR-X2200W
ChromeCast:2世代目

接続は、
Google Home miniをwifi接続。
ChromeCastをAVアンプのHDMI入力に接続。
AVアンプのMonitor出力からテレビへ。

テレビ側のHDMI設定で電源連動をONに。

これで

ねぇグーグル、テレビつけて/消して

でテレビの電源ON/OFFが可能に。
ただし、ONになったときの入力はChrome Castが接続されているHDMIになる。
普通にテレビを見ることはできない。

テレビが付いていない状態で、

OKグーグル、音楽流して。

というと、テレビがONになって何の曲を流しているかが表示されつつ、アンプから音が出る。

今日は何の日?

とか話しかけたときの返答はHome miniのスピーカーから出力される。
ちょっとした時にいちいちテレビがつくとちょっと微妙なのでこれはこれでいいんだけど、miniの置き場所を選ぶかも。
あまりボリュームが大きくないと聞こえなかったり。

と、1日目のhome miniいじりはこんなところで。