スポンサーリンク

Homebridgeを使ってNature RemoをHomeKit化させる方法【初心者向けHomebridge導入記事】

HomeKit
この記事は約23分で読めます。
スポンサーリンク

今回は初心者がRaspberry Pi(ラズパイ)を使って、ラズパイにHomebridgeをインストールしてNature RemoをHomeKit化させ、Apple HomeやSiriでRemoを操作できるようになるところまで解説する。

他サイトでは少し知識がないとわからない記述が多かったりしたので、できるだけ知識なしでもできるように書いてみた。

なお、Nature Remoは無くとも、Homebridgeの導入だけでもやってみたい!と言う方にもわかりやすいと思うのでぜひ参考にして頂きたい。
Homebridgeの導入だけをやりたい方は、
・Rapberry Piの初期設定
・Homebridgeのインストールまで
の2つの大項目を終わらせれば導入完了だ。

快適なスマートホームへの第一歩へ進んでみよう!

Raspberry PiとNature Remoが手元にある人向けの解説だ。
Nature RemoはiPhoneでRemoアプリから通常の設定が終わった前提である。
初心者でもわかるようにできるだけ簡単に説明しているつもりだが、うまくできなくてもデータが吹っ飛んだりしても自己責任で。

なお、Apple HomeやHomeKit、Homebridgeって何?って方は参考記事を読んで頂きたい。

スポンサーリンク

Raspberry Piの初期設定

スターターキットを購入している方は既にMicro SDにOSがインストールされている状態のはずなので、本体にヒートシンクを貼り付けたり、ケースに本体を入れたりしてちょっとした自作PC感を楽しもう。

有線キーボード、マウス、モニター(HDMI)等があった方が設定が楽なのでできれば用意しよう。

SDカードにRaspberry Pi OSをインストールする

スターターキットを購入した方はおそらくSDカードにOSが入った状態なのでここは飛ばしてもOKだ。

まずは自分の使用しているOSのRaspberry Pi Imagerをダウンロードする。

Raspberry Pi Imagerを起動し、フォーマットを行う。

Raspberry Pi Imagerトップ画面

Operating Systemの欄のボタンを押し、Eraseを選択
SD Card欄のボタンでSDカードを選択後、WRITEボタンを押してフォーマットする。

Eraseを選択しフォーマット。

フォーマットが完了したら、同じくOperating Systemの欄のボタンを押し、よくわからなければ一番上のRaspberry Pi OS (32bit)を選択。

同じようにSDカードを選択し、WRITEボタンでOSがSDカードに書き込まれる。
全て完了まで回線速度によるかもしれないが、20分ぐらいだろうか。

モニターに繋いで初期設定

私のラズパイは一世代前の3

先ほどOSをインストールしたSDカードをラズパイに装着しよう。
私はラズパイにHDMI、LANケーブル、マウスを接続し、初期設定作業を行った。
今回はテレビにHDMI接続した。
CUIが死ぬほど苦手なのでできるだけマウスで設定できるところはしていこう!
(というのもあるが、有線で繋げるのがマウスしか無かった…。マウスもないキーボードもないって人はできればハードオフか何かでUSBマウスを買いに行こう。)

Raspberry Pi OS初期設定画面

ラズパイの電源を入れたらデスクトップ画面が表示され、初期設定ウィザードのようなものが表示されるので進めていく。
英語だが多分わかると思う。
主な設定項目は

  • 国やタイムゾーンの設定
  • パスワードの設定(キーボードがないので後で設定する)
  • Wi-Fiの設定(キーボードがないので後で設定する)
  • アップデート

である。
有線キーボードがあるなら全て設定しておこう。
ウィザードの最後にアップデートをかけて再起動させ、初期設定は一応終了。

再起動が終わると、日本語表示になりデスクトップが表示される。

再起動した後のラズパイのデスクトップ画面

左上のラズパイマーク→設定→Raspberry Piの設定を選択。
インターフェースタブからSSHとVNCを有効にしておこう。

ここまで来たら勝ったようなもんである。

VNC ViewerでVNC接続して設定を続ける

有線キーボードを使って初期設定が終わっているならばここはスキップしてOK。

ここからは再びMac(PC)での操作に戻り、VNC ViewerをダウンロードしてVNC接続しよう。

Mac版VNC Viewerの新規接続画面

