GoogleHome×RaspberryPi×AppleHomeApp
GoogleHomeが自宅にきたので色々しました。
GoogleHomeとRaspberryPiとAppleのHomeAppを組み合わせるやり方書きます。
ここでは
RaspberyPi のOSは Raspbian最新
AppleHomeAppのバージョンは最新であり、
全てのデバイスの設定は完了しているものとします。
RaspberryPiの設定
まずは古いNode.jsをアンインストールします。
$ sudo apt-get autoremove nodejs
次に、NVMを入れて行きましょう。
$ sudo mkdir ~/.nvm $ sudo chmod 777 ~/.nvm $ git clone https://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh
次にNode.jsをいれます
$ nvm ls-remote
実行するとバージョンの一覧が出てくるのでLTSの最新版を見つけてそのバージョンで次のコマンドを打ちましょう。
$ nvm install vx.y.z
最後にインストール完了しているか確認
$ nvm --version $ node --version $ npm --version
ではGoogleHomeを動かす場所を構築しましょう
今回はフォルダ名をgooglehomeとしましたが適宜決めてください
$ mkdir googlehome $ cd googlehome $ npm init $ sudo apt-get install libavahi-compat-libdnssd-dev $ npm install google-home-notifier
このままではとあるファイルがおかしいので修正します。
node_modules/mdns/lib/browser.jsをnanoコマンド等で開き、
Browser.defaultResolverSequence = [ rst.DNSServiceResolve(), 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo({families:[4]}) , rst.makeAddressesUnique() ];
ボールド部分を追加してください。
これで動かす環境は構築できました。
動かすプログラムを書きましょう。
nanoコマンド等でgooglehomeディレクトリ内でも好きな場所にmain.js(今回はmain.jsとする)を作成し、下記を記述してください。
const googlehome = require('google-home-notifier') const language = 'ja'; googlehome.device('Google-Home', language); googlehome.ip('192.168.xx.xx'); var defaulttext = "Hello world"; if (process.argv.length == 3){ defaulttext = process.argv[2]; } try{ googlehome.notify(defaulttext, function(res) { console.log(res); }); } catch(err) { console.log(err); }
googlehome.ipにはGoogleHomeのIPアドレスを記述してください。IPアドレスはGoogleHomeアプリから確認できます。
defaulttext変数はのちに解説します。
これでRaspberryPiからGoogleHomeで喋らせることができるようになりました。
試しに以下のコマンドを打ってみましょう。
$ node googlehome/main.js HelloWorld
「はろーわーるど」
としゃべってくれたはずです。第二引数に喋らせたい文字列を指定しています。
AppleHomeAppの接続構築!
HomeBridgeというパッケージをインストールします。RaspberryPiでの操作です。
$ sudo apt-get install libavahi-compat-libdnssd-dev screen $ npm install -g homebridge $ npm install -g homebridge-cmd
次に、このままではconfigファイルがないぜといわれるので作成します。
$ nano ~/.homebridge/config.json
そして下記を記入。
{ "bridge": { "name": "Homebridge", "username": "AA:BB:CC:DD:EE:FF", "port": 51826, "pin": "xxx-xx-xxx" }, "accessories": [ { "accessory": "CMD", "name": "LED", "on_cmd": "node googlehome/main.js HelloWorld", "off_cmd": "node googlehome/main.js Underworld" } ] }
usernameにはMACアドレスを入れます。重複しなければなんでもいいです(英文字は大文字で。16進数で。)
pinにはiPhone等から接続する際のpinを設定します。
nameにはSiriなどで呼び出すときに使用するカテゴリみたいな名前を決めます。
on_cmdにはHomeAppでOnにしたときに実行するコマンドを記述します。(off_cmdも同様)
No lot No life!
ではー
$ homebridge
と実行しましょう。
するとでっかいQRとPINが表示されます。これ、文字で全部できてるんです。すごいですよね。
iPhoneとかで読み取るかPINを入力して接続しましょう。
HomeAppのHomeからスイッチボタンでON/OffするとGoogleHomeが喋ると思います。
こんな感じで色々操作できます。
以上!!
なにかあればコメントください。