DUVER Tips

Unity,Unreal Engine,XR関係のblog

Raspberry PiとHomebridgeでお家ハック

Raspberry PiとHomebridgeを使ってお家をIOT化してみる

今回はHomebridgeのインストールから、実際にIPhoneで制御するまでの
方法を紹介していきたいと思います。
webで色々と記事を見ながら、実装していったのですが、
行き詰った所がたくさんあったので、そのあたりもやっていきます。

使用するもの

今回使用する主な物は

  • Raspberry Pi 3
  • Nodejs
  • Avahi
  • Homebridge
  • Homebridge-cmd
  • Homebridge-Irkit

です
では早速、はじめて行きましょう。

Raspiを最新のバージョンにアップデートする。

ラズパイのターミナル画面を開き、以下のコマンドを入力します。

$ sudo apt-get update

$ sudo apt-get upgrade

少し時間がかかるかもしれませんが、ラズパイが最新のバージョンにアップデートされます。
何か表示されたらキーボードのYボタンを押してエンターで実行してあげてください。
ここで一度、ラズパイを再起動します。

Nodejsインストール

次にNodejsをいれていきます。
以下のコマンドを入力してください。

$ wget https://nodejs.org/dist/v6.2.2/node-v6.2.2-linux-armv6l.tar.gz
$ tar -xvf node-v6.2.2-linux-armv6l.tar.gz
$ cd node-v6.2.2-linux-armv6l
$ sudo cp -R * /usr/local/
$ cd ..
$ node -v
v6.2.2

node -v で現在ラズパイにインストールされている
nodejsのバージョンが表示されると思います。
今回、バージョンは6.2.2を使用していますが、
バージョンを7系でインストールすると、
後にインストールするhomebridgeがうまく起動されず、

can't find module......というエラーで先に進めなかった。

調べて見たところ、nodejsは奇数バージョンは最新であるが
不安定、偶数バージョンは安定バージョンらしい。。。

とりあえず7系ではHomebridgeが起動できなかったので
6系をインポートしてやる。(2017/1/14現在)

Avahiインストール

次にavahiをインストール。
以下のコマンドを実行

$ sudo apt-get install libavahi-compat-libdnssd-dev
Homebridgeのインストール

最後に、Homebridgeをインストールする。

同様に以下のコマンドを実行

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

これでhomebridgeをインストールが完了。
うまく動いているか確認するために

$ homebridge

で実行してみる。
warrningが6つ程でるが、公式をみても無視してくれとのことなので問題ないとおもいます。

Homebridge-cmd,Homebridge-irkit

こちらはhomebridgeでon_cmdなどを利用するためのプラグイン
以下のコマンドを入力。

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

ここまで実行すると、IPhoneのHomeアプリにHomebridgeという名前で認識されるはずです。
いったんここでHomebridgeとiphoneをペアリングしてあげましょう。

$ homebridge

を入力してiphoneでhomeアプリを開きます。
おそらくデフォルトで入ってると思いますが、
消してしまった人はもう一度取り直しましょう!!

アクセサリーにhomeridgeが追加されるはずです。

f:id:kiyotakay96:20170115060034p:plain

config.jsonの作成

使用するアクセサリーの情報をこのjsonファイルに記述して言ってあげましょう。
このjsonファイルはディレクトリが指定されており
/home/pi/.homebridge以下にいれてあげる必要があります。

$ cd /home/pi/.homebdige
$ nano config.json

でnano エディタを開き、以下のサンプルコードのように記述して上げてください。

{
    "bridge": {
        "name": "Homebridge",
        "username": "AA:BB:CC:DD:EE:FF",
        "port": 51826,
        "pin": "031-45-154"
    },
 
    "accessories": [
        {
            "accessory": "CMD",
            "name": "LED",
            "on_cmd": "/usr/bin/gpio -g mode 4 out;/usr/bin/gpio -g write 4 1",
            "off_cmd": "/usr/bin/gpio -g mode 4 out;/usr/bin/gpio -g write 4 0"
        }
    ]
}

bridgeのところの設定はどうやらなんでもいいみたいです。
usernameはmacaddress形式にすることだけ注意すればオッケーです(大文字)

これで準備完了。

$ homebridge

を入力してiphoneを見てみるとledというアクセサリが追加されているのを確認してください。

エラーまとめ

Homebridgeが起動できない

最初に試した時はエラーでhonebridgeが起動できませんでした。
Can't find module......
と表示され、調べるとどうやらnodejs側の
エラーだったので、バージョンを7系から
6系におとして、実行してみた所無事解決。

ウェブで検索してみても、同様のエラーで
困ってる人が何人かいました。

一度ペアリングした後、iPhoneから認識されない
cant find config.json

Config.jsonを記述した後も、このエラーが
でる場合、ファイルが指定されたディレクトリにない事が考えられます。

/home/pi/.homebridge以下にファイルがあるか確認しましょう。

また、
sudo homebridge

でhomebridgeを起動すると、ディレクトリが
/root/.homebridgeの方に変更されてしまうので、
Homebridgeで起動しましょう。(sudoなし)