DashButton Hack! その1

1ヶ月ほど前に、こちらのイベントでAmazonDashButtonを用いたIoT勤怠アプリについてLTをしてきたので、忘れないうちにブログに書いておこうと思います。

ちなみに、スライドはこちら↓

その1では、DashButtonのイベントを取得するところまで書いていこうと思います。

必要なもの

  • Dash Button

  • Node.jsが使えるPC

  • IFTTTのアカウント(その2で使います)

  • Wi-Fi環境

  • スマホ(Dash Butoonのセットアップに必要)

実行した環境

使用するモジュール

いくつかDashButtonのイベントを取れるライブラリがあるのですが、僕の環境で一発でうまくいった、「node-dash-button」を使用します。

github.com

モジュールのインストール

$ mkdir dash-button // 作業するディレクトリを作成
$ npm init
$ npm install node-dash-button --save

DashButtonのMACアドレスの取得

まずは、お手持ちのスマートフォンで、DashButtonのセットアップを行います。

f:id:tetrapod117:20170824201634p:plain

こんな感じのボタンを押した際に注文する商品を選択する画面になったら右上の×ボタンを押してください。 ここで選んでしまうとボタンを押すたびに商品を注文してしまいます。

セットアップが終わったら、モジュールのfindbuttonを実行します。

$ cd node_modules/node-dash-button
$ sudo node bin/findbutton

これを実行したら、DashButtonを押してください。 そしたら

f:id:tetrapod117:20170824203513j:plain

こんなかんじで、いろいろ文字がターミナル上に出てきます。 モザイクがかかった部分が、MACアドレスになります。

MACアドレスが取得できたら、次は、DashButtonのイベントを取得するプログラムを書きます。 今回は、簡単にボタンが押されれば、ログを出力するようにします。

こんな感じ

const dash_button = require('node-dash-button');
// DashボタンのMACアドレスを入力
const dash = dash_button('××:××:××:××:××:××', null, null, 'all');

// ボタンを押したときのアクション
dash.on('detected', () => {
    console.log("ボタン反応してるよー");
});

これを実行した状態で、DashButtonを押すと、「ボタン反応してるよー」と出力されます。

$ sudo node  test.js
ボタン反応してるよー

数秒ほどラグがあるので出力されるまで、気長に待ってください。

あとがき

ということで、今回はDashButtonのイベントを取得しました。 ボタンプッシュのイベントが取得できたら、後はなんでもできますね。 ということで、次回はIFTTTを用いて、DashButtonとGoogleスプレッドシートを連携させて、退勤システムを作ろうと思います。