【Homebridge】 Nature RemoをAppleホームアプリ(Siri)に完全対応化

Homebridge
スポンサーリンク

今回遅ればせながらNature RemoをGETすることが出来たので、この機会に我が家の赤外線リモコンを全て黒豆(Broadlink RMmini)からNature Remoに切り替えていきたいと思います。

Nature Remo自体は前々から知ってはいたんですが、黒豆と比べると少々値段が高いのがネックだったんですが、Nature Remo miniの方ではなく、Remoの方であれば温湿度&照度&人感センサーと複数のセンサーがついていて、かつ黒豆よりも広範囲に届くような設計(壁掛け)であることを考えるとNature Remoの方が使いやすいとも言えます。

Nature Remoはスマートホームデバイスの中では珍しく国産の赤外線学習リモコンになります。特にエアコンの操作に特化しており、国産メーカーであれば基本的にプリセットでリモコンが登録しており、ワンタッチで使用することが出来ます。

今回はNature RemoをAppleホームアプリ(homekit)で操作できるようにラズベリーパイという小型サーバを使って、ライフハックしていきましょう。使用するプラグインは3つになります。なんで3つなのかというと、どれも一長一短があって、おそらく全てを登録することで漸く一人前というのがTKの印象です。

そのため今回は以下の3つを使ってhomebridge構築していきましょう。

  • エアコン特化プラグイン
  • センサー情報(温度湿度照度情報)を取得するプラグイン
  • 赤外線学習リモコン特化プラグイン

今回導入するプラグイン

エアコン特化プラグイン

エアコン特化プラグインは、Nature Remoと同じように見た目にも使いやすいように作られたプラグイン(homebridge-nature-remo-aircon)です。

バーをスライドすることで温度を変えたり、冷房・暖房・自動に切り替えることが出来ます。除湿/送風が対応していないのが、少し残念ですが、個別にボタンを作ることも出来るので、そちらは学習リモコンの方に組み込みます。

センサー情報(温湿度&照度)プラグイン

センサー情報プラグインは、ホームアプリ上で温湿度&照度を確認できるプラグイン(homebridge-nature-remo-sensor)です。これを使用することでSiriにNature Remoで取得した部屋の温湿度を確認することが出来ます。

但し、このセンサーの情報を使用してホームオートメーションは出来ないらしいです。ホームオートメーションを使用する場合にはEve roomなどのセンサー特化のデバイスを使う必要があるみたいです。

赤外線学習リモコン特化プラグイン

このプラグインは、赤外線ボタンを一つずつNature Remoに学習させて、homebridgeにコードとして登録していくやり方です。ボタンを一つずつ登録しなければならないので少し登録が手間ですが、その分自由度が高いので、やりようによっては一番使いやすいです。

但し、対応しているのはON/OFFの機能だけなので、スライドバーのような画面にはなっていません。

システム構成と必要なもの

では、今回の構成に必要なものを整理していきます。

Nature RemoもしくはNature Remo mini

先ずはNature Remoそのものですね。miniでも基本的には操作は一緒になりますが、miniの場合は温度センサーしかついていないのでセンサーのプラグインは、不要(意味ない)です。

Raspberry Pi(通称ラズパイ)

もう一つは、ラズパイと呼ばれる簡単自宅サーバですね。勿論これを使わなくても要はLinux系のサーバであれば言い訳なので、Mac Miniサーバであっても、NASの中にDockerと呼ばれるツールを入れたものを使っても動きます。

ただ個人的にはなんだかんだラズパイが一番操作も簡単で、セキュリティ的にも気兼ねなく使えるという点では一番気に入っています。

インストール手順

では早速インストール手順について説明していきたいと思いますが、本手順ではラズパイの初期設定が完了していることを前提として、nodeソフトのインストールから説明しています。ラズパイの初期設定が完了していない場合は、まずは完了させてから本手順を実施してください。

node と npmのインストール

今回nodeはv12.18.1を使用していますが、新しいものにしておけばとりあえずOKだと思いますが、一部のプラグインでは互換性チェックで動作しないこともあります。

それ以上に新しいものの場合には、インストールしている他のプラグインが動かなくなる可能性もあるので、そこは注意してください。この手順で実施する方であれば、とりあえずはv12.18.1を使うことをお勧めします。

#nvm v10.15.0のインストール
$ nvm install v12.18.1

#インストールされたversionを確認
$ which node
/home/pi/.nvm/versions/node/v12.18.1/bin/node
$ node -v
v12.18.1

