はじめに
前回Google HomeとSwitchBot Hub Plus(IFTTT対応リモコン)で自宅をスマートホームに一歩近づけました。Google Home経由でエアコンや照明などの家電をつけたり消したりできるようにしたうえで、さらにSwitchBot温度湿度計で自動でエアコンを入り切りできるようにしました。
今回は家電の操作ではなく、Google Homeに音を自動で鳴らしてもらおうと思います。構想としては例えば12時になったらお昼のチャイムを鳴らすだとかそういうことを目指します。
スマートホームというよりもGoogle Homeでできることの幅を広げるという内容に近いです。
Node.jsのインストール
Google Homeに何かしゃべってもらうには公式に配布されているNode.jsのスクリプトをPCから動かす必要があります。
普通はラズベリーパイという小型PCでやることが多いようなのですが、私はちょうどFXのMT4(メタトレーダー4)用に用意したWindows10パソコンが常に動いているのでそれを使うことにしました。
MT4用のWindows PCに関しては以前の記事を参考にしてください。
また、Node.jsに関するセットアップは色々なところで紹介されているため省略します。参考にさせていただいたサイト様のリンクを紹介いたします。
上記リンクに混ざっている本家のGitHubのドキュメントも目を通しておくことをお勧めします。
Google Homeにしゃべらせる
インストール時についてくるサンプルプログラムを参考にGoogle Homeにしゃべらせるスクリプト(sample.js)を作成しました。
sample.js
var googlehome = require('./google-home-notifier'); var language = 'ja'; googlehome.device('Google Home', language); googlehome.notify('12時です', function(res) { console.log(res); });
これを保存したフォルダまでコマンドプロンプトで移動します。
コマンドプロンプトの動かし方は下記サイト様などを参考にしてください。
そしてコマンドプロンプト上で実行します。
$ node sample.js
Google Homeが「ドゥン」という音の後に「12時です」としゃべってくれると思います。
音楽の再生
音楽ファイルはどこかのサーバー上のMP3ファイルのURLを指定すると再生できます。
musicsample.js
var googlehome = require('./google-home-notifier'); var language = 'ja'; googlehome.device('Google Home', language); googlehome.play('{{ ここにMP3のURL }}', function(res) { console.log(res); });
「{{ ここにMP3のURL }}」の場所にMP3のURLを指定してください。
URLじゃないとだめなのか?という点に関して自分もなんどか試してみたのですが、絶対パス・相対パスを指定してもうまく動かなかったので恐らくhttpからはじまるURLでないとダメっぽいです。
ちなみに、任意のMP3ファイルをhttpではじまるようなURLにするにはどこかのサーバーにそれを置く必要があります。
しかし、このためだけにサーバーを借りるというのも面倒ですし、だれでもアクセスできるようにところに音楽ファイルを置くというのは著作権的にいかがなものかという気もするのでローカルにサーバーを立ててしまいましょう。
幸いWindowsにはサクッとインストールできるxamppやbitnamiがあるのでそれらをインストールすることをお勧めします。
bitnamiの方はサーバー上で動く進捗管理ソフトのredmineのインストールも同時にできるのでお勧めです。redmineはGitやSVNのコメントも紐づけられるので大変便利です。
インストール先にもよりますが、htdocsというフォルダに保存しておけばアクセスできます。デフォルトで下記フォルダにhtdocsがあります。
Xamppの場合
C:\xampp\htdocs
Bitnamiの場合
C:\Bitnami\redmine-[バージョン]\apache2\htdocs
自分のIPアドレスが192.168.1.10だとするとこのフォルダの直下に保存した「sample.mp3」のURLは「http://192.168.1.10/sample.mp3」になりますので先ほどのURL欄にはこの値を入れておいてください。
自分のIPアドレスはコマンドプロンプトで「ipconfig」と打てば出てきますので調べてください。IPアドレスはDHCPで自動で割り当てられるようになっていると思いますが、固定する場合は自分のルーターから設定するなどしてください。サーバーとするなら固定することをお勧めします。
さて、ここまででPCからGoogle Homeをしゃべらせることに成功しました。
しかし、いちいちコマンドプロンプトを立ち上げるのは相当面倒なのでバッチファイルで対応することにしました。
バッチファイルで実行
バッチファイルはコマンドプロンプトに実行させる命令をテキストファイルにまとめたもので、ダブルクリックで実行ができます。
例えばユーザーフォルダ直下にgoogle-home-notifierフォルダがあってそこに実行したいスクリプトがある場合次のようなバッチファイルを作成してください。
sample.bat
cd C:\Users\{{ ユーザー名 }}\google-home-notifier node sample.js
テキストエディタで上記の内容を記してbatファイルとして保存してください。これでバッチファイル完成です。
これをダブルクリックすると先ほどと同じようにGoogle Homeがしゃべってくれると思います。
Windowsで定期実行
ここまでくればあとはタスクスケジューラで定期実行するだけです。12時になったら「12時です」としゃべってもらうか、12時のお昼のチャイムのBGMを鳴らすかしてもらいましょう。どちらにするかは好きにしてください。
お昼のチャイムのBGMのMP3は下記サイト様などで配布されています。適宜好きなMP3を指定してください。
そして、この音を鳴らすスクリプトを前項のようにバッチファイル化したら、コントロールパネル>管理ツール>タスクスケジューラを起動します。
タスクスケジューラのタスクの作成から時間の指定および対象ファイルの指定をします。
トリガータブの「新規」から日時を指定します。画像では毎日12時を指定していますが、ここでは特定の時間だけでなく〇分ごとなどの指定で起動タイミングを決められます。
そして、操作タブの「新規」から先ほどのバッチファイルを指定します。
これでOKです。指定のタイミングになってGoogle Homeがしゃべりだしたら成功です。
まとめ
Google Homeにしゃべってもらったり、音楽を再生してもらったりしました。そして、さらに指定の時間に動かせるようにしました。
Windowsではバッチファイルやタスクスケジューラが大変便利なので覚えておくとよいと思います。