Amazon Dash Button でSlackにデータを送信する
Amazon Dash Buttonのハックが流行ってますね。
- Amazon Dash Buttonを(正しくない方向で)使ってみた
- Amazon Dash ButtonをただのIoTボタンとして使う
面白そうです。
わたしもこれらのサイトを参考にさせていただきながらやってみました。
ボタンを押したら、Slackに通知がくるようにする
たとえば子供が家に帰ったらフルグラのボタンを押させると、Slackに通知が来る、みたいなそんな使い方ができそうです。
構成
家のLANにぶら下がったAmazon Dash Buttonと、そのボタン押下をフォークするdash-buttonというライブラリを起動してあるラズパイ(同じく家のLANにぶら下がっている)、でホントは直接Wehbook飛ばせばいいんでしょうけど、今回はIFTTTも使ってみたかったので、IFTTTの Maker ChannelでラズパイからのRequestをうけて、それをトリガーにSlackに通知してみました。
環境構築
Raspberry Pi に Node.js v6.9.1 がインストールされてる環境で試してます。Node.jsのインストールまではこんな感じ。
$ sudo apt-get install -y nodejs npm
$ node --version
v0.10.29
$ sudo npm cache clean
$ sudo npm install n -g
/usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n
[email protected] /usr/local/lib/node_modules/n
$ sudo n 6.9.1
$ node --version
v6.9.1
$ sudo apt-get install libpcap-dev
Node.jsのバージョン管理には n だったり nodebrew だったりいろいろあるようですが、今回は n を使いました。
dash-buttonのセットアップ
Dash Button for Node をインストールします。基本的にこの作者のサイトに従って、
npm init
で適当にプロジェクトを作成し、
npm install --save dash-button
でモジュールのインストールは完了。続いて、作成されたpackage.jsonの一部を下記のように書き換えておきます。
"scripts": {
"scan": "dash-button scan"
}
あとは下記のコマンドで、同一ネットワーク上のAmazon Dash Buttonを探しに行く処理が動き出します。
pi@raspberrypi:~/adb $ sudo npm run scan
> [email protected] scan /home/pi/adb
> dash-button scan
Scanning for DHCP requests and ARP probes on wlan0...
Detected a DHCP request or ARP probe from xx:xx:xx:xx:xx:xx
Detected a DHCP request or ARP probe from xx:xx:xx:xx:xx:xx
Amazon Dash Buttonのボタンを押すと、ボタンがLANに接続しにいく際に、ボタンのMacアドレスがネットワークを流れます。で、それを検知する仕組みになってるようです。
上記のようにMacアドレスが表示されれば、環境としては完成っぽいですね。
IFTTTのMaker Channelへイベントを送る
npm install --save request
npm install --save request
でHTTPのリクエストを投げるライブラリをインストールしておきます。
IFTTTのMaker Channelへリクエストを送るコードは以下のようにしました。
const DashButton = require('dash-button');
const DASH_BUTTON_MAC_ADDRESS = 'xx:xx:xx:xx:xx:xx'; //←検知されたMacアドレス。小文字で。
let button = new DashButton(DASH_BUTTON_MAC_ADDRESS);
const request = require('request');
const url = 'https://maker.ifttt.com/trigger/{event}/with/key/{your key}'
const headers = {
'Content-Type': 'application/json'
}
const options = {
url: url,
method: 'GET',
headers: headers,
json: true,
form: {"value1": "フルグラボタンが押されました!", "value2": "bb", "value3": "cc"}
}
console.log('listen...');
let subscription = button.addListener(function () {
console.log('Clicked.. ' + new Date());
request(options, function (error, response, body) {
if (!error) {
console.log(body);
}
});
});
下記のコマンドで起動しておきます。
sudo node index.js
Amazon Dash Buttonのボタンを押下すると、登録されたイベントハンドラが動き出し、IFTTTのMaker Channelへリクエストを送信します。Maker Channelは送信時にイベント名を指定しますが、そのイベント名は上記では{event}とプレースホルダのままです。実際は好きな値を設定しておきましょう。
IFTTT の設定。
IFTTT側は、this を Maker Channelにして、thatをSlackにしたレシピを作成します。
具体的には下記の通りです。
this の設定
右上のアイコン部分から New Applet を選択し、this には Makerを選択します。
さて作成する際には受信待ちするイベント名を指定しますが、その値は先ほど{event}に実際に設定した値を指定しておきます。
以上で thisの設定はおしまいです。さきほどのラズパイからのリクエストを待ち受ける側が完成しました。
↑完成です。。
thatの設定
つづいてthatの設定つまり、Slackを設定していきます。Slackを検索して、、
送信したいチャンネルや、送信する際のメッセージなどを指定します。
疎通確認する
ようやく疎通確認です。フルグラのボタンを押して、Slackに通知が来るか、それとも注文完了通知が来るかを確認します。
無事に、Slackに通知が来たようですね。。。
Author And Source
この問題について(Amazon Dash Button でSlackにデータを送信する), 我々は、より多くの情報をここで見つけました https://qiita.com/masatomix/items/87d0d5f72668d9c76089著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .