Qiitaにはgoogle-home-notifierについての情報がたくさんあります。おかげで時報やgmailの着信通知がとても便利に使えています。
しかしいろいろ試行錯誤して気づいたこともあるので、メモしておきます。
Raspberry PiのIPアドレス、Google HomeのIPアドレス
google-home-notifier.jsにIPアドレスとポート番号のデフォルト値が書かれています。
const serverPort = 8091; // default port
var deviceName = 'Google Home';
var ip = '192.168.1.20'; // default IP
このipはGoogle HomeのIPアドレス、serverPortはRaspberry Piで動くgoogle-home-notifierが使うポート番号を指定します。最初、serverPortはGoogle Homeのポート番号だと思ったのですが、Google Homeが開けているポート番号は固定で8009です。
google-home-notifierのサービス化
Google Homeで時報を知らせるに従ってgoogle-home-notifierをサービス化すると、"sudo systemctl stop googlehomenotifier"後にngrokのプロセスが残ってしまい、次のstartが失敗します。google-home-notifierをsystemdで常駐させるに書かれているとおり、KillModeはcontrol-groupにするとよいようです。
IPアドレス、言語の指定
google-home-notifierのexample.jsを見ると、ipアドレスや言語をパラメータとして指定できるようにしようとした形跡があります。
if (req.query.ip) {
ip = req.query.ip;
}
var language = 'pl'; // default language code
if (req.query.language) {
language;
}
googlehome.ip(ip, language);
googlehome.device(deviceName,language);
実際には、postのコードでreq.queryを参照しているのは無意味ですし、getのコードでもreq.query.languageがあるかどうかチェックしたあとでlanguageの値を更新していないので無条件にデフォルト値が使われます。だからこれを使う場合には直接コードを書き換えるしかありません。
私のforkでは修正済みです。
Google Homeを探す処理
google-home-notifier.jsには、googlehome.ip()でGoogle HomeのIPアドレスが指定されなかった場合にはgooglehome.device()で指定された名前のデバイスがあるかどうかを探す、という処理が書かれています。しかし未完成なのでまともに動きません。
私のforkで修正済み。
ngrokのauthToken
ngrokの公開URLはアカウントを登録しないとすぐに消えてしまいます。Maruhack.comの記事に従ってトークンを生成し、google-home-notifier.jsを修正してngrok接続時に設定ファイルからトークンを読み込むようにします。
私のforkで修正済み。