いろいろ作るよ

今まで作った物やその過程を技術的なことを省いて残すよ

超簡単!Amazon Dash Buttonで作業時間を可視化する!

この記事はおうちハック Advent Calendar 2016 - Qiitaの17日目の記事です。


みなさん こんにちは!

おうちハックや何か創作活動していますか?

しているという方は1日何時間位やっていますか??

f:id:ruteinyoyokk121:20161211162733p:plain

私自身、目安ではなく実際どのくらい作業をしているのか正確な時間が知りたかったので Amazon Dash Buttonを使用して作業ログをSpreadsheetに書き込むようにしました。


日本で発売してからちょっと経っているので出遅れた感満載ですが、そこは気にせず読んでいただければと思います。



作ったもの

Amazon Dash ButtonでSpreadSheetを更新+時間を記録する

アマゾンのボタンを押すと


f:id:ruteinyoyokk121:20161211173314j:plain


spreadsheetに書き込まれ、約1分単位で作業時間が分かります!


f:id:ruteinyoyokk121:20161211215059j:plain


ちなみにこのスクショはリアルに自分が作業したログでちょいちょいサボっているので時間がめっちゃ細切れになっています。集中力無さすぎ!

また、spreadsheetなので他の人と共有したり、GAS(Google Apps Script)でお手軽に色々カスタマイズできます。



作成方法

必要なものを用意して先駆者達のソースをcloneして設定を変更するだけです。 SpreadSheetに書き込むところもAPIを使えばほぼコーディングせず、完成します!!簡単!


手順

  1. Amazon Dash Buttonのwifi設定

  2. Amazon Dash Buttonの MACアドレスを調べる

  3. 調べた情報を元に設定ファイルを追加

  4. APIの設定

  5. 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を使うと簡単です。

Cloudstitch

こちらの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());
  }
}

これでスプレッドシートに何か書き込む+今の日時を記録完了!!!

f:id:ruteinyoyokk121:20161211215059j:plain


あとはspreadsheet上でグラフを追加したり分析し放題!!

f:id:ruteinyoyokk121:20161217005827p:plain 作ったはいいけど全然作業していない!!



参考にした記事

How I Hacked Amazon’s $5 WiFi Button to track Baby Data こちらは子供のオムツを変える時間を残しています。

設定ボタンを設定するのはここが分かりやすいです! Amazon Dash ButtonをただのIoTボタンとして使う - Qiita



最後に

仕様上、家で作業、なおかつPCで作業をするときなどに限られてしまうのですが物理ボタンを押すだけというのはスマホアプリを立ち上げで時間をカウントするのよりめちゃくちゃ楽なので結構おすすめです。

何より500円という値段で手に入ってIoTを身近に感じられるのでぜひみなさんをやってみてくださいー! (不明点がありましたら全力でお答えします!)

明日は@narikeiさんの「なんか!」です!一体なんなのでしょうか!!!楽しみです!!

以前作ったもの →  スマホ自動化!物理的に自動でスマホ・タブレット操作をするロボットの作成 - いろいろ作るよ

サントリー天然水 Dash Button

サントリー天然水 Dash Button