前に書いた
温湿度気圧センサー(BME280)の値を使ってみる の続きでデータを動的に取得するということをやった記録を残しておく。
まず、参考1から、bme280_custom.py と bme280.py のソースプログラムを使わせていただく。
bme280.pyは、bme280_custom.pyをインポートしているため、名前はそのままにした方がよい。
上記2つのプログラムを
cronに登録する。
cron … Linax上で動的に定期でプログラムを動かす
デーモンプロセス
cronへの登録
postfixをインストールする。
postfix…フリーソフトウェア・オープンソースソフトウェアのメール転送エージェント(MTA)である。
※メール転送エージェント(MTA)…電子メールを相手方に送信するためのメールサーバ機能に
おける中心的な機能である。
sudo apt-get install -y postfix
仕様するプログラムに権限を与える
sudo chmod 600 bme280.py
sudo chmod 600 bme280_custom.py
cron設定を変更する
ユーザーにどのようなことをさせたいのか設定する
crontab -u ユーザー名 -e
スクリプトを実行できるユーザー名でないとできない。私は面倒だったので、sudo(
スーパーユーザ権限)のrootで編集を行王としましたが、うまく行きませんでした。
※参考1には下記のように記述がありましたが、あまり良くない書き方らしいので、上記のコマンドを推奨します。
sudo crontab -e
上記の手段でうまくいかなかったので強引に設定ファイルをいじることにしました。
以下のコマンドで変更を行いました。
sudo vi /etc/crontab
参考サイトの情報が少し古かったので自分なりに変更を加えて以下のようにファイルを書き換えました。
最後の#の上に
0-59/10 * * * * root /home/pi/bme280.py
を追加しました。
パラメータの内容としたは、左から、分、時、日、月、曜日、ユーザー、コマンドです。
参考によるとここで変更を反映させるために再起動をかけた方がよいそうなので、一応再起動させます。
表示用のPHPファイルを作る
手順の流れとして書きますが、プログラム自体は、参考1の bme280.php を流用させていただきました。
ラズパイで上phpファイルを実行するためにはapache2 と php5 のインストールが必要です。
インストールのコマンドは以下の通りです。
apt-get update
apt-get install apache2 php5
reboot
pi@のままだとlockファイルが開けないのでrootでログインしてから実行しました。
bme280.phpを /var/www/htmlの中へ置く。
ドロップアンドドロップだとファイル操作エラーになってしまうので、コマンドでファイル移動を行いたいと思います。コマンドは以下の通りです。sudoがないと「許可がありません。」とエラーが出るので、sudoで無理矢理移動しました。ちなみに、bme280.phpはDesktopに置いときました。
sudo mv bme280.php /var/www/html/ mv 移動したいファイル 移動先
webURLに http://localhost/bme280.php と入力しローカルサーバーで取得情報を確認できる。
はずですが、画面が真っ白になってしまった。 http://localhost/ と入力し、apache2が動いているか確認したところ、動いていた。他に考えられることは、php5が動いているか?とプログラムのエラーだと考えられます。取りあえず、phpのhellowarldを試してみた。
hello.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
Hello World と表示されたのでphp5は動いていた。
pythonのエラーチェックを行いたいと思う。参考6では、以下のコマンドでチェックを行っていました。
python -m py_compile pythonファイル (pycファイルを作成する)
エラーがないと何もおこらない。
bme280.py と bme280_custam.py に文法エラーはなかった。
pi/bme280-data に日付.csv があったので、bme280.py と bme280_custam.py は正常に動いていた。
ということは・・・
bme280.php がおかしいと思われる。
phpの文を見返し以下の項目を確認してみた
今日の日付の.csvファイルがあるかlinaxでdataコマンドを使いしっかりと確認。→ない場合は、python_bme280_custam.py で起動する。
文法エラーがないか、参考8で確認したが No syntax error だった。
今回はここまで
再確認したところ /pi/bme280-data に動的に値をとることに成功していた。
参考
- 第39回「ラズベリーパイで温度・湿度・気圧をまとめて取得!AE-BME280でIC2通信」
- Raspberry Piでcronを使用し定期的にスクリプトを実行する
- cron の設定ガイド
- 第13回「ラズベリーラジオ前編 – インターネットラジオ受信と遠隔操作」
- Linuxコマンド逆引き大全【 ファイルを移動する 】
- PHP を使用する初めてのページ
- Pythonスクリプト実行前に文法をチェックするお手軽な方法