VNC Viewerでラズパイのホスト名を指定して接続する。
おそらく初期設定だとraspberrypi.localで繋がると思う。
繋がらない時はIPアドレスをルーターの設定画面等から調べて特定してIPアドレスで接続してみよう。

VNCで接続後は残りの設定をやってしまおう。

まずはパスワードの変更。
左上のラズパイマーク→設定→Raspberry Piの設定を選択。
システムタブのパスワードを変更から行える。

MacのVNC Viewer経由でラズパイのパスワード変更画面

Wi-Fi接続もしたい人はしておこう。
デスクトップの右上の↑↓アイコンから設定できる。

Homebridgeのインストールまで

ここまできたらモニター、キーボード、マウス、LANケーブル(Wi-Fiを設定した場合)をラズパイから外してラズパイを好きな場所に置いてもいいだろう。

SSH接続

ここから先はMacやWindowsなどからSSH接続する。
以下はMacでの操作である。
WindowsはTera Termとか使えばいいのかな?

ターミナルを起動して以下のコマンドを入力しよう。

$ ssh pi@raspberrypi.local

piはユーザー名、raspberrypi.localの部分はホスト名なのでそれぞれ変更した場合は変更した名称を使用すること。
今回は全てデフォルトのものだ。

するとパスワード入力が求められるので、パスワードを変更していない場合は「raspberry」で通る。
変更した場合は変更したパスワードを入力しよう。
(初回はECDSAがなんとかって聞かれるかもだが、yesと入力してEnter)

これでラズパイとSSH接続が完了する。

パッケージの最新化

Vimをインストール。(この先使うかもしれないから。。)

$ sudo apt-get update
$ sudo apt-get install vim

インストール済みのパッケージを更新する。

$ sudo apt-get upgrade

Node.jsをインストール

Homebridgeを使うために必要。

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

バージョン確認でインストールできているか確認する。(バージョン表示でインストール済)

$ nodejs -v

Avahiをインストール

ラズパイからNature Remoを見つけるために必要。

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

Homebridgeをインストール

Homebridge本体とWeb管理ツールであるHomebridge Config UI Xをインストールする。

$ sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x

サービスのインストール

$ sudo hb-service install --user homebridge

インストールが完了すると、ターミナル上にURLが3つほど出力されるのでどれかをブラウザのURL欄に入力してhomebridgeが起動できているか確認する。
初期ユーザーIDとパスワードは両方とも「admin」になっていると思う。
必要に応じてHomebridgeのログインパスワードもWeb管理画面から変更しておこう。

今までGUIが無かったのでめちゃくちゃカッコ良いHomebridge!

上記のようなWeb管理画面にアクセスできればOK。

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

HomebridgeプラグインにはNature Remoをはじめ、様々な機器をHomeKit化できるプラグインがある。
プラグインをインストールすることで、HomeKit非対応機器を対応させる事ができる。

これは指定した機器(スマホ等)がWi-Fiに接続されているかで在宅状況を確認できるプラグイン。特別な機器は不要。
Apple機器以外のスマホでも照明のオンオフや鍵の開け閉めのトリガーにできる為、是非入れておきたいプラグインだ。

ネットワークカメラが必要だが、ホームアプリでカメラを見ることができるプラグイン。

等々、様々な記事を書いているので興味があればHomeKitカテゴリーをチェックして頂きたい。

話が逸れたが、Nature Remo対応の続きをやっていこう。

Nature Remoを対応させるHomebridgeプラグインをインストール(簡易)

最近、エアコン、照明、Remoのセンサー情報表示が一つにまとまった素晴らしいプラグインが公開されていたのでそちらを紹介する。

Cloud API経由なので、Nature Remoサーバーに障害が起きている場合は使えないことがあるので注意。
また、自分でリモコン登録した機器はホームアプリに反映されないのは注意。
その場合はLocal APIを使用するHomebridge Nremo等を使うとサーバー状態に左右されない。方法はこちら。

まずはあらかじめRemo公式からアクセストークンを取得しておこう。

