今更ですが。
Google Homeをつかってみます
ちょっと前に買ったものの、通電したまま部屋に放置していました。そろそろ触ってあげないとかわいそうなので、触ってあげます。
Google Homeの制御には、皆さんおなじみのgoogle-home-notifierを使っていきます。
これをGoogle Homeと同一ネットワーク上にいるRaspberry Pi上で動かしてみます。
準備
jsとかnodeとかnpmとかでゴニョゴニョするということなので、とりあえずnodeを最新にしていきます。面倒なので、update-nodejs-and-nodered
というコマンドでそれなりに新し目の環境にします。
$ update-nodejs-and-nodered
Node-REDも新しくなって、一石二鳥ですね。
Fetching Node-RED update. (省略) This can take 20-30 minutes on the slower Pi versions - please wait. Stop Node-RED ✔ Remove old version of Node-RED ✔ Remove old version of Node.js ✔ Install Node.js for Armv6 ✔ Node v8.11.2 Npm 5.6.0 Clean npm cache ✔ Install Node-RED core ✔ 0.18.5 Move global nodes to local - Install extra Pi nodes - Npm rebuild existing nodes ✔ Add menu shortcut ✔ Update systemd script ✔ Update update script ✔ (省略)
はい、よしなに新しくなりました。
$ npm install google-home-notifier
で、google-home-notifierをインストールします。これで完了。
お喋りするよ!
ここを参考に、ざっくりJSでプログラムを書いてみます。
const googlehome = require('google-home-notifier') const language = 'ja'; googlehome.device('Google Home Mini', language); googlehome.ip('192.168.xxx.xxx'); googlehome.notify('こんにちは!ポキオです!', function(res) { console.log(res); });
後述しますが、Bonjourが上手くワークしてないようで、機器名からアドレスを解決出来てなかったようなので、アドレスを直打ちしています。
$ node pokio.js
で、こんな感じでJSを実行します。
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi. *** WARNING *** Please fix your application to use the native API of Avahi! *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node> *** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi. *** WARNING *** Please fix your application to use the native API of Avahi! *** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister> Device notified
Bonjour関係で怒られますが、Device notified
と表示された後に、Google Homeから効果音が鳴り、「こんにちは!ポキオです!」と喋ります。若干ポキオのイントネーションがアレですが、とりあえず喋りました!
msdnが効かなかったのは、この手順を踏んでいなかったためでした。
その他、気をつける点をまとめました。