Raspberry Pi をHomekitのブリッジにするまでの手順メモ

# この記事について
[公式のドキュメント](https://github.com/homebridge/homebridge-raspbian-image/wiki/Getting-Started)を読みながら専用イメージを`Etcher`を使ってSDに焼けばおおまかな設定はおしまいなので全部自分でやりたい、他の用途で使っているRaspberry Pi環境にHomebridgeに追加したいという人向けです。

---

久しぶりに初期化していろいろ苦しんだのでメモ。
細かい手順は省きます。

環境
* Raspberry Pi3 Model B
* RASPBIAN STRETCH LITE

# Summary
1. SDカードにイメージを焼くぞ
2. 初期設定するぞ
3. とりあえず更新するぞ
4. node.jsをインストールするぞ[^1]
5. homebridgeをインストールするぞ[^2]
6. 追加設定するぞ

# SDカードにイメージを焼くぞ
1. [公式サイト](https://www.raspberrypi.org/downloads/)から~~Raspbianイメージ~~`Raspberry Pi Imager`をダウンロードしてインストールする。
2. SDカードを挿す
3. `Raspberry Pi Imager`でSDカードに必要なイメージを焼く。

イメージを手で焼きたい人向けのコマンド。（Mac用）

```
$ sudo diskutil list
$ sudo diskutil unmount <sdカード>
$ sudo dd bs=1m if=<DLしたRaspbianのイメージ> of=<sdカード>
```

ちなみにイメージ書き込み後にMac側からSSHを有効にすることも可能だとか。[^3]
とりあえず今回はディスプレイにつないで初期設定作業しています。


# 初期設定するぞ
前工程がいい感じに終ったらraspberry pi本体にSDカードを挿入して電源を入れましょう。
PWR LEDが点滅したりbootしなかったら失敗です。
諦めて電源を引っこ抜き、Macに挿し直して以下のコマンドを実行して前工程をやり直しましょう。

```:ダメになったSDカードをきれいにするぞ
$ diskutil eraseDisk MS-DOS <任意のボリューム名> <sdカード>
```

ちゃんとbootできたら以下の作業を実施します。

1. `$ sudo touch /boot/ssh`でSSHを有効にする。
1. `$ sudo raspi-config`で初期設定。
2. 弄るのは以下。
    3. `pi`のパスワード
    4. ロケールの設定
    5. ネットワーク設定（wifi運用しないなら不要）
    6. Expand Filesystem (Advancedから。やらなくてもいい？)
3. `$ ping raspberrypi.local`でAvahiの確認

終ったら`$ sudo shutdown now`でシャットダウンして然るべき場所にRaspberry Pi本体を配置しましょう。


# とりあえず更新するぞ
SSHが繋がる前提です。
以下のコマンドを実行します。別に前工程でシャットダウンする前にやってもOKです。

```
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade 
$ sudo apt-get install vim
```
テキストエディタはお好みで。

# node.jsをインストールするぞ
```
$ sudo apt-get update
$ sudo apt-get install -y nodejs npm
$ sudo npm cache clean
$ sudo npm install npm n -g
$ sudo n stable
```

# homebridgeとプラグインをインストールするぞ

GUIで管理できる`homebridge-config-ui-x`を合わせて入れるといろいろ楽です。([npm](https://www.npmjs.com/package/homebridge-config-ui-x))

```
$ sudo apt-get install libavahi-compat-libdnssd-dev
$ sudo npm install -g --unsafe-perm homebridge
$ sudo npm install -g --unsafe-perm homebridge-config-ui-x
$ sudo hb-service install --user homebridge
```
インストール完了後に`http://raspberrypi.local:8581`で管理画面にアクセスできます。
mDNSを切り替えている場合は適宜読み替えてください。

次に各種プラグインを導入します。
管理画面の「プラグイン」タブからも入れられますが、コマンドも載せておきます。
IRKitを使っているならIRKitプラグインを入れます。

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

Nature Remoを利用している場合は下記のプラグインを入れます。
ほかにもありますので必要に応じて導入してください。
アクセストークンの取得についてはプラグインのreadmeに書いてあったりしますので、今回は記載しません。

```
$ sudo npm install -g homebridge-nature-remo-cloud-aircon
$ sudo npm install -g homebridge-nature-remo-sensor
```

自分はDyson Pure Hot + Cool(HP04)を使っているのでこちらも入れます。

```
$ sudo npm install -g homebridge-dyson-pure-cool
```


# 追加設定するぞ

`/boot/config.txt`の末尾に以下を追記するとギラギラ光って鬱陶しいRaspberry Pi本体のPWR LEDが消灯状態になります。[^4] 

```/boot/config.txt
dtparam=pwr_led_trigger=none,pwr_led_activelow=on
```

あと昔は放置しているとhomebridgeが頻繁に死んでいたので毎日午前4時に再起動するようにしました。
`crontab`に下記を追記してください。

```
00 4 * * * /sbin/reboot
```

あとは[ufw設定](https://qiita.com/ARBALEST000/items/78f459567e1e90de99e5#ufw%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E8%A8%AD%E5%AE%9A%E4%BB%BB%E6%84%8F)も実施。



# 参考サイト
[^1]: [Raspberry PiにNode.jsとnpmの最新版をインストールする](https://qiita.com/mascii/items/77c685df65c4cbca9315)
[^2]: [Raspberry Pi 3 にhomebridgeを導入してsiriから家電操作できるようにした際の覚書](https://qiita.com/udon11/items/25e09769196cbbe397e3)
[^3]: [Raspberry Piをヘッドレスモードで利用する](http://ytooyama.hatenadiary.jp/entry/2017/01/12/204611)
[^4]: [Raspberry Pi 基盤 の LED を 消灯する](https://azriton.github.io/2017/09/20/Raspberry-Pi%E5%9F%BA%E7%9B%A4%E3%81%AELED%E3%82%92%E6%B6%88%E7%81%AF%E3%81%99%E3%82%8B/)