また、iPhoneからNature Remoアプリを使ってエアコンや照明の機器登録を行っておこう。
このプラグインでホームアプリから操作できるようになるのはエアコン、照明、センサー情報で、Remoがメーカーを認識できるもののみに限られる。(特に赤外線情報を自分で追加する必要ないもの。自分で赤外線情報を登録してホームアプリで使いたい場合はこちら。

Web画面のHomebridgeのプラグインページより、上部に「nature remo」と入力し、「Homebridge Nature Remo Platform」のプラグインをインストールしよう。

インストールを押してインストールする。(画像はインストール済み)

インストールが完了すると設定画面が開く。
(開かなかった場合は、プラグイン一覧画面からHomebridge Nature Remo Platformの設定を押す。)

Access Token欄に取得したアクセストークンを入力し保存をクリック。

エアコンと照明とセンサーしか使わないならば次のステップへ。
それ以外も登録して使いたい場合はこちらへ。

Nature Remoを対応させるHomebridgeプラグインをインストール(カスタマイズ)

  • 汎用的に赤外線リモコンとして使用するプラグイン (Homebridge Nremo)
  • エアコン専用プラグイン (Homebridge Nremo Aircon)
  • Remoのセンサー情報を表示するプラグイン (Homebridge Nature Remo Sensor)

Homebridge Nremoはローカルで動くAPIを使っているので、Nature Remoのサーバー状態に左右されない点と好きな機器を登録できる利点がある。
下二つのプラグインは簡易版で説明した「Homebridge Nature Remo Platform」をインストールしていれば特に入れる必要はない。

以前紹介したプラグインの、「Homebridge Nature Remo Local」が複数のスイッチを登録するとエラーとなってしまうことがあるようなので、プラグインを「Homebridge Nremo」での説明に変更した。
同様の問題が起きている人は、プラグインを変更し、コンフィグを修正すれば動くはずだ。

Web画面のHomebridgeのプラグインページより、上部に「nature remo」と入力し、上記のプラグインをインストールしよう。

検索窓に「nature remo」と入力し検索、赤枠の3つの「インストール」を押してインストールしよう。

config.jsonの編集

この設定ファイルを編集して、Apple「ホーム」で表示される情報や、その他プラグインごとに定められた動作の指定等を行う事ができる。

config.jsonはWeb画面のHomebridgeの「コンフィグ」で編集する事ができる。

1つプラグインをインストールしたら、accessoriesかplatformsの中にどんどん書き足すと思えば良い。(例外のプラグインもあるが)
今回は3つプラグインをインストールしているのでaccessoriesの中に、
NatureRemo(Homebridge Nremo), NatureRemoAircon(Homebridge Nremo Aircon), remo-sensor(Homebridge Nature Remo Sensor)をそれぞれ追加している。

この時点であらかじめiPhoneのNature Remoアプリ側でエアコンの登録をしておこう。

以下はconfig.jsonの内容である。
ちなみにコンフィグのページに行くと既に”bridge”と”platforms”の中の内容は書かれているのでそこを除いた部分をコピぺしてみよう。

{
    "bridge": {
        "name": "Homebridge BC68",
        "username": "XX:XX:XX:XX:XX:XX",
        "port": 99999,
        "pin": "999-99-999"
    },
    "accessories": [
        {
            "accessory": "NatureRemo",
            "name": "シーリングライト",
            "host": "IPかホスト名",
            "path": "/messages",
            "delayBefore": 0,
            "delayAfter": 500,
            "timeout": 10000,
            "retry_interval": 500,
            "retry": 3,
            "s_on": {
                取得した赤外線情報
            },
            "s_off": {
                取得した赤外線情報
            },
            "command_order": [
                {
                    "on": [
                        "s_on"
                    ]
                },
                {
                    "off": [
                        "s_off"
                    ]
                }
            ]
        },
        {
            "accessory": "NatureRemoAircon",
            "name": "エアコン",
            "useDryForCool": false,
            "accessToken": "取得したアクセストークン",
            "applianceId": ""
        },
        {
            "accessory": "remo-sensor",
            "name": "センサー",
            "deviceName": "<DeivceNickName>",
            "mini": false,
            "schedule": "*/5 * * * *",
            "accessToken": "取得したアクセストークン",
            "sensors": {
                "temperature": true,
                "humidity": true,
                "light": true
            }
        }
    ],
    "platforms": [
        {
            "name": "Config",
            "port": 8581,
            "platform": "config"
        }
    ]
}

上記をコピペして必要箇所を編集しよう。
変更する必要がありそうな箇所は下線をつけている。

以下に各プラグインごとの設定を書いているので参考にしてほしい。

Homebridge Nremo (NatureRemo)プラグインの設定

編集箇所設定値
nameホームアプリ上で表示される名前
hostNature RemoのIPかホスト名(調べ方は後述
※Remoを固定IPにしてIP指定の方が安定してるかも
delayAfter実行時にcommand_order[]内に複数コマンドを指定している場合、指定時間ごとに送信できる。
※同時実行はできないので複数実行する場合は500以上を指定した方が良い
timeoutリクエストがタイムアウトするまでの時間
retryリクエストが失敗した時、再度実行する回数
retry_intervalリクエストが失敗した時、再度実行する間隔
“s_on”や”s_off”一つの名前ごとに一つの赤外線情報を書く事ができる。
赤外線情報の取得方法は後述
“s_on”,”s_off”の名称は自由に決めて良い。
1度の実行に複数送信したい時のために2つ以上追加しても良い。
command_orderの中の
onとoff
on側はホームアプリでオンにした時に送信したい赤外線情報、off側はホームアプリでオフにした時に送信したい赤外線情報の名前(このサンプルの場合は、”s_on”と”s_off”)を書く。

今回のサンプルでは”s_on”に赤外線でシーリングライトをオンにした赤外線情報を書いていると仮定しているのでそれを指定。
“s_off”にはシーリングライトをオフにした赤外線情報を書いていると仮定しているのでそれを指定している。

なお、コンマで区切ればそれぞれのスイッチ動作時に、複数の赤外線情報を順番に送信することができる。
例:”on”: [
“s_on”, “s_off”, “s_on”
]
このような指定だとホームアプリでオンにした時、順番に3つの赤外線情報がRemoから送信される。

複数のスイッチを追加したい場合は、追加したい数だけ斜体部分をコピペし、中身を編集しよう。(コンマで区切るのを忘れずに)

その他詳細や具体例はこちらをみた方がわかりやすいかもしれない。

Homebridge Nremo Aircon (NatureRemoAircon)プラグインの設定

編集箇所設定値
nameホームアプリ上で表示される名前
accessTokenアクセストークンを書く(取得方法は後述
applianceId複数台Remoを使う場合に見分ける為に必要(今回は省略)

Homebridge Nature Remo Sensor (remo-sensor)プラグインの設定

編集箇所設定値
accessTokenアクセストークンを書く(取得方法は後述
sensorstemperatureは温度、humidityは湿度、lightは照度。
trueでホームアプリ上に情報を表示する。falseで表示しない。

Remoのホスト名取得

Nature Remoと同じネットワークのパソコン(今回はMacのターミナルを使い、SSH接続したウィンドウとは別で)から以下のコマンドを叩く。

$ dns-sd -B _remo._tcp

返ってきた内容のInstance Name欄に「Remo-XXXXXX」があるはずなので、それをhostに記述する。

アクセストークンの取得

上記サイトからメールアドレスを入力し、ログインURLメールを受信する。
受信したらURLを開く。

トークン取得履歴ページと取得ボタンがある

こんなページにアクセスできるので、下のGenerate access tokenをクリックしてトークンを取得すればOK。

トークンが発行されるとこんなのが画面上に出るので、赤枠内の文字をコピーしよう。

取得したトークンはconfig.jsonの各プラグイン欄のaccessToken欄に入力する。

アクセストークンを利用するプラグインが複数ある場合、使いまわさず都度トークンを発行しよう。(今回の場合は2つ発行した。)

ホームアプリに追加してみる

ここで一旦保存ボタンを押して、右上の電源ボタンからHomebridgeを再起動させよう。

保存ボタンを押してから再起動ボタンを押そう

再起動が終わるとトップ(状態)画面に戻る。

トップ兼状態画面

上記の画面に戻ったら、表示されているQRコードをiPhoneのカメラで読み取るとホームアプリにアクセサリを追加できる。

黄色部分が追加された(今回はセンサーを照度のみtrueにしているのでセンサー類は照度しか表示されていない)
それ以外の他のアクセサリは元々HomeKitに対応した製品である。

画面に従ってホームアプリで設定すると、この時点でエアコンやRemoのセンサー情報等が追加されているはずだ。
ちなみにエアコンは操作できるようになっていると思うので確認してみよう。

※Homebridge Nremoを使っていない場合はここで完了。

赤外線情報の取得

赤外線情報の取得もとても簡単である。

まずNature Remo本体に向けて、登録したいリモコンのボタンを押す
今回の例ではシーリングライトの電源オンボタンを押すとする。(写真のリモコンは違うが)

すると、Remo本体が青く光る。(赤外線受信完了の合図)

その後、Macのターミナルでラズパイにログインするか、Homebridge管理画面の右上3点マークから「ターミナル」を開き、以下のコマンドを実行しよう。

XXXXの部分はRemoのIPアドレスかホスト名を書く。

curl -X GET 'http://XXXX/messages' -H 'X-Requested-With: curl' -H 'accept: application/json'
Homebridge管理画面のターミナルから実行するとこんな感じ

実行すると、{“format”から始まる羅列が出てくるので、上の画像の例で言うと、{ }の中の“format”〜528]までをコピーし、コンフィグサンプルの取得した赤外線情報へ貼り付けよう。

電源オンとオフが同じボタンのリモコンは一つの赤外線情報を登録させ、command_order内の”on”と”off”に同じ名前の赤外線情報を入れれば良いが、ホームアプリ上で操作した時に機器の実際の電源の状態とアプリ上で表示されている電源の状態の整合性が合わない事がある。
これは性質上仕方ないので、できるだけ電源オンオフが別れたリモコンがあれば良い。

終わったら保存してHomebridgeの再起動だ。

その後、ホームアプリからライトのオンオフを試してうまくいけば完了である。
Siriにも頼めるようになっているので試してほしい。

Nature Remoをしばらく操作していないと、最初の反応が遅くなることがある。
気になる人は以下の記事を参考にすると良い。

終わりに

多分躓く点としては、SSH接続〜Homebridgeのインストールまでの部分と、config.jsonの編集部分だと思う。

特にconfig.jsonはプラグインによって書き方が決められているので、違うプラグインを利用する時はプラグインの説明(NPM等)を見て書くことになるが、大体作業していくうちになんとなくわかっていくはずだ。
このブログでもおすすめのプラグインがあれば、書き方と一緒に紹介していきたいと思う。

というか個人的にHomebridge Config UI X(WebからHomebridge管理できるやつ)がめちゃくちゃ便利すぎて今まであーだこーだ悩んできたのはなんだったのかという感じだった。

何はともあれこれでiPhoneのホームアプリから操作するスマートホームの世界を楽しんでほしい!

コメント

  1. sugi より:

    おたくりんごさんの記事の通りやっていったらうまくHomebridge設定できました!
    非エンジニアでもできたので助かりました

    • おたくりんご おたくりんご より:

      無事うまくできたようで良かったです。
      報告ありがとうございます!

      • sugi より:

        おたくりんごさん

        あれから照明を複数登録しようとしてconfig.jsonを編集してみたのですが、こんなエラーが出てしまい登録できません…。もしお目に留まりましたらアドバイスいただければと思いますm(__)m

        Error: setMulticastLoopback EBADF
        at Socket.setMulticastLoopback (dgram.js:800:11)
        at Socket. (/usr/local/lib/node_modules/homebridge-nature-remo-local/node_modules/node-dns-sd/lib/dns-sd.js:505:14)
        at Object.onceWrapper (events.js:421:28)
        at Socket.emit (events.js:327:22)
        at startListening (dgram.js:149:10)
        at dgram.js:344:7
        at processTicksAndRejections (internal/process/task_queues.js:81:21)

        • おたくりんご おたくりんご より:

          私も試しに複数登録してみた所、同様のエラーが発生しました;
          照明1つしか利用(クラウド経由でエアコンは使っていますが)していなかったので気づきませんでした。
          環境周りが原因な気はしてますが、すみません詳しくは調べていません。

          とりあえずローカル経由で複数利用するなら、「Homebridge Nature Remo Local」プラグインをアンインストールし、別プラグインの「Homebridge Nremo」を使うと大丈夫です。(確認済み)

          この記事も「Homebridge Nremo」を使うよう修正しました。
          よければ試してみてください。
          情報ありがとうございました!

  2. sugi より:

    ありがとうございます!Homebridge Nremoを使ってみたらうまくいきました!
    もしamazonのほしい物リストなど公開していたら気持ち程度お礼したいので教えてくださいm(__)m

    • おたくりんご おたくりんご より:

      報告ありがとうございます。
      無事できたようで安心しました。

      お気持ちだけ頂きますね!
      良ければ今後ともこのブログをよろしくお願いします。
      いい記事だなとか思っていただいたら紹介や拡散して頂けると嬉しいです。

タイトルとURLをコピーしました