#npmの最新版をインストール
$ sudo npm -g install npm@latest
$ npm -v
6.14.5

homebridgeのインストール

nodeが準備できたら、次はhomebridgeをインストールします。これは特にversionを指定せずにインストールしていますので、これを参考にした場合にはまたversionが変わっているかもしれません。

#homebridge の依存ライブラリをインストールする。 //以前に実行済の場合はこの手順はスキップ
$ sudo apt-get install libavahi-compat-libdnssd-dev

#homebridgeのインストールを実行します
$ sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x
/home/pi/.nvm/versions/node/v12.18.1/bin/homebridge -> /home/pi/.nvm/versions/node/v12.18.1/lib/node_modules/homebridge/bin/homebridg

#Web管理ツールのインストールを実行します
$ sudo hb-service install --user homebridge

NatureRemoプラグインのインストール

ここでようやくNatureRemoのプラグインをインストールしていきます。今回はNatureRemoの全機能を使い倒すということで、一気に複数のプラグインをインストールしていきます。

インストール手順としてはエアコン以外は以下のコマンドを実行するだけです。

$ npm install -g homebridge-nature-remo-sensor
$ npm install -g homebridge-nremo

特にERRORなく、インストールが完了すればOKです。

エアコンのプラグインの方はもう少し面倒で、動作するプラグインがGithub上にしか置いていないので、少々面倒な手順を踏みます。

先ずは適当なフォルダを作ってその下で以下のコマンドを実行します。(例えば、/home/pi/tempなどを作ってください。コマンド例:mkdir /home/pi/temp)

$ git clone https://github.com/kmaehashi/homebridge-nature-remo-aircon.git

そうするとgithubからソースコードが入手できますので、そこで出来たフォルダに中に移動して今度は以下のコマンドを実行してください。

$ cd homebridge-nature-remo-aircon
$ npm install

これでインストールは完了してはいるんですが、あとはこのフォルダをnodeのフォルダに移動させる必要があります。

今回の手順をやっている方であれば以下のコマンドで移動が可能です。

$ mv homebridge-nature-remo-aircon/ /home/pi/.nvm/versions/node/v12.18.1/lib/node_modules/

これでインストールは完了になります。

因みにnodeを複数持っている場合には予め以下のコマンドでnodeのフォルダの位置を確認して、現在使用しているnodeの下に移動するようにしてください。

$ which node
/home/pi/.nvm/versions/node/v12.18.1/bin/node

アクセストークンの取得

次にNature Remoアプリで作成したアカウントを使って、アクセストークンを取得していきましょう。

Nature RemoはクラウドAPIと呼ばれる方法を使って、インターネットから家電を操作しています。アクセストークンとは、その際に使用するパスワードみたいなものです。

先ずは以下にアクセスして、作成したNature Remoアカウントでログインしてください。

Nature
Nature

ログインが完了したら、以下のような画面になっていると思うので、ページ下部にあるGenerate access tokenをクリックしてください。

あとは手順通りに進めていけば、以下のようにアクセストークンが取得できるはずです。これをメモ帳などにコピーしておきましょう。

因みにこのパスワードはこの画面を閉じると2度と表示できなくなるので注意してください。もし間違って閉じてしまった場合には、もう一度作成して、古いのを削除するようにしましょう。

設定ファイルの編集

ここまで出来たら、あとは設定ファイルを編集してあげるだけ何ですが、エアコンプラグインとセンサープラグインは以下のように書いてあげれば設定完了です。

赤外線学習リモコンプラグインに関しては、ボタンを一つずつ”学習”させてあげないといけません。先ずは最終的な設定状態を以下に示します。

