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が喋ると思います。
こんな感じで色々操作できます。

以上!!
なにかあればコメントください。

コメントを残す

*
*

%d人のブロガーが「いいね」をつけました。