Amazon Dash ButtonとLINEをIFTTTでつなぐ その1

Amazonのサイバーマンデーセールにて半額の250円で売ってたAmazon Dash Buttonをついつい4個も買っちゃった。

なので、やろうやろうと思っていた、ボタンを押したらラズパイに何かさせる実験をしてみようと思います。

1. 仕組み

ボタンを押す

DHCPサーバからIP取得するために、Dash ButtonがMACアドレスをLANに流す。

ラズパイがキャッチ

何かやる!

ざっくり説明するとこんな感じです。ボタンがトリガとなってラズパイに何かさせることが出来ます。
何かを何にするか悩んだ末、とりあえず、ボタン押したらLINEに通知が来るようにしてみます。

 

2. Dash Buttonの設定

iPhoneのAmazonアプリを立ち上げます。
メニューから「アカウントサービス」を選択します。
Dash端末の「新しい端末をセットアップ」を選択します。さらに「同意して開始」をタップ。

 

Dash Buttonを長押しして青ランプを点滅させます。点滅したら「接続」をタップ。

 

セットアップを進めていき「商品を選択」画面に到達したら、右上の「×」をタップ。続けて「セットアップを終了」をタップします。
商品を選んでしまうと、”ボタンを押す=購入”になってしまいます。セットアップを途中で終了するのがミソです。

 

3. ラズパイに”Dasher”を導入

当方の環境は、Raspberry Pi2&Raspbian。こんな感じです。

 

Node.jsが必要です。私はnodebrewを使ってNode.jsをインストールしています。その方法はこちら。
第14回: Node.jsを導入する

 

インストール済のNode.jsが古くなっていたので、最新のLTSであるv8.9.3をインストールしました。

 

作業用のディレクトリを掘ります。私の場合は~/tools/dashbutton

 

Dasherとは、Dash Buttonが押されたことを検知して、HTTPリクエストやコマンドを発動させることが出来るNode.jsのモジュールです。コマンドを発動できるというとは、ボタン1つで、ラズパイに出来ることは何でも出来ちゃいます。

Dasher!!
Dasher is a simple way to bridge your Amazon Dash buttons to HTTP services.

Dasher公式サイトより

Dasherに必要なlibcap-devをインストールします。

 

Dasher公式サイトからZipファイルをダウンロードして展開します。または、gitでクローンします。私はgitを使いました。

 

Dasherディレクトリへ移動してモジュールをインストールします。

 

Dash ButtonのMACアドレスを検出するためのスクリプトfind_buttonを実行してみたら、モジュールのバージョンが46じゃなくて57じゃないか!と怒られました。
Dasherと依存モジュールの一部が、Node.js v8.9.3だと動作しないのかな?

 

Node.js、パッケージマネージャnpm、モジュールのバージョンの関係は次のページで確認できます。

Previous Releases

 

数ある中から、LTS3種をピックアップしました。

VersionLTSのコードネームnpmNODE_MODULE_VERSION
Node.js 8.9.3Carbon5.5.157
Node.js 6.12.2Boron3.10.1048
Node.js 4.8.7Argon2.15.1146

 

モジュールのバージョンが46なのはArgonであることが分かりました。一方、57はCarbonです。その辺がごちゃごちゃになってDasherが動かないのかもしれません。そこで、Node.jsのバージョンを4.8.7ダウングレードしてDasherをインストールしてみます。

まず動作不良を起こしたDasherと依存モジュールを削除して仕切り直します。sudoを使うのは、書き込み保護されたgit関連ファイルを一気に消去するためです。

 

Node.js v4.8.7のインストールからDasherのインストールまでを一気にいきます。

 

先ほど起動に失敗したスクリプトfind_buttonがうまく動作し、DHCPサーバに接続しようとする機器のMACアドレスがいくつか見つかりました。

 

ここで、黒ラベルDash Buttonを押してみました。暫くするとManufacturerが”unkonwn”である、Dash Buttonらしき機器を検出しました。
続けてファブリーズDash Buttonを押してみました。今度は”Amazon …”という機器が見つかりました。2種類のManufacturerがあるようです。

これらのMACアドレスを記録し、Ctrl + Cでスクリプトを終了します。

 

さて、Node.js v4.8.7でうまくいったDasherですが、Node.js本体のバージョンをv8.9.3に戻したら動くのか実験してみたところ、ちゃんと動作しました。
Dasherと依存モジュールをローカルにインストールしているので、Node.js本体とグローバルなモジュールのバージョンが上がっても影響がない模様です。

 

今回は、Dash ButtonのMACアドレスをDasherで取得するところまで。
次回は、DasherとIFTTTを連動させて、Dash Buttonを押したらLINEからの通知が来るようにします。

 

Amazon Dash ButtonとLINEをIFTTTでつなぐ 目次