子供のテレビの閲覧時間を制限したい!その野望のためにまずは環境を構築しようと考えています。
現状の問題点
Android TVを利用しているため、テレビで簡単にYouTubeが見れてしまい、気がつけば何時間も子供がYouTubeを見ている日があります。
(ほぼ毎日です。朝・晩と・・・。夏場になると朝早くに起きて見ています。。。)
ワイワイ、ガヤガヤ騒いで知るYouTuberの映像のどこがそんなに面白いのか?(それでもまあ、20本に1本程度は、面白いと思うのはあるのですが・・・)
甲高い声のYouTuberの声を聞くと、たまにイラッとするときがあります。。。
そんな訳で、1日のテレビ視聴時間を制限できればと考えています。
テレビ側で制限の設定できると良いのですが、さすがに無い!Androidアプリを探してもやはり無い!
いっそ、設定からYouTubeアプリを停止しよう!そう思うこともあったのですが、都度、停止と起動の操作が面倒・・・
そこで、外部の機器を使って、テレビの起動時間を計測し、制限時間を超えていれば電源を付けない(オフ)などの処理を考えています。
描いている道のり
①テレビのリモコンをGoogle Homeに変更
テレビを付けてっと言えば、制限時間無いであれば電源をONにし、制限時間を超えていれば制限時間を超えていますとメッセージを流し何もしない。
制限時間が近づくと、後何分ですのメッセージを自動で流す。
②Raspberry piで1日のテレビ視聴時間を管理する
時間の管理の他に、Raspberry piのHDMI-CEC機能を使ってテレビの状態&操作を行う。
※Android TVのため、Google Homeから直接テレビを操作できません。
当初は上の仕様に、API操作ができる赤外線リモコンのNature remoを挟む予定でしたが、Raspberry piのHDMI-CECで十分なのでやめました。
また、Nature remoとGoogle Homeで直接テレビを操作した時の、認識率の悪さとレスポンスの悪さに使う気が無くなったのも理由の1つです。
環境の構築
・Google Homeの用意
既に使っているGoogle Homeをそのまま利用します。
・Raspberry piの用意
raspbianをOSとして、一般的なWEBサーバー仕様でセットアップ
・OSのインストール
・日本語設定
・ネットワーク設定(&ssh接続)
・WEBサーバーの構築(Nginx、node.js、Python、PHP-fpmなど)
ごくごく一般的な仕様で構築しました。
Google HomeとRaspberry piの接続は、iftttのWEBサービスを利用することにしました。
dialogflowを使った方が、iftttよりレスポンスが早いようですが、テストアプリを起動などの発言が邪魔なのでiftttを使うことにしました。
(iftttでもレスポンスは2秒程度なので許容範囲です。ただ、レスポンスメッセージをRaspberry piが設定できると良かったのですが、お決まりの定型文?しか返せないのが残念です)
iftttからRaspberry piへの接続は、iftttのwebhooksを使って直接通信することにしました。
他の参考にさせていただいたサイトでは、良く外部サービスを利用しているのですが、もっとシンプルに構築したいと思い直接アクセスするようにしました。
もちろん、通信環境は固定IPではありません。動的IPアドレスの対策として、年間1,000円程度のオリジナルドメインを契約し
ダイナミックDNSのように、IPアドレスに変更があれば自動で更新する仕様で対応しました。
また、iftttのwebhooksを処理するために、Nginx上のPHPを使うことにしました。
Node.jsでも良かったのですが、ポートの開放またはNginxのプロキシ設定などが面倒・・・
Pythonも同様、他にPythonスクリプトをCGIで動作させるのもありかもしれませんが・・・
基本的に世間一般的な環境でシンプルを目指したので、プログラム言語はPHPを採用することにしました。
これで、シンプルな環境が構築できました。
続きます・・・