min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Amazon Dash Button を改造してrecpt1録画開始ボタンにする(押下 → RaspberryPi3 が受信 → 録画開始POST送信 → 地デジサーバで録画開始)

Amazon Dash Button なるものが出来たらしい。ワンプッシュでWiFiに接続し、好きな商品を注文できるとか。

ワンプッシュでWiFiに接続ってところにたまらなく惹かれる。これぞIoT。

f:id:min117:20161209072723p:plain

ハックすると、物理ボタンひとつでPOSTを投げられるから、実質何でもできる。CYBER MONDAYなんてやっている場合ではない。すでにハック成功した人もいるようだ。

qiita.com

さっそく試す。

ーーー

やりたいこと。

Amazon Dash Buttonを押す → RaspberryPi3で通信キャッチ →(node)→ PiがPOST文を投げる → 地デジサーバが受けて録画を開始する。

f:id:min117:20161209072212j:plain

処理の流れ

 ① Amazon Dash Button を押す → APR送信

 ② ARPをRaspberryPiで検知 → NodeがPOST文を投げる

 ③ POST文を(地デジサーバfedoraの)PHPでキャッチ → shell(bash)実行 → 録画開始

ーーー

③の shell から先は何でもやり放題。今回は録画にするけど、動画撮影させたり、テレビ録画させたり、何でもできる。

ーーー

まずは Amazon Dash Button を注文する。500円。いろいろ種類があるけど、「ハックされた自由なボタン」って感じの名前がいいので「オールフリー」で注文してみた。

f:id:min117:20161209074315p:plain

大人気なのか、到着は早くても来年1月のようだ。Node準備して気長に待つか。

 

ーーー

2016/12/27 届いた。Dasher 開発者のサイトの通り進めていく。

github.com

ーーー

Dasher app をインストールする。

f:id:min117:20161227222641p:plain

f:id:min117:20161227221256p:plain

f:id:min117:20161227221239p:plain

gitが入ってなかった。

$ sudo apt-get -y install git

f:id:min117:20161227221727p:plain

f:id:min117:20161227222726p:plain

$ git clone https://github.com/maddox/dasher.git

f:id:min117:20161227222029p:plain

$ cd dasher

$ npm install

f:id:min117:20161227222213p:plain

なんか色々ワーニング出る。

f:id:min117:20161227222418p:plainbyobu が死んでPiが応答しなくなった。ネットワークが切れた?

f:id:min117:20161227223112p:plain

と思ってLANケーブルをつなぎなおしたらコンソールが返って来た。これでインストールできたらしい。

ーーー

$ ./script/find_button

f:id:min117:20161227224336p:plain

これでRaspberryPi3側はの「arp待ち状態」開始。ここでDashボタンを青色になるまで押す → Dashボタン本体からarpリクエスト発出 → RaspberryPi3が受け取る → 画面上には Amazon Technologies Inc って名前のデバイスが見える → そのMACアドレスを控える。

ーーー

f:id:min117:20161227223445p:plain

config.json を作る。

f:id:min117:20161227223616p:plain

$ vim config/config.json

f:id:min117:20161227225240p:plain

ーーー

いよいよ開始。

$ npm start

f:id:min117:20161227225401p:plain

エラーになった。なんでやねん…

f:id:min117:20161227225438p:plain

npm start 直後に Error: socket: Operation not permitted てことは、権限が足りてないのか?困った時は sudo でLinuxのことわざみたいなものと思ってる。

$ sudo npm start

f:id:min117:20161227225854p:plain

起動した!

f:id:min117:20161227230603p:plain

3回押してみたがすべて認識されている。

pressed を認識した ラズパイ3 は、POSTを地デジ録画サーバ(fedora)に送る。

ーーー

ボタンがpressed される前の地デジサーバはこんな状態。recpt1 のプロセスが2つ上がっている(2番組録画中)。

f:id:min117:20161227230823p:plain

ここで Dashボタンを押してみると…

f:id:min117:20161227230912p:plain

録画開始されて、3つ目のrecpt1プロセスができた。

ーーー

これで、全世界どこからでも Dashボタンを押すだけで地デジ録画できる環境 のできあがり。こりゃ最高だ。