Amazonダッシュボタンをハックして、LINEにメッセージを飛ばし、買物を依頼するシステムの作り方を紹介します。
今回作成するのは、Amazonダッシュボタンを押したときに、アマゾンに注文するのではなく、パパのLINEにメッセージが飛ぶシステムです。
パパに、仕事帰りに買物をして帰ってきてもらいます。
名づけて「パパダッシュボタン」です。
まずはじめに、どのような形で動くのか2分弱の動画で紹介します。
パパダッシュボタンの構成
パパダッシュボタンの構成は次の通りです。
①Amazonダッシュボタンを押します
②ダッシュボタンのARPを、ダッシュボタンと同じLAN内にあるPCで受け取ります
なおPCのOSは、MacかUbuntu(Linux)にしておきます
③dasherと呼ばれるプログラムを一部改変して、PC上で実行しておきます
④dasherがARPを受け取ると、IFTTTのトリガーアドレスにPOSTします
なおIFTTTではWebhooksとLINEを連携させておき、あらかじめ決めたメッセージをLINEにとばします
以上の流れで、事前に設定した好きなメッセージを、AmazonダッシュボタンからLINEに送ることができます。
パパダッシュボタンの作成方法
1.Amazonダッシュボタンの設定
AmazonダッシュボタンはWifiの設定まで行い、商品選択画面で右上の×を押して、途中で設定を止めておきます。
下の画面です。
これを忘れると、Amazonに注文がいくので注意してください。
ダッシュボタンの設定方法の詳細はこちらをご覧ください。
2.AmazonダッシュボタンのMACアドレスを調べる
AmazonダッシュボタンのMACアドレスをWiresharkを使用して調べます。
2.1 Wiresharkをダウンロードします。
http://forest.watch.impress.co.jp/library/software/wireshark/
2.2 Wiresharkを起動し、使用しているネットワークを選択します
2.3 表示フィルタにarpと入力します
2.4 Amazonダッシュボタンを押して、AmazonTeで始まるパケットを探し、ダブルクリックして、Macアドレスを調べます。
以下の例の場合は、(68:37:e9:71:50:e4)がMACアドレスです。
※後ほど使うdasherにはfindbuttonというプログラムもあるのですが、製造元がunknownとなりAmazonと表示されないため、うまくいきませんでした。
3.OSがUbuntuのPCを用意する
後ほど使うdasherというプログラムがWindowsでは動作しないので、MacかUbuntuのOSが入ったPCを用意します。
Windowsのパソコンをお持ちの場合は、仮想環境を用意して、その上でUbuntuを動作させます。
Vagrantを使用してUbuntuの仮想環境を用意する方法はこちらをご覧ください。
別にVagrantを使用しなくても、VirtualBoxとUbuntuを入れるだけでも大丈夫です。
OSを用意したら、次にVirtualBoxのネットワーク設定を変更します。
そのままではNATになっているので、ブリッジに変更します。
VirtualBoxを開き、[設定]→[ネットワーク]から「割り当て」を「ブリッジアダプター」にし、使用しているネットワークを選びます。
※NATのままだとホストコンピュータがルーターの役割になるので、AmazonダッシュボタンとUbuntuが同じLAN内に含まれず、ARPが取れません。
ネットワーク設定が終わったら、VirtualBoxからUbuntuを起動します。
4.dasherプログラムをダウンロードする
Ubuntu上でdasherプログラムを用意します。
dasherのreadmeに従い用意します。
4.1 ターミナルから、作業フォルダを作成します。
1 2 | mkdir papaDash cd papaDash |
4.2 dasherに必要なパッケージとファイルをダウンロードしてきます。
1 2 3 4 5 6 7 8 | sudo apt-get install libpcap-dev sudo apt-get install nodejs sudo apt-get install npm sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10 git clone https://github.com/maddox/dasher.git cd dasher sudo npm install |
これで環境はそろいました。
nodejsやnodeのあたりは、もしかしたら環境によってうまくいかない可能性があるので適宜修正してください。
5.dasherプログラムの変更
dasherのプログラムを変更します。
5.1 dasherフォルダのconfigフォルダ内にあるconfig.example.jsonをコピーして、config.jsonを作成し、ファイル内容を以下のように変更します。
1 2 3 4 5 6 7 8 9 | {"buttons":[ { "name": "papaDash", "address": "68:37:e9:71:50:e4", "url": "", "method": "POST", "json": true } ]} |
addressには、お手元のAmazonダッシュボタンのMACアドレスを書きます。
urlはのちほど、IFTTTを設定してから書きます。
また、daserフォルダ内のlibフォルダにあるdasher.jsの次の行
1 | doLog(button.name + " pressed. Count: " + buttonList[button.address]); |
の上に
1 | doLog("パパダッシュボタンが押されました"); |
と書いておきます。
6.IFTTTの設定
次にIFTTTを設定します。
自分でサーバーを用意してdasherからのPOSTとLINEをつなげても良いのですが、それだけならIFTTTを使用するほうが楽です。
IFTTTとは、If This Then Thatの略称です。
「Aというアプリでなんかお知らせがあったら、Bというアプリ動かしますよ~」
というのが可能になるツールです。
例えば、twitterの内容をLINEに飛ばすとか、いろいろアプリ間の連携が出来ます。
6.1 IFTTTにSign upして、アカウントを作成します(無料です)
6.2 上側のメニューからMy Appletsを選択し、右にあるNew Appletを選択します。
+thisをクリックします
検索画面でwebhooksと入力し、下側のwebhooksアプリをクリックします。
※これまでMakerというアプリがあったのですが、webhooksに名前が変わったようです。
Receive a web requestをクリックします。
Event NameはpapaDashと入力します。
※本当はアルファベットなら何でも良いですが、名前はどこかにコピーしておきます。
そしてCreate triggerをクリックします。
次に+thatをクリックします。
検索画面でLINEと入力し、下側のLINEアプリをクリックします。
Send messageをクリックします。
設定画面で、Recipientは「1:1でLINE Notifyから通知を受ける」にします。
Messageに表示させたい内容を入力します。
Photo URLは何も書かなくて大丈夫です。
Create acitonをクリックします。
途中でLINE Notifyの認証画面が出てくる場合は、そのまま指示にしたがい認証を進めてください。
LINE NotifyはLINEと他のWebサービスをつなげるLINEのAPIです。
最後にFinishをクリックして終了です。
つぎにwebhooksのURLを調べます。
以下のページへ行きます。
https://ifttt.com/maker_webhooks
そして右上のSettingsを押します。
Account InfoにあるURL:の、use/以下の部分を後ほど使います。
例)https://maker.ifttt.com/use/hogehogehogehoge
use/以下の部分を使用するので、コピーしておいてください。
以上で、IFTTTの設定は終了です。
7.dasherのconfig.jsonファイルにURLを記入
5.で未記入だったconfig.jsonファイルのURLを入力します。
URLは次の通りです。
1 2 3 4 | https://maker.ifttt.com/trigger/[アプリ名]/with/key/[webhooksのURL] 例えば、 https://maker.ifttt.com/trigger/papaDash/with/key/hogehogehogehoge |
以上でシステムの作成が完了となります。
8.パパダッシュを起動・実行する
Ubuntuのterminalから、dasherフォルダに移動し、次のコマンドを入力します。
1 | sudo npm run start |
すると、libフォルダのdasher.jsが起動します。
以下のようなメッセージがterminalに表示されます。
この状態のまま変化はないのですが、Amazonダッシュボタンを押すとterminalに以下のようにメッセージが表示されます。
同時にLINEに、LINE Notifyからメッセージが届きます。
パパダッシュプログラムを止めるときはterminalでCTRL+Cを押します。
以上でWindowsPCでアマゾンダッシュボタンを利用して、パパのLINEに買物をお願いするパパダッシュボタンが完成しました。
まとめ
以上、パパダッシュボタンの作成方法でした。
実際に運用するにはラズパイでプログラムを実行しないとPCリソースがもったいないですが、ちょっと楽しむには十分です。
作ってて不明だった点について、アドバイスいただいたH氏に感謝です。
途中で「これは結局、俺が買いに行くのか・・・」と気づき、
「パパダッシュボタンじゃなくて、ただの俺ダッシュボタンやな」
と思いながらシステムが完成しました。
IoT時代を感じられるシステムです。
中学生以上であれば、夏休みの自由研究にも良いかもしれません。
以上、アマゾンダッシュボタンでパパのLINEに買い物をお願いするパパダッシュボタンの作成方法でした。
ご一読いただき、ありがとうございます。