Amazon Dash ButtonでMacをスリープ

  • 7
    いいね
  • 0
    コメント

Amazon Dash Buttonはすでに2つ目なんですが、1つ目の「天然水」は嬉しくてフツーに使ってしまったので2つ目の「フルグラ」を使ってnode.jsの勉強と仕事中、離席時に便利かなと思ったので作ってみた!
(本当はiWatchが買えなかった腹癒せに作った)

やりたいこと

1.Amazon Dash Buttonのボタンをポチッと押す
2.Macがスリープする

これだけ・・・・

環境

Mac Book Pro2016 OS Sierra 10.12.2
node.js 7.3

参考にした記事

押したらパソコンが悲鳴をあげるアマゾンダッシュボタンを作ってみた
Amazon Dash ButtonでGet Wild退勤する
クリックするだけで一発スリープ・一発終了・一発再起動

準備するもの

Amazon Dush Button
Wifiパスワード
Mac
node.jsとnpmをインストールしておく

手順

Dash Button のセットアップを途中でやめる

Amazon アプリで Dash Button のセットアップを行い、WiFiの設定をする。
ただし、注文する商品を選択する手順でセットアップをやめる

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

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

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

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

ここで商品を登録してしまうと、ボタンを押すと発注されてしまうようになるので、間違って登録してしまった場合は、「端末の管理」から一旦削除し、もう一度1よりセットアップを行ってください。

node-dash-button でボタンをコントロール

node-dash-button を使用するとボタンが押されたことを簡単に検知できます。
ここからはMacのターミナルで作業

1.任意のディレクトリを作成
$ mkdir appdush

2.ディレクトリに移動
$ cd appdush

4.npm で node-dash-button をインストール
$ npm install node-dash-button

5.bin/findbutton を実行して、自分の Dash Button の ID を取得する

$ sudo node bin/findbutton

findbuttonを実行してDush Buttonのボタンを押すと、検出したコードが出てくる。unknownと書かれたものがボタンのMACアドレスです。

6.先ほど取得したMacアドレスを控えておく。

Apple Script でMacをスリープさせる。

node-applescript を使ってボタンを押したら Apple Script でMacをスリープさせる。

1.npm で node-applescript をインストール

$ npm install applescript

2.Macをスリープさせる Apple Script を用意する

script.applescript
tell application "System Events"
    sleep
end tell

Apple Scriptはちゃんとスクリプトエディタで書くと失敗がありません。
私は普通のテキストエディタで書いたので最初エラーが出ました。
スクリプトエディタで保存する形式は*.applescriptの拡張子で保存してくださいね

3.ボタンが押されたタイミングで Apple Script を実行するコードをapp.jsで保存

$ vi app.js

app.js
var applescript = require('applescript');
var dash_button = require('node-dash-button');
var fs = require('fs');
//取得したDash ButtonのMacアドレスを設定する
var dash = dash_button("XX:XX:XX:XX:XX:XX", null, null, 'all'); 
//検出時にログファイルに書き込まれるテキスト
dash.on("detected", function (){
    console.log("sleep");
// 別ファイルの Apple Script を読み込んで実行
fs.readFile('./script.applescript', 'utf8', function (err, script) {
        applescript.execString(script, function(err, rtn) {
            if (err) {
                // Error
                console.log(err);
            }
        });
    });
});

出来上がり!

動くかどうかを確かめるには

1.ターミナルでjsファイルを実行
$ sudo node app.js

2.Dash Buttonをポチッとな

3.Macがスリープに入ります。

余談ですが、ポチった時にスマホのAmazonアプリが反応して
「フルグラDush Buttonのセットアップが完了していません」
と言うアラートが毎回出る時はAmazonアプリで途中まで設定が入っている為なので設定を解除してください。