国立国会図書館の温湿度管理のページ には次のような説明が書かれています。
==========
国立国会図書館の書庫では、温度と湿度を制御できる空調機を設置しており、書庫内の温湿度をこまめにチェックし、「書庫内で人が作業できる温度」「65%以下の湿度」を目指し、1年間を通じて、また1日の中でも、温湿度を急激に変動させないことを目指しています。また、閲覧室との温湿度差ができるかぎり小さくなるようにも心がけています。
==========
また、温度が高いほど飽和水蒸気量が大きくなるため湿度を制御するためには温度を最適に調節する必要があることも記載されています。
湿度が65%を越えたらアラートを出すしかけを作りたいのですが、その前に私の環境での1時間ごとの湿度と温度を、ついでに気圧の記録を採り続けてみようと考えました。
そのためにやったことを書き残しておきます。
####用意したもの
Raspberry Pi Zero W ピンヘッダを別途購入してはんだ付けしました。
Raspberry Pi Zero用赤外線+環境センサ「RPZ-IR-Sensor」Rev2.0(端子実装済+外付けセンサ)
####OS
Debian GNU/Linux
Linux raspberrypi 4.19.97+ #1294 Thu Jan 30 13:10:54 GMT 2020 armv6l
[Rasperry Pi の設定] - [インターフェース] で I2C を有効にしておきます。
####組み立て
①Raspberry Pi Zero W
②電源供給
③マウス、キーボードへ
④ディスプレイへ
⑤Raspberry Pi Zero用赤外線+環境センサ
⑥温度・湿度・気圧センサ
⑦端子実装済+外付けセンサ の温度・湿度・気圧センサ
⑧赤外線通信端子(今回は使用しません)
⑨光(照度)センサ(今回は使用しません)
注:⑥はRaspberry Pi Zero の発熱も感知してしまうため、⑦の計測値を用います。
####用意されたサンプルプログラム
https://www.indoorcorgielec.com/products/rpz-ir-sensor/
のサンプルプログラム rzp-sensor.zip を解凍してをそのまま使いました。
readme.txt の最後にログ出力の方法が記載されています。
####サンプルプログラムのテスト
$ python3 rpz_sensor.py
BME280 0x76
Temp : 19.9C
Pressure : 1006.0hPa
Humidity : 38.6%
BME280 0x77
Temp : 23.0C
Pressure : 1005.6hPa
Humidity : 35.0%
TSL2572
Lux : 176.3lux
BME280 0x76 は組み立て⑦の計測値です。
BME280 0x77 は組み立て⑥の計測値です。⑦より3℃ほど高いのは、RaspberryPy Zero の発熱による影響とみられます。⑦よりも温度が高いため湿度の値が低めになってしまっています。
TSL2572 は組み立て⑨の計測値です。
####シェルスクリプトを作ってでログ出力のテスト
do.sh
#!/bin/sh
date +"%Y/%m/%d %T"
cd rpz-sensor/python3
python3 ./rpz_sensor.py -l ./log/logfile.csv
シェルスクリプトを実行可能モードにします。
$ chmod +x do.sh
実行してみます。
$ rpz-sensor/do.sh
2020/04/14 18:37:07
BME280 0x76
Temp : 21.9C
Pressure : 1008.8hPa
Humidity : 45.7%
BME280 0x77
Temp : 22.7C
Pressure : 1008.4hPa
Humidity : 44.8%
TSL2572
Lux : 170.7lux
ログが出力されています。
$ cat logfile.csv
Time,Temp ch1,Temp ch2,Pressure ch1,Pressure ch2,Humidity ch1,Humidity ch2,Lux
2020/04/14 18:37,21.9,22.7,1008.8,1008.4,45.7,44.8,170.7
####定期実行の設定
$ crontab -e
エディターが起動するので、毎時ゼロ分に計測してログを出力するように設定します。
# m h dom mon dow command
00 * * * * rpz-sensor/do.sh
設定が有効となるように、cronを再起動します。
$ sudo /etc/init.d/cron restart
[ ok ] Restarting cron (via systemctl): cron.service.
数時間後に確認したところ、シナリオ通りにログが出力されていました。
cat logfile.csv
Time,Temp ch1,Temp ch2,Pressure ch1,Pressure ch2,Humidity ch1,Humidity ch2,Lux
2020/04/14 18:37,21.9,22.7,1008.8,1008.4,45.7,44.8,170.7
2020/04/14 19:00,21.6,22.8,1009.6,1009.2,47.5,45.7,15.6
2020/04/14 20:00,18.7,22.4,1010.8,1010.3,60.6,50.2,87.9
2020/04/14 21:00,18.7,22.3,1011.3,1010.9,57.5,48.3,88.9
pi@raspberrypi:/home $ ls
pi
pi@raspberrypi:/home $ cd pi
pi@raspberrypi:~ $ ls
Desktop Downloads Music Public Videos
Documents MagPi Pictures Templates rpz-sensor
pi@raspberrypi:~ $ cd rpz-sensor
pi@raspberrypi:~/rpz-sensor $ ls
do.sh python3 readme.txt
pi@raspberrypi:~/rpz-sensor $ cd python3
pi@raspberrypi:~/rpz-sensor/python3 $ ls
__pycache__ bme280i2c.py log rpz_sensor.py tsl2561.py tsl2572.py
pi@raspberrypi:~/rpz-sensor/python3 $ cd log
pi@raspberrypi:~/rpz-sensor/python3/log $ ls
logfile.csv
####参考図書
ラズパイZero工作ブック
####このあとやりたいこと
・ログデータをもとにしたグラフ表示の自動化
・一定の湿度以上になったときにLINE Bot へアラート