どんちゃんのひまつぶし

とあるスタートアップにいるエンジニアの雑多ブログ

Amazon Dash Buttonを間違った使い方をしてみる

スマートスピーカーで最近話題のAmazonですが、Dash Button(ダッシュボタン)の存在も思い出してあげてくださいね。

 

ということで、今回は、ボタンを押すだけで簡単に注文ができる便利ガジェット、DashButtonをIoT化して活用してみます。

f:id:d0nchan:20171119230517j:plain

ダッシュボタンをPCの休止ボタンにしてみよう

まずは要件定義

・ボタンを押したらPCを休止モードにする

・休止モードにする前にTVソフトの起動有無のチェック

・起動していたら終了してから休止モードに

・休止と同時にTwitterにツイート

Amazon Dash Buttonの設定

Dash Buttonの初期設定

まず、通常通りダッシュボタンの設定を行います。

Amazon.co.jp ヘルプ: スマートフォンでDash Buttonをセットアップする

f:id:d0nchan:20171120004411p:plainf:id:d0nchan:20171120004430p:plain

f:id:d0nchan:20171120004448p:plainf:id:d0nchan:20171120004518p:plain

許可をタップ

f:id:d0nchan:20171120004534p:plainf:id:d0nchan:20171120004550p:plain

f:id:d0nchan:20171120004704p:plain

MACアドレスIPアドレスを特定する

ボタンを押すと、一時的にWi-Fiに接続する仕組みのため、当然MACアドレスを持っています。ググるとnode.jsを導入する方法などありますが、僕はそういう知識皆無なので、簡単な方法を考えました。

 

接続しているルーターから端末とそのIPアドレスを特定

IPアドレスを払い出しているルーターの設定画面にアクセスします。

僕の場合は、フレッツ光隼環境なので「PR-500KI」というルーター機能一体型ONUが置かれています。

f:id:d0nchan:20171120120246j:plain

まずこちらの設定画面にアクセスする必要があります。

192.168.1.1

f:id:d0nchan:20171120120736j:plain

「情報」→「DHCPv4サーバ払い出し状況」に移動すると、接続されている端末のMACアドレスと割り当てられたIPアドレスが表示されます。しかしこのままではどれがボタンのアドレスかわかりません…。が、MACアドレスから特定できます。

f:id:d0nchan:20171120121250j:plain

赤で囲ったところがダッシュボタンのMACアドレスです。

なぜわかるかというと、下記のリストに載っているのは全てAmazon製品だから。

f:id:d0nchan:20171120122754j:plain

端末を接続していても、ダッシュボタン以外は簡単に表示できるので絞り込めるはずです。

僕の場合は「B4:7C:9C」でした。

すると自動的にIPアドレスもわかりますね。

このIPアドレスを控えておきます。MACアドレスはここでお役御免です。

mac.uic.jp

AmazonButton_v4J.exeを使い、任意のプログラムを実行できるようにする


Amazon Dash Button で変熊画像を表示する - Windows7

変熊さんが作ってくださったツールを使用します。

 

動画概要欄からダウンロードし、任意の場所に解凍し、AmazonButton_v4J.exeを実行します。

f:id:d0nchan:20171120125110j:plain

IPアドレスを入力し、「OK」をクリック

f:id:d0nchan:20171120130123j:plain

ファイル選択画面が出るので、ボタンを押したときに実行するファイルを選択。

使い方が決まってる方はここまでで終わりです。ボタンを押すと実行されるはずです。

PCを休止モードにするファイルを作る

今回は休止モードにする実行ファイルを作ります。ただのバッチファイルです。

適当にテキストファイルを新規作成し、拡張子を「bat」にして保存します。

powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState
powercfg -h on 

素人なんでググりながら書きましたが、詳しい人はご自分でカスタムしてください。

休止する前に、TV視聴ソフトの起動有無をチェック

僕はベッドに寝ころびながらPC TV PlusやTVTestでテレビを見ながらそのまま寝落ちすることもあるので、不具合防止に、ソフトを終了させてから休止モードに入るようにします。

taskkill /F /IM TVtest.exe /IM Vnt.exe /T

コマンドはこちらを参考に

Windowsコマンド集 - taskkill:ITpro

休止モードに入ると同時にツイート

ほぼお遊びですが、ボタンを押したら任意のツイートができるようにします。

IFTTTでTwitterと連携

仕組みは簡単。ボタンが押されたらIFTTTで作った「アクセスすると指定したツイートする」URLを開く。これだけ。ですがコマンド操作だけではURLを開くことができなさそうなので、VBSを使用しました。

あらかじめIFTTTのアカウントは作っておいてください。

f:id:d0nchan:20171120150928j:plainf:id:d0nchan:20171120150954j:plain

「+this」をクリック。トリガーを指定します。

f:id:d0nchan:20171120151039j:plain

検索で「web」と入力すると「Webhooks」が出てくるのでクリック

f:id:d0nchan:20171120151128j:plain

「Connect」をクリック

f:id:d0nchan:20171120151218j:plain

「Recieve a web request」をクリック

f:id:d0nchan:20171120151513j:plain

「EventName」はわかりやすければ何でもok

f:id:d0nchan:20171120151611j:plain

「+that」をクリックし、実際の動作を決めてあげます。

f:id:d0nchan:20171120151650j:plain

今回はツイートなのでTwitterを選択

f:id:d0nchan:20171120151721j:plain

画像付きなら上段左から2番目を選択してください。

f:id:d0nchan:20171120151803j:plain

ツイートしたい内容を入力します。

f:id:d0nchan:20171120152102j:plain

画像の通り、検索からWebhookの設定ページを開きます。

f:id:d0nchan:20171120152158j:plain

「Documentation」をクリックすると

f:id:d0nchan:20171120152232j:plain

大事なページが出てきます。上の囲ったところには上記で指定したイベント名を入力。

この段階で下に表示されているURLにアクセスするとツイートされます。

ここまで作ったものを組み合わせる

VBSファイルを作る

バッチファイルだけでは限界があるので、VBSに頼ります。

拡張子を.vbsにして下記のコードを書きます。

set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run ("chrome.exe -url [先ほど作ったURLに置き換えてください]")

WScript.Sleep( 1000 )

WshShell.AppActivate "chrome.exe"

WshShell.SendKeys "^w"

URLを開くとタブも開くのでタブを閉じる処理を入れています。

あとはググってくださいw

バッチファイルと合体

taskkill /F /IM TVtest.exe /IM Vnt.exe /T
"C:\DashButtonSleep\AmazonButton_v4J\closetab.vbs %"
TIMEOUT /T 1
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState
powercfg -h on

最終的なコードです。

2行目は先ほど作ったVBSファイルのパスを環境に合わせて変えてあげてください。

 

使い方次第ではいろいろできそうですね。