2017年1月7日土曜日

Raspberry Pi に Homebridge をセットアップする

MacBook ProにHomebridgeをセットアップしたら感動したので、Raspberry Piを購入してセットアップしてみました。

Raspberry Pi 3 Model BにNOOBSをインストール

セットアップするのに必要なもの

  • Raspberry Pi
  • microUSB電源ケーブル & アダプタ (2.5A以上推奨 )
  • SDカード ( 4GB以上 )
  • キーボード & マウス ( USBタイプ )
  • HDMIディスプレイ
  • 他のコンピュータ( Raspberry PiのOSをダウンロード & SDカードにコピーするため )
マウスなどは元々持っていたので、以下のものを購入しました。


OSのインストール

公式ページの手順に従います。今回は「NOOBS」を使っています。
https://www.raspberrypi.org/documentation/installation/

NOOBSをダウンロード

1GB程度ですが、ダウンロードに12時間かかると表示されて全然進まなかったので、BitTorrent版のイメージをダウンロードしました。

NOOBS
Version 2.1.0
Release date: 2016-11-29

SDカードにNOOBSをコピー

注意点ですが、SDカードは「FAT32」でフォーマットする必要があります。
手持ちのSDカードは64GBだったので、「exFAT」でフォーマットしていましたが認識してくれませんでした。Windows 10の標準フォーマッタでは「exFAT」 以外を選択することが出来なかったため、OS Xの「ディスクユーティリティ」を使いました。

「NOOBS_v2_1_0.zip」を展開したら、そのままSDカードにコピーします。

Raspberry Piの起動

SDカード、キーボード&マウス、HDMIケーブル、電源を接続すると自動的に起動します。
起動後、「Raspbian [RECOMMENDED]」を選択し、左上の「Install」をクリックしてインストール作業を継続します。
プログレスバーが100%になるまで待ちましょう。

Raspberry Piの設定

Raspberry Piのデスクトップ画面が表示されます。左上のRaspberry Piマークが、Windowsでいうスタートメニューになっています。
[Preference] > [Raspberry Pi Configuration]で設定画面を開き、
  • System
    • Change Password
      • パスワードを変更します。デフォルトは「raspberry」になっています
  • Interface
    • SSH: Enable
      • sshログインが出来るようにします
  • Localisation
    • Locale
      • Language: ja (Japanese)
      • Country: JP (Japan)
      • Character Set: UTF-8
    • Timezone
      • Area: Japan
    • Keyboard: US
      • ご自身のキーボードを選択します
    • WiFi Country: JP Japan

Wi-Fiのセットアップ

右上のWi-Fiアイコンをクリックし、ご自身のSSIDを選択します。

Raspberry Piの基本的なセットアップは以上です。

Raspberry Pi のパッケージ整理

不要なパッケージを削除

個人的には以下のパッケージが不要なので削除しました。
  • Wolframe
  • Sonic pi
  • Scratch
  • LibreOffice
$ sudo apt-get purge wolfram-engine sonic-pi scratch libreoffice*
$ sudo apt-get clean
$ sudo apt-get autoremove

パッケージを最新にする

$ sudo apt-get update
$ sudo apt-get upgrade

念のため日本語フォントをインストール

$ sudo apt-get install fonts-ipafont fonts-ipaexfont

ntpdの設定

$ sudo vi /etc/ntp.conf
-server 0.debian.pool.ntp.org iburst
-server 1.debian.pool.ntp.org iburst
-server 2.debian.pool.ntp.org iburst
-server 3.debian.pool.ntp.org iburst
+#server 0.debian.pool.ntp.org iburst
+#server 1.debian.pool.ntp.org iburst
+#server 2.debian.pool.ntp.org iburst
+#server 3.debian.pool.ntp.org iburst
+pool ntp.nict.jp ibrust

$ sudo service ntp restart
$ ntpq -p

Homebridge のインストール

参考: https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi

Git

$ git --version
git version 2.1.4

Make

$ make -v
GNU Make 4.0

GCC

$ g++ -v
gcc version 4.9.2 (Raspbian 4.9.2-10)

Node.js

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

Anahi header (Avashは最初からインストール済み)

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

Homebridge

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

起動できるかを確認します。
$ homebridge

Homebridgeのデーモン化 (System)

設定のダウンロードと修正

$ sudo curl -L -o /etc/default/homebridge https://gist.githubusercontent.com/johannrichard/0ad0de1feb6adb9eb61a/raw/1cf926e63e553c7cbfacf9970042c5ac876fadfa/homebridge
$ sudo vi /etc/default/homebridge
-HOMEBRIDGE_OPTS=-U /var/lib/homebridge
+HOMEBRIDGE_OPTS=-U /var/homebridge

$ sudo curl -L -o /etc/systemd/system/homebridge.service https://gist.githubusercontent.com/johannrichard/0ad0de1feb6adb9eb61a/raw/1cf926e63e553c7cbfacf9970042c5ac876fadfa/homebridge.service
$ sudo chmod 755 /etc/systemd/system/homebridge.service
$ sudo vi /etc/systemd/system/homebridge.service
-ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
+ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS

systemsへの登録

$ sudo useradd --system homebridge
$ sudo mkdir /var/homebridge
$ sudo chown homebridge:homebridge /var/homebridge
$ sudo su homebridge -s /bin/bash

homebridge$ vi /var/homebridge/config.json
{
    "bridge": {
        "name": "Homebridge",
        "username": "XX:XX:XX:XX:XX:XX",
        "port": 51826,
        "pin": "031-45-154"
    },

    "description": "Raspberry Pi",

    "accessories": [],

    "platforms": [{
        "platform": "cmdSwitch2",
        "switches": [{
            "name": "Link Station",
            "on_cmd": "/home/pi/Projects/HomeKit/link_station.rb on",
            "off_cmd": "/home/pi/Projects/HomeKit/link_station.rb off",
            "state_cmd": "/home/pi/Projects/HomeKit/link_station.rb state"
        }]
    }]}
}
homebridge$ exit

$ sudo systemctl daemon-reload
$ sudo systemctl enable homebridge

$ sudo systemctl start homebridge
$ sudo systemctl status homebridge
$ sudo journalctl -f -u homebridge

アクセサリの作成

Homebridgeの cmdSwitch2 で実行されるスクリプトをrubyで書いたのでインストールします。

homebridge-cmdswitch2

$ sudo npm install -g homebridge-cmdswitch2

Ruby

$ sudo apt-get install ruby2.1 ruby2.1-dev
$ sudo update-alternatives --install "/usr/bin/ruby" "ruby" "/usr/bin/ruby2.1" 1
$ sudo update-alternatives --install "/usr/bin/gem" "gem" "/usr/bin/gem2.1" 1

Ping

$ gem install net-ping

Nokogiri (結構時間かかりました)

$ gem install nokogiri

iOSの「ホーム」アプリにHomebridgeを追加

iOS 10の「ホーム」アプリを開いて、上記で設定した Homebridge を追加します。

sshでのログイン

sshでログインする場合には以下のようになります。

$ ssh pi@raspberrypi.local