$ vim ~/.homebridge/config.json
{
	"bridge":
	{
		"name": "Homebridge",
		"username": "B8:27:xx:xx:xx:xx",   //ラズパイのMACアドレス
	        "port": 51826,
	        "pin": "031-45-154"
	},
        "accessories": [
	{
		"accessory": "NatureRemoAircon",  //エアコンプラグイン
		"name": "Air Conditioner",
		"access_token": "ACCESS_TOKEN",  //https://home.nature.global/で取得
		"appliance_id": "",  //ここはRemoが一つしかない場合は空欄でOK
                "skip_command_request_if_no_change": true
	},
	{
		"accessory": "remo-sensor",  //センサープラグイン
		"name": "センサー",
 		"deviceName": "<DeivceNickName>",
 		"mini": false,
		"schedule": "*/5 * * * *",
		"accessToken": "ACCESS_TOKEN",   //https://home.nature.global/で取得
		"sensors": {
			"temperature": true,
			"humidity": true,
			"light": false
 		}
	},
	{
		"name": "TV On/Off",    //学習リモコンプラグイン
		"accessory": "NatureRemo",
		"host": "NATURE REMOのIPアドレス",
		"path": "/messages",
		"delayBefore": 0,
		"delayAfter": 0,
		"timeout": 2000,
		"retry_interval": 500,
		"retry": 3,
		"s_on": {"format":"us","freq":40,"data":[]},
		"s_off": {"format":"us","freq":40,"data":[]},
		"command_order": [
			{ "on": ["s_on"] },
			{ "off": ["s_off"] }
		]
		}
	]
}

環境によって変わる部分についてだけ補足すると、ACCESS_TOKENの部分は、前述のNatureRemoAPIサイトで取得したものを記入してください。またappliance_idについては、とりあえずNatureRemoを一つしか持っていないユーザーであれば、空欄でOKです。

appliance_idの確認方法

複数のNatureRemoが自宅にある場合は、appliance_idを入力しないとコマンドどちらか片方のNature Remoにしか行かなくなってしまうので、以下のコマンドで取得する結果からid情報を抜いていく必要があります。少々細かいので次で説明します。

/usr/bin/curl -X GET "https://api.nature.global/1/appliances" -H "Authorization: Bearer ACCESS_TOKEN"

そうするとコマンドラインに以下のようなアウトプットが出てくると思いますので、先ずはメモ帳に全てコピーしてしまいましょう。

