2022年1月24日月曜日

Raspberry Piで取得した温度・湿度をローカルに保存する。PythonからCSVファイルへの書き込み。

ビニールハウスにRaspberry Pi製の温湿度ロガーを設置しています。



測定値はインターネット経由でGoogleスプレッドシートに保存し、そこから動的な栽培管理用データ閲覧ページを作成したり、LINEへの通知に使っています。

インターネットへの接続にはモバイルルーターを使っているため、たまに発生する切断対策として自動再起動設定をしました。



そして、切断中のデータのバックアップ用に電池で動くウォッチロガーを使っていたのですが……インターネット切断時もRaspberry Pi自体は正常に作動しているので、測定値をローカルに保存するようにしてみました。

方法としては単純で、測定値をPythonでCSVファイルに書き込んでいくだけです。必要なライブラリは標準で用意されています。

(Raspberry Pi自体が止まった時のために、相変わらずウォッチロガーは必要になりますが。)


今回はこちらを参考にさせていただきました。



▼ DHT22の測定値をCSVファイルへ書き込むPythonスクリプト


測定値をCSVファイルに追記していきます。CSVファイルはあらかじめ作っておきます(今回は「sample.csv」)。

#!/usr/bin/env python3

import Adafruit_DHT
import time
import datetime
import csv

sensor = Adafruit_DHT.DHT22

pin = 4

while True:
    x = 0
    while x < 1:
        try:
            humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
            x = 1

        except:
            x = 0

    dt_now = datetime.datetime.now()

    with open('/home/pi/Python/DHT22/sample.csv', 'a') as f:
        writer = csv.writer(f)
        writer.writerow([dt_now, '{0:0.1f}'.format(temperature), '{0:0.1f}'.format(humidity)])

    time.sleep(900)

ピン番号やフォルダ等は適宜変更してください。

最後に、デーモン化して完了です。


***

いやー、なぜ今までなぜやらなかったのか……。まぁ、とりあえず、よかったです。簡単ですし、いろいろ使えそうですね。

DHT22は安価にもかかわらず精度がいいですね。必要に応じてCO2や照度、土壌水分なんかのセンサーも使ってみたいですね。




Twitter(@nkkmd)日々更新中です。