【Homebridge】NatureRemoをHomeKit対応させる方法

CHASUKEの記事をシェアする..

どうも、CHASUKEです。

我が家ではHomebridgeを使って、学習リモコンIRKitをHomeKit対応し、Appleホームアプリから家電操作をしていたが、最近調子が悪いようなので、世代交代し、Nature RemoをHomeKit対応した。

その結果、高性能なNature Remoで調子良く使えるようになった♪

せっかくの機会だったので、初期設定済みのラズパイにHomebridgeサーバを設定し、Appleホームアプリから家電操作するまでの手順をメモしておくことにした。

Nature Remoやminiを持っており、AppleホームアプリやSiriから家電操作したい人は、ぜひ参考にしてみてください。

それでは、やっていきましょう!!

SPONSORED LINKS

Homebridgeとは?

Homebridge(ホームブリッジ)とは、iOS HomeKitAPIをエミュレートするホームネット上で実行できるNode.jsサーバーのこと

リモコンで操作できる家電は、Nature Remoを使うことでスマホ操作できる。通常、Remo専用アプリやAIスピーカーから操作することは可能だが、Apple標準スマートホームアプリには非対応である。

そこで活躍するのが『Homebridge』です。

ラズパイにHomebridge用のサーバを立ち上げることで、あたかもHomeKit対応したかのように振る舞えるのだー!!

必要なもの

iOS端末(ホームアプリ)

今回の目的は、Appleホームアプリで利用するためなので、当たり前だがiOS端末は必要。僕は、iPhone7を使って操作していきます♪

ラズベリーパイ一式

僕は、ラズベリーパイ3Bに最新OS「RASPBIAN STRETCH WITH DESKTOP」をインストールして利用した。ラズパイ本体の他にも、SDカードや電源ケーブルなど付属品が必要となるので、これから用意するならスターターキット(※購入記事こちら)がおすすめ。

ただし、今なら処理性能が向上した最新モデル「ラズベリーパイ3B+」のスターターキットがいいかも。

▼検証していませんが、ラズパイZEROでもできると思います。

『Raspberry Pi Zero WH』スターターキットを購入してみた!!
どうも、Chasukeです。 なんだかんだで我が家に3台目のラズベリーパイ(ラズパイ)がやってきました。 今回は、通常モデルの...

Nature RemoもしくはMiniモデル

今回「Nature Remo」をHomeKit対応させてみましたが、「Nature Remo mini」でも同様の手法でHomeKit対応できます。

これから購入するならコンパクトで低価格なNature Remo miniがおすすめ。

それぞれの違いは以下のページを参考に。

