部屋の明るさを計測してブラウザから確認してみる(その2)

前回の続きです。
今回は計測した明るさをWebサーバにあるMySQLに保存する処理や、
Cronを使って保存処理を定期的に実行する部分を紹介します。

外部のMySQLにデータを保存する

ソースコードです。中略部は前回記事を参照。
前回は無限ループを使って延々と明るさを表示するプログラムでしたが、
目標のアプリケーションでは頻繁にデータを取得する必要がないので、
プログラム開始→明るさを計測→MySQLに接続・明るさ保存→プログラム終了
というシンプルな構成になっています。

また、大半のレンタルサーバでセキュリティ面からそうなっていると思いますが、
外部サーバにあるMySQLに接続する場合、一旦SSHで外部サーバに接続してから
MySQLに接続する必要がありますので、SSHTunnelForwarderを使ってSSH接続しています。
なお、SSH接続は公開鍵認証方式で行っています。

Cronで定期的にプログラムを実行する

上のPythonプログラムをCronで定期的に実行できるようにします。
まずはCronの実行結果をログファイルに出力するために、下記設定ファイルを修正します。
設定ファイルの修正が終わったら、rsyslogサービスを再起動します。

続いてCronに登録するシェルスクリプトですが、
以下のようにすべてフルパスで書きます。

上のシェルスクリプトを仮にmeasure_light_level_cron.shとして保存します。
実行権限も付けます。

続いて、Cronの設定を行います。
crontab -eで設定ファイルが開くので、末尾に実行頻度と実行するスクリプトを追記します。
ここもフルパスで書きます。
2>>以降は標準エラー出力をファイルに追記するコマンドなので無くても動きます。

実行結果

MySQLに保存されたレコードを出力したものを見ると、
10分おきにCronが実行できていることがわかります(途中までテストのため1分毎に実行しています)。
今の季節、17時前には日の入りになるためか明るさが100を下回っています。
id=22のところで部屋のライトを点けたので明るさが戻っています。

次回はブラウザ側の実装を予定しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です