Amazon Dash Buttonをおかんからの電話ほしい要求に使ってみる -Mamazon Dash Button-
前段
12月から日本のAmazonでも発売されたAmazon Dash Button。
500円(実質0円)なのに妙にみんな買っているなと言う事で気になっていたところ、Qiitaでこの記事を見たので即購入してみた。
Amazon Dash ButtonをただのIoTボタンとして使う
即日発送から購入したのは PANTENE Dash Button
結婚している人は嫁が納得するものを買うのがおすすめ。
準備
ハードとして僕が用意したものはこれです。
- Amazon Dash Button
- Mac mini(PCは常時稼働ができれば何でもよいがLinux or OSXを推奨、理由は後述)
- AmazonアプリをインストールしたAndroid or iOS
- Wifi
ボタンセットアップ
こちらは通常通りDash Buttonをセットアップするを見ながら進める。
唯一異なるのは最後までセットアップを完了しないこと。
具体的には商品を注文する選択画面で×ボタンを押す。
利用用途を考える
買ったときには特に考えていなかった利用用途。
子供でもいれば「パパ早く帰ってきて!」というPapazon Dash Buttonに用途も名称もぴったりな利用方法もあるのだが子供がいないのであまり意味がない。
そんな時に思いだした一通のメール。
(脚注)画像は友達の雀太君。NHK新人大賞を見事とりました。
おかんはiPadを何とか使っているが文字は打ちにくいみたい。
ということで何か買ってほしいときや用事があるときはひらがならで「またでんわしてな」が常套句である。
たまたま弄っていた12/14は僕の誕生日でもあるので感謝の気持ちとしておかん専用のボタンを作ることを思いついた。
名前はベタだがMamazon Dash Button
windows10で環境構築(失敗)
普段VPSかAWSで試すことが多いので一応メインPCに用意しているVagrantに入っているCentOSでやろうかと思ったけど、同一のWifi環境とかいろいろ考えるとめんどくさかったので、まずはwindows10が入っているメインPCで構築することとした。
必要なソフトウェアは以下の通り
- node.js (w/ npm)
- dash-button or dasher or node-dash-button
- python
以前pythonとnode.jsは入っていたので以下コマンドでnode-dash-buttonを余裕のインストールという感じであった。しかも事前情報でwindowsでnpm installするときはVS2015入れとけよという情報を得ていたのも追記しておきたい。
C:windows\system32> npm install --save -dash-button -g msvs_version=2015
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(365,5): warning MSB8003: Could not fi
nd VCInstallDir variable from the registry. TargetFrameworkVersion or PlatformToolset may be set to an invalid version
number. [C:\Users\XXXXXX\AppData\Roaming\npm\node_modules\dash-button\node_modules\socketwatcher\build\socketwatcher.
vcxproj]
socket_watcher.cpp
win_delay_load_hook.cc
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\corecrt.h(10): fatal error C1083: Cannot open include
file: 'vcruntime.h': No such file or directory (compiling source file ..\socket_watcher.cpp) [C:\Users\XXXXXX\AppData\
Roaming\npm\node_modules\dash-button\node_modules\socketwatcher\build\socketwatcher.vcxproj]
C:\Program Files (x86)\Windows Kits\8.1\Include\um\windows.h(160): fatal error C1083: Cannot open include file: 'excpt.
h': No such file or directory (compiling source file C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\src
\win_delay_load_hook.cc) [C:\Users\XXXXXX\AppData\Roaming\npm\node_modules\dash-button\node_modules\socketwatcher\buil
d\socketwatcher.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:2
76:23)
gyp ERR! stack at emitTwo (events.js:106:13)
gyp ERR! stack at ChildProcess.emit (events.js:191:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.14393
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node
-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\XXXXXX\AppData\Roaming\npm\node_modules\dash-button\node_modules\socketwatcher
gyp ERR! node -v v6.9.1
gyp ERR! node-gyp -v v3.4.0
ほにゃらら.hファイルがないので落ちている?しょうがないので当該ディレクトリを探りにいくと確かに対象ファイルがない。
windowsで環境作ることがほぼないのでstackoverflowなんかで調べてみたけれども有益な情報なし。(Window SDK 7.1を入れろと書いてあったのでやってみたけどだめだった)
2時間ほどドはまりした結果、よくよく考えてみれば、実家に設置する際にはラズパイでやるのだからと自分を納得させて家に転がってるMac miniで試すこととした。
Mac miniで環境構築
家に転がっているearly2012のMac miniは近頃macOS Sierra 10.12にしていたのでHomebrewなどをアップデートしたり、nodebrewをインストールしたりして準備した。
今度はnode-dash-buttonのラッパーであるDasherを入れてみる。
その前にlibpcapをbrewからインストールしておこう。
$ brew install homebrew/dupes/libpcap
そのあとにDasherのインストールを行う。
$ git clone https://github.com/maddox/dasher.git
$ cd dasher
$ npm install
ここまでエラーがでなければ環境準備はオッケーだ。
ところで、もしかしたらwindows10でもDasherならうまくいったんじゃないの?とは思ったが、そっと目を閉じた。
通知先はどうするか?
さて、通知先はどうするかを悩まなければいけない。
僕が通知を常時見るとすればSlackかLINEとなる。
最近LINEBOTがマイブームなのでSlackのほうが楽ではあるが、あえてのLINEとした。
LINE Messaging APIはPushも可能だがいろいろと制約もありめんどくさそうなので、実績もあるIFTTTと連携させることとした。
IFTTTでMakerとLINEの連携
Maker
IFTTTでWebhook機能を持つのはMakerなのでLINEとconnectする。
IFTTTにアカウントがあれば既にMakerは用意をされているのでSearchから探す。
Settingを見るとUserIDがわかるのでひかえる。
LINEの連携
LINEは連携されていないので自分のアカウントと連携をする。
MakerとLINEでAppletを作る
LINEの連携が終わったら、MakerとLINEでAppletを作る。
IfがMakerでToがLINEだ。
EventNameは適当で大丈夫だが後ほど必要になるので控えておく。
SendMessageは「1:1でLINE Notifyから通知を受け取る」を選択する。
MessageはLINEに通知したい内容だ。Jsonでリクエストされた情報も表示できるが、今回の用途では固定で良かったのでおかんのメール癖を入れた。
Dasher
Dasherの役割を軽く説明しておくと、ボタンを押したときにHTTPリクエストを別のサーバに飛ばすことができるもの。
ボタンのMACアドレスからのパケット通信をとらえ、config.jsonに書かれたリクエスト先に飛ばす。
MACアドレス取得
ということでまずはボタンのMACアドレスをDasherのコマンドを用いて確認する。
% ./script/find_button
Password:
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
xx:xx:xx:xx:xx:xxがMACアドレスなのでひかえておこう。
config/config.json設定
configディレクトリ配下にconfig.jsonを作成する。
{"buttons":[
{
"name" : "{YOUR_EVENT_NAME}",
"address": "xx:xx:xx:xx:xx:xx",
"url":"https://maker.ifttt.com/trigger/{event}/with/key/YOUR_KEY_ID",
"method": "POST"
}
]}
Dasher起動
% npm start
動作
準備が整ったので実際に動かしてみよう。動画のほうがわかりやすいので、画像は荒いがこれを見ていただきたい。
Mamazon Dash Buttonの動画 pic.twitter.com/SP9CtlHk7a
— momochan_qiita (@momochan_qiita) 2016年12月15日
結果はこんな感じ。
Mamazon Dash Button pic.twitter.com/gzWnhDlYr6
— momochan_qiita (@momochan_qiita) 2016年12月15日
ちょっと残念なこと。
— momochan_qiita (@momochan_qiita) 2016年12月15日
以上が僕がやったAmazon Dash Buttonのすべてである
Author And Source
この問題について(Amazon Dash Buttonをおかんからの電話ほしい要求に使ってみる -Mamazon Dash Button-), 我々は、より多くの情報をここで見つけました https://qiita.com/momochan/items/d8dc0b95cfaee216ace4著者帰属:元の著者の情報は、元の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 .