『Nature Remo』と『Nature Remo mini』の違いを比較してみた
どうも、CHASUKEです。 スマート学習リモコンのNature Remoに低価格モデル『Nature Remo mini(ネイチャ...

必要ライブラリのインストール作業

ターミナルからコマンド入力して必要ライブラリを、初期設定済みのラズベリーパイにインストールしていきます!!

事前準備

設定していく前に、パッケージの最新化をしておきましょう。

$ sudo apt-get update
$ sudo apt-get upgrade

Node.jsのインストール

Homebridgeは、Node.jsサーバなので必要。

偶数が安定バージョンなので、8系をインストールした。

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install -y nodejs

実施後は、バージョン確認コマンドでインストールされているか確認する。

$ nodejs -v
v8.11.3
$ npm -v
5.6.0

Avahiのインストール

ラズパイ(Homebridge)から話し相手(Nature Remo)を見つけるために必要。

$ sudo apt-get install libavahi-compat-libdnssd-dev

Homebridgeのインストール

親玉であるHomebridgeをインストールする。

$ sudo npm install -g --unsafe-perm homebridge

正常にインストールできたら、下記コマンドでサーバを起動させ、QRコードやHomeKit設定コードがターミナル上に表示されることを確認しましょう。

$ homebridge

これが表示できていれば、成功です。以降設定が続くので、とりあえず「cntrol + c」でサーバ停止しておきましょう。

Homebridgeプラグインをインストール

親玉にプラグインを追加する形で、Nature Remoから操作できるようにします。

Nature Remoを利用するためのHomebridgeプラグインは「homebridge-nremo」を利用することにしました。連続実行など細かな赤外線送信も設定できる。

$ sudo npm install -g homebridge-nremo

上記の他にも、多くのプラグインが用意されているので探してみると面白い。

僕の場合、Netatmo情報取得用プラグインやラズパイで任意なコマンドを実行できるプラグインをインストールしました。この辺りはお好みで。

$ sudo npm install -g homebridge-netatmo
$ sudo npm install -g homebridge-cmd

設定ファイルを編集

必要なライブラリのインストールが全て完了すると、ディレクトリ「/home/pi/.homebridge」が作成されているはず。

このディレクトリ配下に設定ファイル「config.json」を作成することで、Nature RemoのHomeKit対応は完了します。

config.jsonの編集

作成イメージはこんな感じです。

{
    "bridge": {
        "name": "Homebridge",
        "username": "XX:XX:XX:XX:XX:XX",
        "port": 51826,
        "pin": "031-45-154"
    },

    "description": "Nature Remo Control",

    "accessories": [
        {
            "name": "テレビの電源",
            "accessory": "NatureRemo",
            "host": [NatureRemoのIPアドレス],
            "path": "/messages",
            "delayBefore": 0,
            "delayAfter": 500,
            "timeout": 1000,
            "retry_interval": 500,
            "retry": 3,
            "s_on":
            {"format":"us","freq":40,"data":[2346,643,...]},
            "s_off":
            {"format":"us","freq":40,"data":[2346,643,...]},
            "command_order": [
                { "on": ["s_on"] },
                { "off": ["s_off"] }
            ]
        }
    ]
}

連続実行は、command_orderに複数設定することで使えるようになる。例えば、電源ON→電源OFF→電源ONという連続送信をしたいなら以下のように記述する。赤外線情報は利用する分だけ積むことが可能。

▼こんな感じ

{ “on”: [“s_on”, “s_off”, “s_on”] }

▼Nature Remoアクセサリの各設定項目の説明は以下の通り

delayBeforeコマンド送信前に指定時間待機
delayAftercommand_orderに複数の赤外線を
指定した際の連続実行間隔
retryリクエストが失敗時の再試行回数
retry_intervalリクエストが失敗時の再試行までの時間
timeoutリクエストのタイムアウト時間

設定ファイルの編集で重要なのが、Nature Remoを探すための「host」と、そこから送信される赤外線情報「s_on、s_off」である。

この2つの設定方法を次で説明する。

hostの設定方法

Nature Remoの公式HPにある「Nature RemoのIPアドレスを確認したい」を参照すると取得方法が記載されている。

ラズパイではなく、同ネットワークに接続したMACパソコンから以下のとおりコマンドを叩いて、「Remo-xxxxx.local」を特定することができた。

$ dns-sd -B _remo._tcp
$ dns-sd -G v4 Remo-XXXXXX.local

上記で取得したホスト名を、設定ファイルに編集する。

赤外線情報の取得方法

こちらは、Nature RemoのローカルAPIを利用して赤外線情報を取得する。

Nature Remo本体に向けて、リモコンボタンを押すと、表面が青色点滅する。その状態で以下のAPIを実行すると、直前に受け取った赤外線情報を返してくれる。

$ /usr/bin/curl -i "http://Remo-xxxxxx.local/messages" -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Server: Remo/1.0.62-xxxxxxxx
Content-Type: application/json

{"format":"us","freq":40,"data":[2347,659,....]}

上記で取得した値を、設定ファイルに編集する。

こちらのコマンドは、最初、エラーとなったり、何も返って来なかったり不安定だったが、何度か試すと使えるようになった。

Appleホームアプリに登録する

最後の仕上げです。

これまで、設定してきたHomebridgeサーバを再度起動させます。設定ファイルが読み込まれ、エラーが表示されずに、QRコードやHomeKit設定コードが表示されれば、成功です。

停止するとホームから利用できなくなるので、常時起動させておく必要がある

▼Appleホームアプリからアクセサリを追加。

表示されているQRコードをカメラで読み込ませればOKです。

▼これで追加され、設定ファイルに記載した分のアクセサリを登録していきます。

僕は16個分のアクセサリが作られました。

もし、「既に登録済みアクセサリ」みたいなエラーになったら、「/home/pi/.homebridge」にある「accessories」と「persist」のディレクトリの中身を削除して再度起動してやれば上手くいくはずです。

Appleホームアプリから操作ができるはずで切るようになったぜ♪

最後に

IRKitのHomebridge設定を、NatureRemoの設定に載せ替えてみました。

Nature Remoに時間を空けてアクセスするとタイムアウトになってしまうのだが、今回利用したプラグインからタイムアウト時間やリトライ処理を設定できたため、初回は少し時間がかかるものの、問題なくホームアプリから操作可能になった!!

▼Nature Remo

▼Nature Remo mini

それでは良いスマートライフを♪