pi@raspberrypi:~ $ /usr/bin/curl -X GET "https://api.nature.global/1/appliances" -H "Authorization: Bearer ACCESS_TOKEN"
 [{"id":"xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx","device":{"name":"Remo mini","id":"yyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyy","created_at":"2020-01-31T13:40:16Z","updated_at":"2020-02-01T11:38:37Z","mac_address":"11:11:11:11:11:11","serial_number":"2W2222222","firmware_version":"Remo-mini/1.0.87-g8b06f0e","temperature_offset":0,"humidity_offset":0}

この中のxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx部分がappliance_idになります。

間違いやすいので気をつけて欲しいんですが、似たようなidが複数存在します。例えばNature Remoエアコン以外のプラグインのidがあったり、センサー用のプラグインのコードがあったりとかなり間違えやすいです。

なので、あくまでもNature Remo airconの情報だけを抜くようにしましょう。エアコンかどうかは名称から判断したり、エアコンのメーカー名などが含まれているものがそれになります。

またyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyもかなり似ていますが、これではないので注意してください。

あとは確認できたappliance_idをconfig.jsonにコピーすればOKです。

赤外線学習リモコンに学習させる

赤外線学習リモコンの部分は、”s_on”: {“format”:”us”,”freq”:40,”data”:[]}となっていますが、[]部分に学習データを入力する必要があります。

学習させる手順は大まかには以下になります。

  1. Nature Remoに向けて学習させたいボタンを押す(Nature Remoが青く光る)
  2. Macならターミナル(Windowsならcurlコマンド使えるようにする)でコマンドを打つ
  3. 表示された{“format”:”us”,”freq”:40,”data”:[404,505,505,~~~~~]}をコピーして、config.jsonの該当箇所に貼り付ける
  4. 1~3を繰り返し

というような感じです。

先ずは以下の動画のような感じでNature Remoに向かってリモコンのボタンを押してください。

次にすかさずMacなどのパソコンのターミナルで、以下のコマンドを入力。

/usr/bin/curl -i "http://NATURE_REMOのIPアドレス/messages" -H "X-Requested-With: curl"

するとこんな感じで表示がされるはずです。

HTTP/1.0 200 OK
Server: Remo/1.0.77-g808448c
Content-Type: application/json

{"format":"us","freq":37,"data":[3387,1759,406,1301,399,1311,398,472,404,460,406,464,407,1301,407,460,409,459,408,1329,381,1300,399,468,399,1311,408,458,407,462,408,1304,403,1302,400,470,406,1303,399,1310,407,469,391,469,405,1303,407,459,406,463,398,1314,394,469,407,464,404,461,408,463,403,461,407,489,371,469,410,458,399,468,401,493,382,459,399,470,406,461,405,462,409,458,400,8995,3366,1765,397,1310,400,1311,388,480,389,474,402,484,377,1314,404,463,401,469,400,1308,401,1309,399,467,394,1317,399,467,401,465,396,1316,400,1310,392,475,391,1335,383,1307,402,467,392,476,399,1308,394,478,399,467,400,1310,391,474,402,465,393,477,399,467,402,464,362,508,399,469,393,475,393,474,402,464]}

そしてこれをconfig.jsonにそれぞれ貼り付けてあげればOKです。

あとはこれを学習させたいリモコンのボタンの分だけ繰り返します。少し時間がかかりますが、頑張るしかないですね。

因みにその他のいじる可能性があるパラメータですが、”delayBefore”は、ボタンを押してからの時間差を規定している部分です。少し時間差をかけたい時には、この値を1000msなどにするとラグが出ますが、基本的に0で良いと思います。

“command_order”については、一つのボタンをクリックした後に複数の赤外線ボタンをクリックさせたい時に使います。例えば{ “on”: [“s_on”, “s_off”, “s_on”] }にすれば、電源をつけて消してもう一度つけるなど。ボリューム操作の場合は、一つずつ押すのが面倒なので、{ “on”: [“s_on”, “s_on”, “s_on”] }などにすると良いと思います。

あとは”delayAfter”ですが、これは”command_order”でのコマンド間のインターバル時間になります。しかしここもあまり値を大きくすると遅さを感じることになるので、あまり大きな値にすることはオススメしません。どうしても入力などで不具合が出た時にだけいじりましょう。

起動の確認

あとはhomebridgeを起動してみて、エラーなどが出ないことを確認して、起動が無事確認できれば、Apple Homekit化の成功となります。

# homebridgeの起動確認
$ homebridge
[2019-10-14 1:01:51 AM] Loaded plugin: homebridge-nature-remo-sensor
[2019-10-14 1:01:51 AM] Registering accessory 'homebridge-nature-remo-sensor.remo-sensor'
[2019-10-14 1:01:54 AM] Loaded plugin: homebridge-nature-remo-cloud-aircon
[2019-10-14 1:01:54 AM] Registering accessory 'homebridge-nature-remo-aircon.NatureRemoAircon'

# homebridgeのサービス起動
$ systemctl start homebridge
「homebridgeのサービス起動」

まとめ

如何でしたでしょうか?少し今回は3つのプラグインを同時にインストールしたので、作業量としては少し多めになってしまいましたね。

しかしこれで我が家にある赤外線リモコン達をようやく一掃して全てAppleホームアプリにまとめることが出来ました。かかった時間が長かったですが、これから節約できるだろう時間を考えれば、大満足の結果です。

皆さんもちゃんと動かせるようになったでしょうか?

なかなかやり方がわからないうまくいかないという方はコメント欄に書いて頂ければできる限りアドバイスしますので、お気軽にどうぞ。

スポンサーリンク
スポンサーリンク
Homebridge スマートホーム
こちらの記事も読まれています
スポンサーリンク
スポンサーリンク
\この記事が役に立ったらシェアしよう/
この記事を書いた人
Taka

スマートホーム x IT x 子育て。モバイルシステムエキスパート。独学でプログラミング勉強してWEBアプリ作ったりしながら、日々の生活の中で面白そうな情報を記事にしています。3万PV/月達成しました!お仕事の依頼はお問合せからお願いします。

\フォローする/
デジライン
Subscribe
更新通知を受け取る »
guest
8 Comments
新しい順
古い順 いいねが多い順
Inline Feedbacks
View all comments
たこにこ

Taka様、すみません今度は2台のテレビをONOFFしたのですが、また記述をご確認して頂けないでしょうか……。上手く行きません↓↓↓

たこにこ

!!!!!!!!!!!!!すごい
出来ました
本当に本当にありがとうございました!!!

たこにこ

Nature Remo を追加で購入してアプライアンスのid取得のコマンドをterminalにて打ちましたが、command not foundとなってしまいます

たこにこ

ありがとうございます。何とか見つける事が出来ました。
…が、打ち込みをし、Homebridgeを起動し、エラーが出ない事を確認しましたが、エアコンのアイコンは2つ出せましたが、どうやら、2つとも1つのエアコンしか動きません…。コマンドを貼り付けさせて頂きますので教えて頂ければと思います。どこかおかしい場所ありますか?

たこにこ

!!!!出来ました!!!!
有難うございます。このご恩は忘れません…

お得なプライム特典はこちら