ブログからの転載です
背景
Google Homeの二台目を購入してホームグループを作ったまでは良かったのだが、時間をトリガーにして音楽を流させようとしても1台のGoogle Homeでしか再生できなかった。
ということでホームグループに対して再生させる方法を調べた。
結論
ネットで検索すると真っ先にヒットするnode.jsのライブラリ、google-home-notifierではホームグループでの再生はできないので**pychromecastを使おう!** 1
詳細
きちんと確認したわけではないけれど、Google Homeで音楽を鳴らしたり喋らせたりするとき、Google Homeのポート8009にアクセスすることで再生が始まる。しかし、グループに投げたいときはグループの親となっている(?)Google Homeの8009ではない特定のポートに対してアクセスしなければならない。
google-home-notifierでは使っているcastv2-clientか何かのライブラリがアクセスするポートを8009に固定してしまっており、グループのポートを指定できないためグループにキャストできない。
この記事はただの定期実行だし、リスナー常駐させるほどじゃないなという方向けです。
外部からIFTTT等で喋らせたい場合は、同様にpychromecastを使っているgoogle-home-notifier-pythonを使いましょう。
必要な環境
- Google Home 複数(グループ化しておく)
- raspberry piなどのおうちハックできる環境
- 音楽ファイルをおいておくためのローカルサーバー (raspberry piでも良い)
pychromecast インストール
-
raspberry piにpython3環境を作っておきます
-
pychromecastをインストール
pip3 install pychromecast
音楽を鳴らすスクリプト
今回は曜日ごとに流す音楽を変えた
#### alarm.py ####
# !/usr/bin/env python3
# coding: utf-8
import pychromecast as pcc
import datetime as dt
chromecasts = pcc.get_chromecasts()
# print(chromecasts)
# 再生するGoogle ホームの名前;グループ名でも単体の名前でもOK
chromecast_name = "ホームグループ"
cast = next(cc for cc in chromecasts if cc.device.friendly_name == chromecast_name)
weekday = dt.datetime.now().weekday()
music_path = 'http://192.168.x.x/path_to_music_dir/';
if weekday == 0: # mon
music_path += 'Mon.mp3'
elif weekday == 1: # tue
music_path += 'Tue.mp3'
elif weekday == 2: # wed
music_path += 'Wed.mp3'
elif weekday == 3: # thu
music_path += 'Thu.mp3'
elif weekday == 4: # fri
music_path += 'Fri.mp3'
else: # sat, sun
music_path += 'Sat_Sun.mp3'
print(music_path)
cast.wait()
mc = cast.media_controller
mc.play_media(music_path, 'audio/mp3')
mc.block_until_active()
最後のmc.block_until_active()
を忘れるとDefault Media Receiverがactiveのときしか再生されなくなるので注意
cronに登録
今回は朝家を出る時間に流してほしいのでcronで定期実行の登録をする
$ chmod 755 alarm.py
$ crontab -e
> 0 7 * * * /home/pi/path_to_dir/alarm.py
完成!
ということでgoogle homeのグループで音楽を流させる方法でした。
今回は音楽でしたが喋らせることも同様にできます。
ただしnode.jsのgoogle-home-notifierと違ってpychormecastでは一度音声を保存する必要があります。
そんなに難しくないので、やりたい方は同様にpychromecastを使っているgoogle-home-notifier-pythonの実装を参考にすると良いでしょう。
-
Google homes are just chromecasts! らしい ↩