天ドン問題をAmazonDashで解決した話
というわけでこの記事は「横浜医療情報専門学校 AdventCalendar 2016」でございます。
VR系の記事を買うと予告してましたが、急遽変更。
「VRの記事を書くといったなあれは嘘だ。」
先日のLT_match6で飛び入り技術ネタ枠でやったLTがそこそこ好評だったのでそちらのソースコ-ドとやり方の解説をします。
基本はnpmパッケージのREADMEになどにも書いてありますけどね。
発表したスライドはこちら(一部変更してあります)
リポジトリはこちら
なんでこれをやったのさ
弊宅で起きている社会問題の一つで「床ドン」があったのです。
スライドの頭で書いてますが、弊宅では天ドン(命名自分)という減少があり一言で言えば
「親が息子を晩飯に呼ぶために天井を叩く行為」
です。
自分が集中して作業しているときに親が声をかけても反応せず、暖房がきいた部屋から出るのもだるくなり手っ取り早い方法で天井を叩くのです。
叩かれたこっちとしてはせっかく集中していたのに無理やり理不尽な形で中断されてしまうので非常にストレスフルです。
ちょうどAmazonさんが格安でWifiにつながるボタンを用意してくれたので使わない手はないいうわけです。
使うnpmなど
node-dash-button
https://github.com/hortinstein/node-dash-button
こんかいの主役ボタンのいろいろを代わりにやってくれます。
libpcap-dev
パケットキャプチャライブラリapt-getでインストールします。 必須
require
slackにPOSTするのに使うライブラリ
AmazonDashButtonをWifiにつなげる
位置情報…?というかボタンから漂うAndroid 2.x臭
Blutoothを通してWifiの情報を送るらしく事前に同意を求められます。
画像もついててチュートリアルとしては良さげ、随分前に使った某日本製体調モニタリングのペアリングは難解な日本語が書かれてる紙だけだったし
LEDは三色なのかちゃんと白青赤光ります。
ここまで来るとボタンと商品との関連付けを選択する部分になりますが、この部分は無視してok
AmazonDasButtonのMacアドレスを探す
AmazonDashButtonのMacアドレスを持つパケットが流れたときにトリガが発動してSlackにポストする流れなのでまずはマックアドレスを特定します。方法は色々ありますが今回はnode-dash-buttonにあるscriptでやっちゃいます。
ReadMEにも書かれてますが以下の手順でscriptを走らせます。
走り始めたらボタンを連打しましょう。
$ cd node_modules/node-dash-button $ node bin/findbutton
node_modules/node-dash-button $ sudo node bin/findbutton 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: 00:00:00:00:00:00 Manufacturer: Amazon Technologies Inc. Protocol: udp Possible dash hardware address detected: 00:00:00:00:00:00 Manufacturer: Amazon Technologies Inc. Protocol: arp
AmazonDashButton以外のパケットも混じってますがその中にAmazonDashButtonのマックアドレスが流れてくるはずです。
実装
すごいシンプル(なはず)
SlackのTokenやマックアドレスはsettings.jsに書き込むようにしています。
実際の運用で得られたもの
Q.改善しました?
A.一応したが、無駄打ちが多くてイライラしてる
今後の改良予定
- readmeの追加
- 体裁を整えてnpmパッケージ化
- 複数ボタンに対応
いろいろと改良予定乞うご期待!プルリクも待ってるよ