ここでは、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 のスタートキットは、どれでも良いと思いますが、私はリアル店舗で以下のものを買いました。
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
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 をセットアップ
- Amazonショッピングアプリを開く
- アカウントサービスを開く
- 新しい端末をセットアップを選択
- Dash Buttonを選ぶ
- Dash ButtonのWi-Fi設定を行う
- 注文する商品を選択する画面でキャンセル(右上の×ボタンを押す)
IFTTT のセットアップ
事前に https://ifttt.com/trello と https://ifttt.com/maker_webhooks の設定を行って下さい。
- IFTTT の My Appletsを開く https://ifttt.com/my_applets
- New Applet
- this に Webhooks を選択。Recieve a web request を選択
- Event Name を "add_trello" と入力
- that に trello を選択。 "Create a card"を選択
- "Which board?"、List name、Position、Title、Descriptionを好きに選択
- Create Action をクリック
- 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
{"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 は適切に変更してください
#!/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