kakts-log

programming について調べたことを整理していきます

Amazon Dash Button と slackを連携させる

Amazon Dash Buttonとは

既にアメリカで発売されていたamazon dash buttonが日本でもリリースされました。
www.amazon.co.jp
初期設定を済ませた後、ボタンを押すだけで特定の商品を購入できるものです。
ボタン自体は500円で購入でき、注文時に500円が割り引かれるので、普通に使うと実質タダになります。

Amazon Dash ButtonをIoT用途で使ってみる

リリース後にかなり話題になっているのですが、
初期設定を完了させずにwifiの連携だけ完了した状態だと、同一ネットワーク内のサーバと、ボタンを押すだけで連携できるIoTボタンになります。
せっかくなので、ボタンを押すとslackにメッセージを送るところまでやってみようと思います。

slackとの連携

Amazon Dash Buttonとslackを連携させるために、ボタン押下の通信を受け取るサーバを立てる必要があります。 github上を調べると、dasher が使いやすそうだったのでこれを使ってみます。
github.com

dasherを使ってみる

早速ディレクトリを作ってdasherをcloneします。

git clone git@github.com:maddox/dasher.git  

dasher のgithubページに書いてあるセットアップ方法のとおりに設定を進めます。

Dash Button のMACアドレスを取得する

サーバ連携のためにはDash Button のMACアドレスを調べる必要があり、dasherに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.' 

srcipt/find_buttonを実行すると、上記のような文字列が出た状態になるので、この状態でDash Buttonを押すとMACアドレスが表示されます

YOUR_MAC_ADDRESSのところに表示される
Possible dash hardware address detected: YOUR_MAC_ADDRESS Manufacturer: Amazon Technologies Inc. Protocol: udp

これでMACアドレスを取得することができました。

slackへの通知設定

次に、連携用サーバの設定を行っていきます。取得したMACアドレスと、送信したいslackチャンネルへのwebhook用アドレスを設定します。 slackはチャンネルを作った上で下記ページで調べることができます https://slack.com/services/new/incoming-webhook

config/config.json を作成して下記の様な感じでボタンのMACアドレス、webhook用アドレス、送信するメッセージを設定したjsonファイルを作ります。

{
  "buttons":[
    {
      "name" : "Test Dash Button",
      "address": "YOUR_MAC_ADDRESS",
      "url": "YOUR_WEBHOOK_ADDRESS",
      "method": "POST",
      "json": true,
      "body": {"text":"Hello, World from Amazon Dash Button!!!"}
    }
  ]
}

これで設定は終わりました。メチャクチャ簡単です。

dasherを起動してslackへ投稿する

あとはdasherを起動してDash Buttonのボタン押下を待ち受けた状態にするだけです。

$ sudo npm start

> dasher@1.1.1 start /Users/USER_NAME/Documents/amazon-dash-button/dasher
> node app.js

[2016-12-10T13:55:49.181Z] Test Dash Button added.

これでdasherが起動できたのであとはDash Buttonを押すだけです。

[2016-12-10T13:58:43.630Z] Test Dash Button pressed.

ボタンの反応があるとコンソール上に↑のような感じでメッセージが表示され、slackにも投稿が表示されました。
f:id:kakts:20161210230044p:plain

1回押下すると3〜5秒位DashButtonのランプが点滅してslackに投稿されます。

まとめ

Amazon Dash Button開封からslack連携まで1時間もあればできるほど簡単でした。 dasherを使えばwebhook連携が容易にできるので、自宅にraspberry py でサーバ常時立てて、 ボタン連携すれば500円で簡単にIoTできます。

ただ気になるのは、Dash Button内部の乾電池が入っていて、1年位で電池切れになるのでお遊び程度に使うのが良いと思います。 海外でも活用例があり、調べてみると面白そうです。 medium.com