3月 12, 2017

Amazon Dash Buttonで遊んでみる

アットファイブ 稲吉です。

アットファイブでは日々Slackで積極的に意見交換が行われています。 先日も社内のSlackでこんなやり取りを見かけました。

はしょって説明すると、saito(社員)は社内業務や数々の無茶ぶりプロジェクトでがんばっているメンバーのために飲み物(主にエナジードリンク)等を仕入れる役割を自らかって出てくれているのですが、その在庫がなくなりそうになった時、気づいた社内のメンバーが善意で店長に連絡するといった 心温まるストーリです。

これを見た瞬間に自分も善意の心に目覚め、脊髄反射的に以下設計書を書きました。

我ながら完璧なシステム構成図です。

時間とお金を投資した結果、本来のamazon dashボタンよりも一手間も二手間も増えていますが、善意の心なので気にしません。

※amazonからは既にAWS IoT buttonというのが出ていますが、日本ではまだ発売されていません。

saito dash レシピ

1.とにもかくにもamazon dash ボタンを仕入れます

箱から出すとこんな感じ。

大きさはトリケラトプスよりもちょっと小さいくらいです。

2.dash ボタンのセットアップ

使用するWifi環境下でセットアップしていきます。

気を付けるのは、最後の商品選択のところだけは商品選択せずに終了するということ。

※amazon dashボタンからの最初の注文だけdashボタン代500円が値引きされるので、この手順の前に、そんなに今は必要ではないかもしれない水を注文しています。一度注文した後でもボタンは初期化できるのでご心配なく。

最終的にこの状態になっていればOKです。

※ウィルキンソンは個人的なもの(ハイボール用)なので必須ではありません。

3.Raspberry piのセットアップ

ラズパイをセットアップしていきます。

※設計書ではRaspberry pi zeroと書きましたが、zeroは品薄なので、しれっと事務所にたくさんころがっているRaspberry pi 2で代用します。(右の黒い方がラズパイです。手前はただのキューブです。)

Dasherというdash ボタン用のライブラリをラズパイにインストールします。

自分はろくにgithubのREADMEも読まずにやりはじめましたが、ちゃんとREADME通りにやりましょう。順番ミスって何度かやりなおしました。。

sudo apt-get install libpcap-dev
sudo apt-get install npm

sudo apt-get install node
wget http://node-arm.herokuapp.com/node_latest_armhf.deb 
sudo dpkg -i node_latest_armhf.deb

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

4.dash ボタンのMACアドレスを確認する

Dasherのインストールが完了したら、dashボタンのMACアドレスを確認します。script/find_buttonを実行して、dashボタンをpushすれば、MACが表示されます。

pi@raspberrypi:~/dasher $ sudo ./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: 68:**:**:**:**:** Manufacturer: unknown Protocol: arp
Possible dash hardware address detected: 88:**:**:**:**:** Manufacturer: BUFFALO.INC Protocol: arp
Possible dash hardware address detected: 34:**:**:**:**:** Manufacturer: I-O DATA DEVICE Protocol: arp
Possible dash hardware address detected: 34:**:**:**:**:** Manufacturer: I-O DATA DEVICE Protocol: arp
Possible dash hardware address detected: 88:**:**:**:**:** Manufacturer: BUFFALO.INC Protocol: arp
^Cpi@raspberrypi:~/dasher $ 

unknownで表示されるものがdashボタンのMACアドレス。

5.POSTするSlackのWebhook URLを取得する

Incoming WebHooksのページにアクセスして、該当Channelを指定します。

Add Incoming WebHooks integrationをクリックするとURLが表示されるので、控えておきます。

6.Dasherのconfigを作成する

MACアドレス、WebHook URLの情報を元にDasherのconfig/config.jsonを作成します。

{"buttons":[
  {
  "name" : "saito dash",
  "address": "68:**:**:**:**:**",
  "url": "https://hooks.slack.com/services/*********/*********/************************",
  "method": "POST",
  "json": true,
  "body": {"icon_emoji": ":ok_woman:", "text":"店長そろそろ注文だよ!"}
  }
]}

7.Dasherを起動する

Raspberry pi上でdasherを起動します。

pi@raspberrypi:~/dasher $ sudo npm run start

※うちは気が付くと設備の置き場が変わっている事が多いので、動作確認後は/etc/rc.localで自動起動するようにしておきます。誰かがかってに移動してもいいようにね。

以上で準備は完了。さあ、ボタンをpush。

はい、出ました、絵文字ok_womanさん、お疲れ様です。

(ちなみに、投稿時間(04:23)は時計がずれているわけでも、UTCでもなく、まぎれもなく土曜深夜です。そして、この2時間程前は、なぜか土曜深夜に普通に事務所にいる技術統括部リーダーといつもの餃子屋で飯を食いました。)

ただ、できたものの、ボタンを押してもPOSTされないことが結構あります。

社内SlackにPOSTしたおかげで、技術統括部リーダに必然的にばれたので、ばれたついでに聞いてみたら、「ラズパイのwifiドングルやめて、有線にしてみるっす」というので、有線にしてみたら、結構安定。さすが。

その後は二人で試験と称してpushしまくり。最終的に冷蔵庫に設置して「善意のボタン」の完成です。

後は、これを見た社員達が面白がって押して、店長が「えっ今のマジなやつ?どっち?」と逆に混乱する事を切に願うばかりです。

編集後記

水届きました。

最後までお読みいただき、誠にありがとうございます。


稲吉正樹

  • facebook
  • twitter
  • line
  • このエントリーをはてなブックマークに追加

アットファイブで一緒に働きませんか?

エンジニアをはじめ、複数の職種で仲間を募集しています!