うちの家族はちょっとテレビを見過ぎる。しょうもない番組とわかりつつも気がついたらみんなで数時間見てることがよくある。
だったら視聴時間を可視化して、テレビを見るときはいつもそれが目に入るようにしてしまえば、いやでも各自が自覚するようになるかもしれない。そんなわけでテレビ視聴時間モニターを作った。
完成したテレビ視聴時間モニターはこんな感じ:

単純にテレビがついていた時間を大きく表示するだけ。
主な部品
- 使い道に困っていた Raspberry Pi 1 Model B
- 高精度電流センサー(CTセンサー)秋月で購入
- ADコンバーター MCP3008 (Raspberry Piで学ぶ電子工作キットについていた)
- Raspberry Pi用ユニバーサル基板 秋月で購入
- ダイソーで買った延長コード
- 電子書籍リーダー
ハードウェア
作り方は他のブログをみて!
完成したシステムの全景:

一番はまったのはクランプメーター。アホだから、始めクランプでテレビの電源ケーブル全体を挟んで測定してた。どうやっても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を送るとかしないとうちはダメなのかもしれない。