今回遅ればせながら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アカウントでログインしてください。
ログインが完了したら、以下のような画面になっていると思うので、ページ下部にある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”:[]}となっていますが、[]部分に学習データを入力する必要があります。
学習させる手順は大まかには以下になります。
- Nature Remoに向けて学習させたいボタンを押す(Nature Remoが青く光る)
- Macならターミナル(Windowsならcurlコマンド使えるようにする)でコマンドを打つ
- 表示された{“format”:”us”,”freq”:40,”data”:[404,505,505,~~~~~]}をコピーして、config.jsonの該当箇所に貼り付ける
- 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
まとめ
如何でしたでしょうか?少し今回は3つのプラグインを同時にインストールしたので、作業量としては少し多めになってしまいましたね。
しかしこれで我が家にある赤外線リモコン達をようやく一掃して全てAppleホームアプリにまとめることが出来ました。かかった時間が長かったですが、これから節約できるだろう時間を考えれば、大満足の結果です。
皆さんもちゃんと動かせるようになったでしょうか?
なかなかやり方がわからないうまくいかないという方はコメント欄に書いて頂ければできる限りアドバイスしますので、お気軽にどうぞ。
コメント
コメント一覧 (15件)
コメント失礼します!!
ラズパイはつけっぱなしで無いとダメでしょうか?
ゆうたさん
はい、ラズパイは常時起動させておかないと、ホームアプリからの操作はできませんよ。
ホームアプリは、直接Nature Remoではなく正確にはラズパイで起動しているhomebridgeサービス経由で操作しています。
なのでラズパイが起動していなければ、応答なしとなってしまいます。
コメント失礼します。わかりやすい記事ありがとうございます。今も黒豆とremoを並行して使っています。黒豆をhomebrigeで動かして、remoはアプリのみと言った形です。一度remoに統一しようと思い、homebrigeで使ってみたのですが、エラーになったり、また動いても反応が悪かったり、homebrige経由では使い物にならなかった記憶があります。その時使用していたremoのプラグインは何を使っていたか、忘れてしまったのですが、今回Takaさんは黒豆からremoにした時、動作が遅いや、エラーとかになったりしていませんでしょうか?もし無いようでしたら改めて私もremoに一本化しようかと思っています。
Zionさん
コメントありがとうございます。
我が家はもう黒豆から全てRemoに移行済みで、基本的に個別の操作(テレビ・エアコン)はアプリから実施して、オートメーションはhomebridge経由のhomekitでやっているような感じです。
正直エアコンのプラグインは結構エラーが多いので、使う場合には学習リモコンとして個別のボタンを登録した方がエラーなく使えると思います。また最近のエアコンは機能が多いので、エアコンプラグインだとあまり細かく設定できないので、結局は一つずつリモコンに設定してあげた方が結果的に便利です。
エアコンの赤外線は、テレビと違って、1つの電波で全情報(オン・オフ・温度・風向・センサー・自動掃除など)が含まれているので、リモコンから直接ボタンを登録してあげればそこまでエラーなく使えると思います。
ありがとうございました。大丈夫そうですね。remoへの移行をしてみようと思います。
Taka様、すみません今度は2台のテレビをONOFFしたのですが、また記述をご確認して頂けないでしょうか……。上手く行きません↓↓↓
うーん、全体が見えないので合ってるか分からないんですが、閉じ括弧の数は合ってますか?
なんとなく、この括弧が要らない気がします。
!!!!!!!!!!!!!すごい
出来ました
本当に本当にありがとうございました!!!
Nature Remo を追加で購入してアプライアンスのid取得のコマンドをterminalにて打ちましたが、command not foundとなってしまいます
たこにこさん
コメントありがとうございます。
おそらくパソコンにcurlコマンドがインストールされていないからだと思います。インストールされていないのであれば、curlコマンドをパソコンにインストールする必要が有りますが、OSの種類によってインストール方法が違います。
Macの場合は、最初からインストールされているはずなので、以下のコマンドでcurlコマンドのフルパスを探してみてください。
これで見つからなければ、homebrewで追加インストールしてあげる必要があります。
因みにcurlコマンドは、以下でインストールできると思います。
Windowsの場合は、以下サイトからインストールする形になるかと思います。
https://curl.haxx.se/download.html#Win64
よく分からなければ、またご連絡ください。
ありがとうございます。何とか見つける事が出来ました。
…が、打ち込みをし、Homebridgeを起動し、エラーが出ない事を確認しましたが、エアコンのアイコンは2つ出せましたが、どうやら、2つとも1つのエアコンしか動きません…。コマンドを貼り付けさせて頂きますので教えて頂ければと思います。どこかおかしい場所ありますか?
記述方法が間違えていますね。
今の場合だと、appliance_idが認識されていないので、片方しか操作されないんだと思います。
以下の通りにappliance_idをそれぞれに書くようにしてみてください。
!!!!出来ました!!!!
有難うございます。このご恩は忘れません…
コメント失礼します。スマートホーム初心者です…Nature RimoをiPhoneのホームAppから操作したいと思い、検索しこの記事を見つけさせて頂きました。当方、ラズパイは所持しておらず、Macで同様のことができないでしょうか?初歩的な質問で申し訳ないのですが、お答えいただけると嬉しいです。
Appleさん
Macでも可能ですよ。Macの場合は、homebrewというツールを使って、homebridgeをインストール・起動することは可能です。
詳しい手順は以下で解説しています。
https://simple-was-best.com/blog-entry-mac-package-homebrew.html
但し、Macでhomebridgeサービスを起動している時にしかホームアプリが使えないので、お試し利用、もしくは、
iMacやMac miniのようなサーバタイプのものを24時間稼働させておくみたいにしないと常用は厳しいと思います。