Homebridgeを使ってSesameとNature RemoをHome kitに対応させてみる

どうも〜Yukiです。

スマートロックとスマートリモコンを導入し、しばらく経ちました。
やはりスマホから操作出来るのは非常に便利です。仕事から帰ってくる時に、冷房をオンにしておくだとか、鍵を開けておくだとか、色々な操作が楽になりました。

IoT機器はまだまだ少ないんですが、今の状態でも超便利です。これからもっと増やしていきたいですね。

今回は、これらの操作を1つのアプリで操作するために、Appleのホームに対応させたいと思います。

必要なもの

今回の環境はこんな感じです。

パソコン(自作サーバー)

CPU:i3 9100
マザーボード:AsrockのH310のやつ
メモリ:8GB
他にもSSDやらHDDを積んでおります。FつきのCPUを選ぶとサーバーなのにグラボを積まなければいけなくなるので注意。

OS

Ubuntu 18.04 LTS

今回インストールしたものは、
・Node.js ver14.x
・Homebridge
・Homebridge プラグイン
・その他コマンド

コマンドは、インストールされていなかったIfconfig(net-tools)、curlなどです。インストールされていなければターミナルにインストールするコマンドが表示されるので、適宜インストールしましょう。ちなみにエディタはAtomが一番オススメ。nanoはsudoしなければ編集出来ないファイルで使うか、Atomで編集したものをsudo cpしてます。

Homebridgeは現在Homebridge-Config-XというGUIでブラウザ上から操作出来るプラグインが推奨されているようですが、再起動するとブラウザからアクセス出来なくなる問題が多発したので大元のHomebridgeのみをインストールします。

ライブラリインストール

私がUbuntuをインストールしたときに、いつも最初にインストールするコマンドを載せておきます。これを実行すれば大抵欲しいコマンドはインストールされます。中身をよく見て、自分に必要ないものは消してください。

sudo apt -y install autoconf build-essential cmake curl git-core libssl-dev libtool libboost-all-dev pkg-config yasm ffmpeg sqlite3

Homebridgeをやる方はffmpegとかsqlite3とかautoconfとかはいらないと思います。

Node.jsのインストール

Node.jsは14系をインストールします。EPGStation、Mirakurunもインストールする予定なので、自分が使用したい全てのプログラムに対応したバージョンを選ばなければいけません。といってもそんなに気にしなくても動きます(動きました)。

# リポジトリ追加
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -

# Node.js インストール
sudo apt-get install -y nodejs

# バージョン確認
node -v

14系が表示されればOKです。

Homebridgeのインストール

Homebridgeをインストールしていきます。avahiというライブラリがnature remoの方で必要なようですが、私はインストールしなくてもいけました。インストールしなくていいならしない方がいいです。心配な方はどうぞ。

# Avahiインストール
sudo apt-get install libavahi-compat-libdnssd-dev

# Homebridgeインストール
sudo npm install -g —unsafe-perm homebridge

# Homebridge起動
homebridge

起動してみると、config.jsonがないよと怒られました。自動で作成はしてくれないようなので、とりあえずCtrl+Cで終了させます。

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

次にプラグインのインストールをします。今回使ったものは2つです。

# Sesame インストール
sudo npm install -g homebridge-sesame

# Nature Remo Aircon
sudo npm install -g homebridge-nature-remo-cloud-aircon

ちなみにセンサーのプラグインもありますが、nature remo miniのセンサーはホームアプリのオートメーションの条件には使えません。温度を見るだけです。何のためのセンサーなんだ。

温度はnature remo cloud airconの方で見られるのでセンサーのプラグインはインストールしません。

Config.json

ホームフォルダに隠しフォルダで[.homebridge]があるので、ファイルマネージャー上でCtrl+Hと打ち、隠しフォルダを表示させます。

.homebridgeの中にconfig.jsonをAtomで作成します。

Config.jsonが間違っている場合はHomebridgeは起動しません。

Linterサイトで間違っているところを探して修正しましょう。
,(カンマ)なども重要ですよ。

Config.json

{
    "bridge": {
        "name": "Homebridge",
        "username": "B8:27:EB:F9:4D:D7",
        "port": 51826,
        "pin": "031-45-154"
    },

    "accessories": [
        {
          "accessory": "NatureRemoAircon",
          "name": "エアコン",
          "access_token": “TOKEN”,
          "appliance_id": "",
          "skip_command_request_if_no_change": true
        }
        ],

    "platforms": [
          {
          "platform": "Sesame",
          "token": “TOKEN”
          }
        ]
}

僕が今回作成したconfig.jsonはこんな感じです。

User nameとpinはご自分の好きなものに変更してください。

"accessory": "NatureRemoAircon"
"platform": "Sesame"

上記は変更してはいけません。nameなどのオプションは自由に変更して問題ないです。

AirconのaccessTokenはNature RemoのAPIを取得して入力します。TOKENは””で囲ってください。

SesameのtokenはセサミのAPIを入力します。

appliance_idには、Appliance IDを入力しますが、Nature Remoに登録しているエアコンが1台の場合は必要ないようです(心配な方は入力してください)。取得するには以下のコマンドを入力します。TOKENを消して入力してください。

# Appliance IDの取得
curl -X GET “https://api.nature.global/1/appliances” -H “Authorization: Bearer TOKEN” > ApplianceID.json

するとコマンドを実行したディレクトリにApplianceID.jsonが出来ているので、Atomなどで開きます。作成したものはインデントされていないので、整形しましょう。

Atom上でCtrl+Fを押し、idで検索するとわかりやすいかと思います。idを入力したら、いよいよHomebridgeを使用出来ます。

Homebridgeを起動させて、QRコードを読み込むか、PINを入力して、ホームアプリに追加しておきましょう。

Homebridgeの自動起動

Homebridgeを再起動するたびに起動するのは面倒です。デーモン化させてしまいましょう。Nodejsを利用しているのでpm2が使用出来ます。

# Homebridge.serviceを作成
sudo npm install pm2 -g
sudo pm2 startup
sudo pm2 start homebridge
sudo pm2 save

再起動して、sudo pm2 statusでonlineになっていれば動作しています。

iPadをハブにして外出先から操作する

Appleのホームアプリは、ハブを追加することで外出先から操作出来るようになります。

ハブに出来るデバイスは、HomePod、Apple TV、iPadです。僕はiPadしか持っていないのでこれを使用します。正直モバイル端末をハブにするのは向いていませんが、最近は持ち歩くことも少なくなったのでこれを使用します。

ホームアプリではこんな感じです。正直なところ応答なしはよく出ます。対処法は特にないです。待つかサーバーを再起動しましょう。

まとめ

久々に長い記事になってしまいました。

皆さんは無事動作したでしょうか?

僕は3週間ほど格闘し、ようやく動きました。RaspberryPiで出来なくて諦めてDesk miniを買って壊れて自作サーバーを作りモチベーションを上げてやっと出来たので、やる気元気根気がない人はエラー祭りで諦めてしまうかもしれません。

一つ一つエラーを検索し、直していけばいつか出来るのでエラーが出まくる人は頑張ってください。

それでは

Posted by Yuki