Day11

計測システムを構築_自動計測_

Topへ

Day10へ

はじめに

これまで個別に各センサーの構築をして実行するようにしてきましたが、実際には一度に計測して監視を行うことが望ましいと思います。
なので、今回はこれまでのコードを統合し、そのデータを保存するまでの作業をしていきたいと思います。
保存方式はcsv形式とします。

Step1

コードの統合と保存

image

「Visual Studio Code」を開き、「新しいテキストファイル」を選択します。(メモ帳等でも問題ありません。)

image

どこでもいいのでこのコードを書いたファイルを「s_v_record.py」として保存します。

image

まずはライブラリ(モジュール?)をインポートします。 ほとんどがこれまで使用したライブラリですが、「datetime」と「csv」が今回新たに使う ライブラリになります。「csv」は名前のとおりcsv保存するためのもので、「datetime」は計測時間を得るためのものになります。

image

よく理解できていない「if __name__ == '__main__':」を使用し、main関数を実行することにします。

image

main関数を作成し、その中で変数を宣言します。
宣言する変数は、t0:日時、wt:水温、at:気温、hd:湿度、lm:照度、td:水質としました。

image

main関数の続きになります。ここでは水温、気温・湿度および照度を取得するコードを追加しています。
コードの内容は以前各センサーで作成したものと同様になります。(ただし、水温のセンサーを取り替えた都合で28から始まる 数字が変更になっています。)

image

main関数の続きになります。水質の追加とLCDディスプレイへ表示するコードの一部になります。

image

main関数内のLCDディスプレイへ表示するコードの続きになります。

image

main関数内のLCDディスプレイへ表示するコードの続きになります。
LCDディスプレイもメイン関数を使用していましたが、重複するので「main1」という関数名に変更しています。
このメイン関数を実行するため、「main1()」を追加しています。
その中の「文字列を表示」の項目ですが、水温と水質に変更しています。ただし、単位の「℃」が表現できないので「dC」としています。

image

main関数の続きになります。ここでは、取得した計測値をCSVファイルとして保存するコードを追加しています。
たったの3行で完成です。これで、raspberrypiの中にデータが蓄積できるようになります。

Step2

raspberrypi側の設定

image

「WinSCP」を開き、保存した「s_v_record.py」をraspberrypiの「python_apps」フォルダ直下にコピーします。

image

raspberry piを起動します。
「Tera Term」を起動し、まずpython_appsフォルダに移動します。
cd python_apps」と入力しenterキーを押します。

image

python3 s_v_record.py」と入力し、実行します。

image

LCDディスプレイの表示状況です。無事計測値が表示されています。

image

「WinSCP」に戻り、raspberrypiの「python_apps」フォルダ直下を見てみると、「temp.csv」が作成されています。
これが、計測値を保存したデータになります。

image

「temp.csv」を開き、中身を確認してみます。
計測値が記録されていることが確認出来ます。今回は1回分ですが計測ごとに追加されていくことになります。

Step3

自動計測の設定

image

計測コードは作成できましたが、これを毎回手動で実行していくわけにはいきません。仕事中でも計測を実行保存できるようにする必要があります。
そこで、pythonプログラムを自動的に起動させる「cron」というLinuxの機能を使用します。
「Tera Term」に戻り、「crontab -e」と入力しenterキーを押します。
そうすると、どのエディタを使用するか聞いてくるので「1」を入力しnanoエディタを選択します。

image

nanoエディタが開いたら、一番下の行に
30 * * * * python3 /home/aqpi/python_apps/s_v_record.py
と入力します。
入力が完了したら、「ctrlボタンとOボタン」でコードを保存し、「ctrlボタンとXボタン」で終了し再起動させます。
これで、1時30分、2時30分、3時30分というように30分になると計測データを実行保存するようになります。(つまり1時間ごとに保存されます。)
以上で終了になります。raspberry piさえ電源を入れておけば計測されていきます。

image

最後に一つ修正がありました。「WinSCP」に戻り、raspberrypiの「python_apps」フォルダ直下の「temp.csv」に計測データが追加されていませんでした。
どうしてか探っていると「home/aqpi/」直下に「temp.csv」が新たに作成されていました。
そういえば相対パスでコードを書いていたのでそれが原因なのでは・・・・

image

原因解消のためコードを修正します。 画像のとおり「s_v_record.py」ファイルのパス部分を絶対パスに書き換えました。