◆便利なコンピューターよ、自分でやっておくれ
これまでにラズパイを使用して温度湿度を計測したり、LEDを点滅させたりなど、単純な作業をコンピュータに実行させた。
今度はこれらを人の手によって命令・実行させるのではなく、定期的に自動で実施させたい。
要は「ほったらかし」だ。
一度指令したら後はコンピュータが勝手によろしくやってくれる…というもの。
いまや当たり前のことだけど、これらを実行するにはどのようにやるのだろう?
ということで、以下からトライしてみる。
------------------------------------------------------------------
天気情報をtenki.jpから取得し、自分が見たい情報だけをグラフ化。
グラフはwebブラウザから常時見ることができるように。
------------------------------------------------------------------
まずは自宅内にwifi接続でいつでも見ることができる。という要求。
常時電源ONが要求されるため、自分のノートパソコンを電源付けっぱなしにするのはなんだかな~だ。
パソコンはほかの作業で使ったりするし、なにか不具合が起きたら実験そのもののリカバリが効かなくなる。。。こりゃあぶない。
ということで、使用機器はラズベリーパイゼロに。
省電力でほったらかしには向いているし、エイジングでどこまで稼働するのかも興味がある。またゼロは安価だから壊れたら買い替えてもいいし。1000円弱だからね。
◆ラズベリーパイゼロのセッティング
今までGPIOなどの実験をやっていたが、サーバー化するので余計なものを外して、長期稼働ができる状態に。
これで汚らしいGPIOピンも使わなくて済むな…
そして、この機会に最初からOS、ライブラリなどを入れなおしてみようかと。
◆概要はこんな感じ
<データ収集作業>
1.データベースのテーブル有無確認、無ければ作成
※データを貯める必要ないので、毎回消して作り直す。
2.Webスクレイピングして情報をデータベースに格納
3.データベースの情報をグラフ化、フォルダにjpegで保存
4.保存フォルダ有無確認、無ければ作成
こいつ先頭にやるべきだったな…まいっか、動いてるし。
5.古いjpgファイルを移動する
上記1~5のタスクを、30分毎に実行する
<データ表示>
phpでjpgファイル保存しているフォルダ見に行き、ブラウザに表示
◆できた…が、ちょっと大変だった
うーん、見た目はスッキリ…
実は穴無しのフタをつけたかったが、GPIOピンが邪魔してハマらんかった…。
まぁ廃熱口としてでいいか?
長期稼働させるにはホコリが入りにくくしたかったんだけど。。。ま、いっか。
しかし…
何度もやっていることなのに、セッティングって意外とてこずる。
・SDカード初期化できず、SDフォーマッターでフォーマット
・pipがうまく動かず、pip3に入れ替え
・pandasが動かず、libatlas-base-devをインストール
・matplotlibが動かず、libopenjp2-7-devをインストール
・matplotでfigure開きすぎてメモリ不足…消せって。
◆ラズベリーパイゼロのサーバー化の手順は以下
◆データ収集用スクリプトとか
とりあえず面倒くさいので/home/pi/直下に置いてみた。
ここに置いておけば迷子にはならんでしょ。
◆WEBブラウザ用のフォルダとか
WEBブラウザに関しては/var/www/html/直下から配置
とりあえずindex.phpがfigフォルダ内のjpgファイル全てを読みこんで、html上にリスト表示される仕組み。
figフォルダにはWebスクレイピング後のグラフがjpgファイルとして保存される。
figフォルダで不要になったファイルは、trashフォルダに移動する仕組み。
◆WEBブラウザ表示
現状は30分毎にデータ収集するのでウザいほどリスト表示されてしまうが、デバッグが終わったら整理しようと思う。
見たいグラフって4種類だけで、更新された最新のものを見れたらそれでいい。
古い情報なんて見ないし。(過去データから研究するなら話は別だけど)
以下が表とグラフ
◆scheduleモジュールは動いてる
今のところscheduleモジュールで各タスクが自動実行されている。
さっきはmatplotのfigureをクリア忘れしてメモリ圧迫してたけど(汗)
とにかくは、これで数日エイジングしみよう。
ちゃんと動くかな?
◆crontab
cmdから実行はできたけど、ラズパイを独立させて動かせてなかった…。
で、以下。
sudo crontab -e
@reboot python3 /home/pi/m01_schedule.pyと追記
これでラズパイ起動後に自動的にスクリプトが実行される。
いつまでもいつまでも続く…壊れるまで…。
◆自宅外から閲覧可能にするか?
これについてはまだいいかな。
ルーター設定のポートフォワード?で取り急ぎ閲覧できるようになるけど、全世界に公開するにはショボすぎるし、セキュリティ上貧弱過ぎて自宅内に何かしら入り込まれたら泣けるし…。