Raspberry Pi Zero W で Amazon Dash Button をただのIoTボタンとして使う流れ


ここでは、Amazon Dash Button -> Raspberry Pi Zero W-> IFTTT -> Trello にカード追加をします
この記事は、主に、以下の2つの記事をまとめた内容です。

* Raspberry Piの無線LANをmicroSDで設定する http://qiita.com/mascii/items/0d1a280ac58ed8f6f999
* Amazon Dash ButtonをただのIoTボタンとして使う http://qiita.com/jsoizo/items/3b8bba4160f41aef20f4

必要なもの

* Raspberry Pi Zero W スタートキット
* Amazon Dash Button
* 作業環境（ここではMac）
* IFTTTのアカウント
* Trello のアカウント（IFTTTに連携しておきます）

Raspberry Pi Zero W のスタートキットは、どれでも良いと思いますが、私はリアル店舗で以下のものを買いました。

https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-55F7

SD カードにはOSが書き込み済みの前提です。
作業環境はMacです。


# 同根のSDカードをPC等で見て、WiFi情報とSSHの有効かを設定

こちらを参考に設定します

Raspberry Piの無線LANをmicroSDで設定する
http://qiita.com/mascii/items/0d1a280ac58ed8f6f999


```
$ cd /Volumes/NO\ DATA # お手元の環境に合わせて下さい
$ touch ssh
$ vi wpa_supplicant.conf
```

```wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="test"
    psk="abcd1234"
}
```

# SDカードをRaspberry Pi Zero W に挿入し、ディスプレイ・キーボードに繋いで、電源を入れる

先の設定で、WiFi設定ができているのですが、スタートキットに入っているSDカードは最初に設定が必要です。
起動するとOSを選ぶ画面が出るので、いちばん上のRasbianが選択されている事を確認し、スペースキーを押します。
次に、"i" を押して、エンターでインストールを開始します。

インストールには、1時間ほどかかります。（SDカードの書き込み速度が遅いので。）
インストールが終わると、自動的に再起動して、Raspbianが起動します。
先ほど、WiFiの設定をしておいたので、既にネットワークにはつながっていると思います。
これ以降、ディスプレイとキーボードは不要です。

# SSH で繋いで初期設定

```
$ ssh pi@raspberrypi.local
$ passwd # パスワード変更
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install nodejs npm libpcap0.8-dev # 後で npm install するのに必要となる
$ sudo apt-get clean
$ sudo apt-get autoremove
```

# dasher を cloneして、npm install

```
$ git clone https://github.com/maddox/dasher.git
$ cd dasher
$ npm install
```

# Amazon Dash Button をセットアップ

以下の通りセットアップ。
http://qiita.com/jsoizo/items/3b8bba4160f41aef20f4#%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97

1. Amazonショッピングアプリを開く
2. アカウントサービスを開く
3. 新しい端末をセットアップを選択
4. Dash Buttonを選ぶ
5. Dash ButtonのWi-Fi設定を行う
6. *注文する商品を選択する画面でキャンセル*（右上の×ボタンを押す）

# IFTTT のセットアップ

事前に https://ifttt.com/trello と https://ifttt.com/maker_webhooks の設定を行って下さい。

1. IFTTT の My Appletsを開く https://ifttt.com/my_applets
2. New Applet
3. this に Webhooks を選択。Recieve a web request を選択
4. Event Name を "add_trello" と入力
5. that に trello を選択。 "Create a card"を選択
6. "Which board?"、List name、Position、Title、Descriptionを好きに選択
7. Create Action をクリック
8. Finish をクリック

# ボタンの情報を取得

./script/find_button を動かし、Dashボタンを押す。ここで表示されたMacアドレスをメモっておく。

```
 $ ./script/find_button
Watching for arp & udp requests on your local network, please try to press your dash now
Dash buttons should appear as manufactured by 'Amazon Technologies Inc.'
Possible dash hardware address detected: aa:bb:cc:dd:ee:ff Manufacturer: unknown Protocol: udp
```

# 設定ファイルを記載

url と address は適切に書き換えて下さい。
urlは、 https://ifttt.com/services/maker_webhooks/settings のページに書かれているURLをブラウザで開くと分かります。
protocol は、udp にする必要が有ります。ちゃんと理由を調べていませんが、arp はRaspberry Pi Zero W では受信できませんでした。

```
$ vi config/config.json
```

```config.json
{"buttons":[
  {
    "name" : "水がない",
    "address": "b4:7c:9c:25:99:17",
    "url": "https://maker.ifttt.com/trigger/add_trello/with/key/XXXXXXXXXX",
    "method": "POST",
    "json": true,
    "protocol": "udp",
    "body": {"value1":"水がない"}
  }
]}
```

# Dasher を起動

```
$ sudo npm start
```

# 自動起動するように設定

以下を参考に設定します。
https://github.com/maddox/dasher/wiki/Running-Dasher-on-a-Raspberry-Pi-at-startup


```
$ curl https://raw.githubusercontent.com/fhd/init-script-template/master/template > /tmp/dasher
$ sudo cp /tmp/dasher /etc/init.d/dasher
$ rm /tmp/dasher
$ sudo vi /etc/init.d/dasher 
```

先頭を以下のように書き換え。
dir は適切に変更してください

```/etc/init.d/dasher 
#!/bin/sh
### BEGIN INIT INFO
# Provides: dasher
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/home/pi/dasher"
cmd="npm run start"
user="root"
```

```
$ sudo chmod 755 /etc/init.d/dasher
$ sudo update-rc.d dasher defaults
```

以下で実行できるか確認してください。

```
$ sudo /etc/init.d/dasher start
```

ログは以下のようにして確認できます。

```
$ tail -f /var/log/dasher.log
```

エラーは以下です。

```
$ tail -f /var/log/dasher.err
```