「Hey, Siri! LEDつけて」でLEDを点灯させる

# 前提
RaspberryPi初めて使ったメモ

# やりたいこと
「Hey, Siri! LEDつけて」でLEDを点灯させる

# やる方法
AppleのSiriのHomekitを使ってRaspberrypi3に接続したLEDを光らせる

# 使うもの
- Raspberry Pi 3
    - microSD 4GB
    - [Raspbian Jessie lite](https://www.raspberrypi.org/downloads/raspbian/)
- LED
- ブレッドボード
- 抵抗(2kΩ)
- ジャンパー線（メスとオスの先端になっているもの）２本
- [Homebridge](https://github.com/nfarina/homebridge)

# ちょっとした詳細
## Homekit
Siri(iOSのデバイス）から家電を操作するためのフレームワーク
## Homebridge
HomekitのAPI機能をエミュレートするためのNode.jsサーバ
## Node.js
サーバーサイドjavascript
http://qiita.com/hshimo/items/1ecb7ed1b567aacbe559
で説明されていた「Apache+mod_php+webアプリケーション」がなんとなくわかりやすかったです。
## npm
Node.jsのパッケージマネージャー

# やりかた
## RaspberryPiのセットアップ
うっかり4GBのSDカードを買ったのでRaspbianのLiteじゃない版が入らなくて、CUIのみのLITE版をインストールする

1. リンク先からRaspbian jessie Liteをダウンロード
2. ちょっと忘れてしまったので割愛します
3. が、MacのterminalからSDカードにosのイメージを書き込みました

- RaspberryPiの環境セットアップ
- Wifi設定とSSH接続できるようにする
この辺も忘れてしまいました…

## Homebridgeのインストール
### NodeJSのインストール
Homebridgeの[Wiki](https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi)を参考にしてインストールを行いました

apt-getの更新

```
sudo apt-get update
sudo apt-get upgrade
```

gitとmakeのインストール
`sudo apt-get install git make`
(HAP-NodeJSかどこかで使われているみたいで、これがないとエラーがでました）

[NodeJS](https://nodejs.org/en/)のインストール
最初は適当にやっていたのですが、エラーがたくさん出たので色々探していて、homebridgeの[wikiにあったリンク](http://blog.wia.io/installing-node-js-v4-0-0-on-a-raspberry-pi)でやると通ったのでおとなしく従ったほうが良いと思いました。
RaspbianのJessieだとg++のインストールはいらないのですが、Wheezyはver4.9を使う設定にする必要があるみたいなので、HomebridgeのWikiに従って行いました。

- nodebrewのインストール

nodebrewを使ってNodeJSのバージョン管理をやろうと思ったのでとりあえず入れます
`curl -L git.io/nodebrew | perl - setup`
パスを指定
`export PATH=$HOME/.nodebrew/current/bin:$PATH`

- nodeのインストール

nodebrewをつかってNodeJSをインストール
`nodebrew install-binary stable`
使うバージョンを指定
`nodebrew alias default v6.1.0`

- npmのインストール

`sudo apt-get install npm`

- /usr/localにコピー(なんかいろいろやった挙句これをやったらhomebridgeがインストールできた）

`sudo cp -R * /usr/local/`

<b>追記</b>
場所を`cd /home/pi/.nodebrew/node/v6.2.2/`に移動してから`sudo cp -R * /usr/local/`を行う

### Homebridgeのインストール
`sudo npm install -g homebridge`

## LEDの配線を行う
[RaspberryPi3のピン配置](http://pinout.xyz/)を参考にBCM14とGroundにジャンパー線を入れる
LEDは足が長いほうから足が短いほうに流れる
![IMG_1813.JPG](https://qiita-image-store.s3.amazonaws.com/0/72946/c80d065c-67a9-cf47-4efb-4f22d64a1e31.jpeg)

## プラグインのインストール
BCM14を出力に指定する

```
echo 14 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio14/direction
```

□追記
この方法だとRaspberryPiをリブートした時にリセットされてしまうため、毎回このコマンドを叩く必要があるみたいです
(/etc/init.d/に起動スクリプトを置くと良いみたいです)

LEDをONにする（つないだ時点ですでに光ってる）
`echo 1 > /sys/class/gpio/gpio14/value`
LEDをOFFにする
`echo 0 > /sys/class/gpio/gpio14/value`

のコマンドを叩くとON/OFFを操作できるため、今回はSiriからコマンドでON/OFFを操作するプラグインをインストールする。
https://github.com/senyoltw/homebridge-cmd
`sudo npm install -g homebridge-cmd`

## プラグインのセットアップ
先ほど書いたコマンドで操作するため、`.homebridge/config.json`を作成し、その中に下記を記述します。

```
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
    
    "description": "This is an example configuration file with one fake accessory and one fake platform. You can use this as a template for creating your own configuration file containing devices you actually own.",

    "accessories": [
        {
            "accessory": "CMD",
            "name": "LED",
            "on_cmd": "echo 1 > /sys/class/gpio/gpio14/value",
            "off_cmd": "echo 0 > /sys/class/gpio/gpio14/value"
        }
    ]
}
```

`username`は私の使っているRaspberryPiのMACアドレスに変更しましたが、小文字で表記するとエラーが出ました。
`on_cmd`と`off_cmd`に先ほどのON/OFFのコマンドを書いておきます。

## iPhoneアプリのインストール
insteon+をインストールしました。
HomebridgeのPINを入力します（この場合は"031-45-154")

## これで動くはず

# 参考文献
http://senyoltw.hatenablog.jp/entry/2015/12/07/052951
すごく参考にさせていただいて、プラグインも使用させていただきました。
https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi
http://qiita.com/hshimo/items/1ecb7ed1b567aacbe559