押したらパソコンが悲鳴をあげるアマゾンダッシュボタンを作ってみた

ポチッとするだけで荷物が届く魔法のボタン、アマゾンダッシュボタンはもう買いましたか?

ボタンを押すだけですぐ届く反面、子供が勝手に押したりと早速問題になっていたり、もはやお祭り状態。

何か対策をできないかなとしばし考えて思いついた方法…それは「ボタン押したら怖いことが起こる」

だから作ってみた。その名も「押したらパソコンが悲鳴をあげるアマゾンダッシュボタン」

※音量注意

これで子供もボタンを押さないようになるはず!
くれぐれも、パソコンを使っている人を驚かさないようにね。

以下、作り方の簡単な説明。

「押したらパソコンが悲鳴をあげるアマゾンダッシュボタン」を作るのに必要なもの

  1. Dash Button
  2. Mac
  3. node.js
  4. 再生する動画

1. Dash Button のセットアップを途中で切り上げる

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

この手順でDash Buttonのセットアップを終了させる。

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

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

node-dash-button を使用するとボタンが押されたことを簡単に検知できる。
セットアップの手順は README に書いてある。

ざっくり紹介すると、次のような手順になる。

  1. npm で node-dash-button をインストール
  2. bin/findbutton を実行して、自分の Dash Button の ID を取得する
  3. 2で取得した ID を設定して、ボタンが押されたことを検知するコードを用意する
var dash_button = require('node-dash-button');
var dash = dash_button("XX:XX:XX:XX:XX:XX", null, null, 'all'); //2で取得したIDを設定する
dash.on("detected", function (){
    console.log("omg found");
});

コードを実行しボタンを押し、 “omg found” が表示されればOK。

3. Apple Script で動画を再生させる

node-applescript を使用し、ボタンを押したら Apple Script で動画を再生する。

ざっくり紹介すると、次のような手順になる。

  1. npm で node-applescript をインストール
  2. 再生する動画を用意する
  3. 動画を再生する Apple Script を用意する
  4. ボタンが押されたタイミングで Apple Script を実行する

Apple Script は次のようになる。

script.txt

tell application "QuickTime Player"
    open "/path/to/moviefile.mp4"
    tell front document
        present
        set looping to true
        play
    end tell
end tell

“/path/to/moviefile.mp4” は用意した動画へのパスを指定する。

実行するコードは次のようになる。

var applescript = require('applescript');
var dash_button = require('node-dash-button');
var fs = require('fs');
var dash = dash_button("XX:XX:XX:XX:XX:XX", null, null, 'all'); //2で取得したIDを設定する
dash.on("detected", function (){
    console.log("omg found");

    // 別ファイルの Apple Script を読み込んで実行
    fs.readFile('./script.txt', 'utf8', function (err, script) {
        applescript.execString(script, function(err, rtn) {
            if (err) {
                // Error
                console.log(err);
            }
        });
    });
});

コードを実行しながらDash Button を押して動画が再生されれば完成。