使わない電子書籍リーダーとRaspberry Piを使ってテレビ視聴時間モニターを作った

Haru Soma
Haru Soma
Nov 7 · 6 min read

うちの家族はちょっとテレビを見過ぎる。しょうもない番組とわかりつつも気がついたらみんなで数時間見てることがよくある。

だったら視聴時間を可視化して、テレビを見るときはいつもそれが目に入るようにしてしまえば、いやでも各自が自覚するようになるかもしれない。そんなわけでテレビ視聴時間モニターを作った。

完成したテレビ視聴時間モニターはこんな感じ:

視聴時間を分単位で表示

単純にテレビがついていた時間を大きく表示するだけ。

主な部品

ハードウェア

作り方は他のブログをみて!

完成したシステムの全景:

システムの全体像

一番はまったのはクランプメーター。アホだから、始めクランプでテレビの電源ケーブル全体を挟んで測定してた。どうやっても50Hzの振幅が見れなくておかしいなあと悩むこと数時間、使い方が間違っていることにようやく気付いた。交流なので両方挟んだら当然打ち消しあうよね。ちょっと考えればわかることなのに。

電源の一方だけをクランプで挟む

ソフトウェア

ソフトウェアの構成は

  • 電流値測定ロガー(current_logger.py)
  • 測定値表示Webサーバー (server.js)

になってる。

電流値測定ロガー

  • pythonで実装
  • ADコンバーターの出力をSPIで取り込む。サンプリングレート1KHzで1秒間を1分周期でサンプリング
  • サンプリング値を電流に変換し、平均値をベースラインとして補正してからRMSを算出
  • 電流値のRMSが閾値を超えてたらテレビがONとし、結果をタイムスタンプとともにsqlite3のDBに追加

測定値表示Webサーバー

  • node.jsで実装
  • クライアントからのリクエストでロガーが書き込んだデータをDBから取得
  • DBのクエリで本日のテレビがONだった全レコードを指定する(レコード1件が1分→レコード数が視聴時間)
  • DBの取得結果をHTMLに埋め込んでクライアントに返す

詳しくはこちらをみてね:

測定値のモニター

測定値のモニターだから常に表示しておきたい。でも消費電力は気になる。表示には電子ペーパー使いたいなと思ってたら、うちに使っていない電子書籍リーダーがたくさんあるじゃないか。

いつのまにか増えるよね

Kindleもkoboもソニーリーダーも一応Webブラウザを内蔵している。測定値はHTMLでWebサーバーから電子書籍リーダーのWebブラウザに表示すれば、レイアウト含め簡単にできちゃう。ということで今回は持っている中でおそらく一番古いkoboリーダーをモニターとして使うことにした。

以下気づいたこと:

  • HTMLのheadでリフレッシュ間隔を指定することで1分おきに表示を更新することができた
  • 画面が消えないように設定する必要がある(機種によってやり方が違う)
  • WebブラウザのJavaScriptのバージョンが古いのでReactが使えなかった
  • koboのブラウザは一日二日でフリーズするのでよく再起動している(Webサーバーのせいかも?)
  • バッテリー内蔵なので持ち運びも簡単

まだ使いこなしていないからよくわからないけれど、つけっぱなしにするモニターとして他にも色々使えるかもしれない。

モニターの効果

うちの家族からはテレビ台の上に置かれて邪魔、埃がすぐ着いて掃除が大変など、反響はあった。

そして肝心の効果のほどはほとんどないかな。モニターが邪魔と言う割には誰も時間なんて気にしていないんだよね。もっと1時間経過するごとに音声で警告やSMSを送るとかしないとうちはダメなのかもしれない。

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade