この記事はおうちハック Advent Calendar 2016 - Qiitaの17日目の記事です。
Amazon Dash Button Hack
みなさん こんにちは!
おうちハックや何か創作活動していますか?
しているという方は1日何時間位やっていますか??
私自身、目安ではなく実際どのくらい作業をしているのか正確な時間が知りたかったので Amazon Dash Buttonを使用して作業ログをSpreadsheetに書き込むようにしました。
日本で発売してからちょっと経っているので出遅れた感満載ですが、そこは気にせず読んでいただければと思います。
作ったもの
Amazon Dash ButtonでSpreadSheetを更新+時間を記録する
アマゾンのボタンを押すと
spreadsheetに書き込まれ、約1分単位で作業時間が分かります!
ちなみにこのスクショはリアルに自分が作業したログでちょいちょいサボっているので時間がめっちゃ細切れになっています。集中力無さすぎ!
また、spreadsheetなので他の人と共有したり、GAS(Google Apps Script)でお手軽に色々カスタマイズできます。
amazon dash button 書き換え方法
必要なものを用意して先駆者達のソースをcloneして設定を変更するだけです。 SpreadSheetに書き込むところもAPIを使えばほぼコーディングせず、完成します!!簡単!
手順
Amazon Dash Buttonのwifi設定
Amazon Dash Buttonの MACアドレスを調べる
調べた情報を元に設定ファイルを追加
APIの設定
SpreadSheet側でスクリプトを書く
これで完成!
必要なもの
・PC
・Amazon Dash Button(プライム限定)
1.Amazon Dash Buttonのwifi設定
Amazon Dash ButtonをGETしたらwifi設定のみを行います。 商品購入設定を行うとボタンを押すたびに商品が届いてしまうので注意!
ダッシュボタン本体から叩くまでの内容については以下のqiitaの内容がとても分かりやすいです!神!
Amazon Dash ButtonをただのIoTボタンとして使う - Qiita
2.Amazon Dash Buttonの MACアドレスを調べる
Dashボタン本体のwifi設定をしたらMACアドレスを調べます。 こちらもさきほどのqiitaを参考に設定するだけ!
3.調べた情報を元に設定ファイルを追加
config/config.jsonを作成してMACアドレスとPOSTの設定を書きます。
Spreadsheetに書き込むのはcloudstitchのsheet APIを使うと簡単です。
こちらのAPIでスプレッドシートに追記するには以下のように叩けばいいので、
curl -d "[書き込む内容]" https://api.cloudstitch.com/[アカウント]/spreadsheet-powered-api/datasources/sheet
configファイルにこれに沿ったPOST内容を書けばOKです。(書き方は同じディレクトリにあるexampleを見るとわかりやすい!)
{"buttons":[ { "name" : "lifelog", "address": "アマゾンダッシュボタンのMACアドレス", "url": " https://api.cloudstitch.com/[アカウント]/spreadsheet-powered-api/datasources/sheet", "method": "POST", "body":"trigger=push" } ]}
時刻の設定などはspreadsheet側のスクリプトで行なっているので変更しているのはここだけです!
あとはspreadsheet側で何か追加された時刻を追加するスクリプトを書けば完成です! 追加方法は「ツール」→ 「スクリプトエディタ」から追加できます。
今使用している何か新しく追記されたら更新日時を追加するスクリプト
function insertLastUpdated() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var lastRow = sheet.getLastRow(); // 更新された最後の行番号 var triggerCell = sheet.getRange('A' + lastRow).getValue; // トリガーとして使用している列を指定 var updateDateRange = sheet.getRange('B' + lastRow) // 更新した日時を書くセルを指定 // 更新日時が空でトリガーがあるなら今の日時を追加 if(!updateDateRange.getValue() && triggerCell) { updateDateRange.setValue(new Date()); } }
これでスプレッドシートに何か書き込む+今の日時を記録完了!!!
あとはspreadsheet上でグラフを追加したり分析し放題!!
作ったはいいけど全然作業していない!!
参考にした記事
How I Hacked Amazon’s $5 WiFi Button to track Baby Data こちらは子供のオムツを変える時間を残しています。
設定ボタンを設定するのはここが分かりやすいです! Amazon Dash ButtonをただのIoTボタンとして使う - Qiita
最後に
仕様上、家で作業、なおかつPCで作業をするときなどに限られてしまうのですが物理ボタンを押すだけというのはスマホアプリを立ち上げで時間をカウントするのよりめちゃくちゃ楽なので結構おすすめです。
何より500円という値段で手に入ってIoTを身近に感じられるのでぜひみなさんをやってみてくださいー! (不明点がありましたら全力でお答えします!)
明日は@narikeiさんの「なんか!」です!一体なんなのでしょうか!!!楽しみです!!
以前作ったもの → スマホ自動化!物理的に自動でスマホ・タブレット操作をするロボットの作成 - いろいろ作るよ
- 出版社/メーカー: Amazon
- 発売日: 2016/12/05
- メディア: エレクトロニクス
- この商品を含むブログを見る