やーまんぶろぐ

気が向いた時にだけ書くブログ

Amazon Dash ButtonとMacを連携させてみた

Amazon Dash ButtonとMacを連携させてみました。

基本的には下の記事を参考にさせてもらってます。

qiita.com

Node.jsとnpmのアップデート

Node.jsとnpmが古い場合は事前にアップデートしておきましょう。
yamano3201.hatenablog.jp

$ node -v
v7.4.0

$ npm -v
4.0.5

Amazon Dash Button の購入

以前、購入したときの記事です。
yamano3201.hatenablog.jp

このとき購入した「食器用洗剤」の他に、「トイレットペーパー」と「ティッシュ箱」と今回の「Mac連携用」の計4つを購入しました。

Amazon Dash Button のセットアップ

1.Amazonアプリの左上ハンバーガーメニューより「アカウントサービス」

2.下部にあるDush端末の「新しい端末をセットアップ」

3.表示される通りDushボタンの電源を入れ、Wifiに接続

4.Wifiに接続完了すると商品を設定する画面が表示されるのでここでやめる。

ここは参考サイトそのままの手順になります。
ボタンを押したときのスマホへのPush通知をオフにするために、
Amazonアプリの「端末を管理」から、「このDash Buttonを無効にする」で無効にしておきます。

node-dash-buttonを使ってAmazon Dash ButtonのMACアドレスを取得

$ npm install node-dash-button
$ sudo node bin/findbutton
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.' 

# ここでAmazon Dash Button を押します

Possible dash hardware address detected: XX:XX:XX:XX:XX:XX Manufacturer: Amazon Technologies Inc. Protocol: arp

XX:XX:XX:XX:XX:XX の部分が取得できたMACアドレスになります。

node-applescript を使って Apple Scriptを動かす

ここではsayコマンドでMacに喋らせるScriptを用意しています。

$ npm install applescript
$ cat << EOF > script.applescript
tell application "System Events"
    say "test"
end tell
EOF

続いて、Amazon Dash Buttonが押されたタイミングで Apple Script を実行するJavaScriptを用意します。
XX:XX:XX:XX:XX:XX には事前に取得しておいたMACアドレスを入力します。

$ export MAC_ADDRESS=XX:XX:XX:XX:XX:XX
$ cat << EOF > app2.js
var applescript = require('applescript');
var dash_button = require('node-dash-button');
var fs = require('fs');
var dash = dash_button("${MAC_ADDRESS}", null, null, 'all'); 
dash.on("detected", function (){
    console.log("test");
fs.readFile('./script.applescript', 'utf8', function (err, script) {
        applescript.execString(script, function(err, rtn) {
            if (err) {
                // Error
                console.log(err);
            }
        });
    });
});
EOF

このJavaScriptも参考サイトそのままです。

動作確認

$ sudo node app.js

# ここでAmazon Dash Button を押します

test

ターミナルに「test」と出力され、Macからも声として出力されればOKです。

最後に

思ったより参考にしていた記事と変わらなくなってしまった。。
あとは好きなコマンドに変えれば面白いことできそうですね。アイデアは考え中です。