Amazon Dash buttonで遊ぼう!
皆さん、こんにちは。
今回はAmazon Dash Buttonというおもちゃを手に入れましたので、こいつをおもちゃにして遊んでみようと思います。
研究室にあまり僕がいないので突然の来訪があったとしてもあえない確率が高いんですね。
そこでこいつをインターホン代わりにして、来訪があったらLINEに通知してもらう仕組みをサクッと作ろうかなと思います。
ちなみに今回はプログラミングをほぼしないので初心者でも簡単にできますよー。
では、早速始めていきましょう。
要るもの
- Amazon Dash Button
- ラズパイ(パソコンでも代用可能)
Amazon Dash Buttonの設定
設定にはamazonの公式アプリを使いました。
説明書通りにWi-Fiの設定を進めていきます。最後の注文する商品の設定のところで右上の×を押して途中で設定を終わらせます。こうすることでボタンを押しても商品は注文されないので安心して利用することができます。
ただし、ボタンを押すたび「設定が終わっていません」と通知が律義に届くので
端末の管理>通知の設定
からダッシュボタンの通知を切ることをお勧めします。
IFTTT
IFTTTとは
IFTTT(イフト)とは、簡単に説明すると「Webサービス同士を連携できるサービス」の事で、プログラミング不要で様々なオリジナルサービスを作ることができるものです!
Gmailとかもあるのでアイデア次第でいろいろなことができちゃいますね。
IFTTTの登録は各自で済ませておいてくださいね。Googleアカウントで入れたりするのですぐ登録できると思います。
IFTTTの利用
まず初めに今回利用するサービスは以下の2つです。
Webhooksはイベントトリガーとして使用します。
アプリのURLをたたくとイベントを発生させることができるので、それを使ってLINEのメッセージを投稿します。
上記のそれぞれのアプリのリンクに飛んでいただき、"Connect"をクリックしてアプリを紐づけしてください。
Appletの作成
ではAppletの作成をしていきましょう!
まず画面上部のMy Applets
からNew Applets
をクリックし、新しいAppletを作成します。
するとこんな画面が出てくるので+this
をクリックしWebhooksを選択します。
Event Name
に好きなイベント名を入力してトリガーを作成します。
次に+that
をクリックしアプリでLINEを選択します。
Recipientに1:1でLINE~
を選択します。
MessageにはLINEで送るメッセージを書くことができるので、好きなメッセージを記入しましょう。
Photo URLで画像も送ることができるみたいです。
設定が終わったらCreate actionをクリックして終了します。
これでAppletが作成できました。
Appletの動作確認
実際にこのAppletがちゃんと動くかテストしてみます。
まず、Webhooksのsettingを開き、URL(Account InfoのURLの項目)にアクセスします。
すると、以下のような画面に飛びます。
Your key is: の後にキーが表示されていますね。これは後で使うのでメモっといてください。
{event}
に先ほど設定したイベント名を入力すると一番下のところにあるURLが変更されます。
WebhooksではこのURLにアクセスすることでイベントを発生させているようです。
また、Test it
を押すことでイベントを発生させることができます。
LINE Notifyからメッセージが届くのが確認できました!
ラズパイでDashボタンの通信を監視
Dashボタンの通信を監視するためにラズパイを使います。これはパソコンでも大丈夫です。
前提としてラズパイとDashボタンが同じネットワークに接続している必要があります。
Dasher
Amazon Dash Buttonをいじるのはいろいろな方がやっておられるみたいでいろいろなプログラムがGitHubに転がっています。
Dasherというものが結構みんな使ってらっしゃるみたいで情報もたくさんあるのでこちらを使っていきたいと思います。こちらはNode.jsで動くので各自あらかじめインストールをしておいてください。
ラズパイでプロジェクトをgit cloneして、npmで必要なライブラリ群をインストールします。
$ git clone https://github.com/maddox/dasher
$ cd dasher
$ npm install
インストールが終わったら、以下のコマンドを実行してDashボタンを押します。
するとコンソールに結果が出てきますので、arpのところからMACアドレスを取得しましょう。(最下行)
$ ./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: xx:xx:xx:xx:xx:xx Manufacturer: unknown Protocol: udp
Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: unknown Protocol: arp
config.jsonを新たに作成しconfigファイルに置きます。{MAC_ADDRESS}
にはDashボタンのMACアドレスを、{event}
には先ほど設定したイベント名を、{KEY}
にはwebhooksのキーを各自記入してください。
{"buttons":[
{
"name": "{event}",
"address": "{MAC_ADDRESS}",
"timeout": "60000",
"url": "https://maker.ifttt.com/trigger/{event}/with/key/{KEY}",
"method": "POST"
}
]}
以下のコマンドを入力してプログラムを起動しましょう。
$ sudo npm run start
流れとしては、
- Dash Buttonを押す(amazonに接続しようとする)
- Dasherがその接続を検知(arpの検知)
- DasherはWebhooksのURLをたたく(イベントを発生させる)
- IFTTT上のWebhooksがそれを受け取ったらLINEでメッセージを送る
- スマホに通知が来る
となります。少し回りくどい感じがしますが遊びなので良しとしましょう。
ボタンを押してLINEに通知が来るのが確認できました!
まとめ
Dashボタンを押すとLINEから通知が来るものを作ってみました。
IFTTTのサービス連携を使えばもっと面白い使い方ができそうな感じがしますね!
参考サイト
本記事では以下のサイトを参考にさせていただきました!