Raspberry pi zero wでペットの為に温度監視システムを作ろうとしている話


はじめに

ペットのヘビ(コーンスネーク)のために、Raspberry Piで温度監視センサーを作れないかと思い、
はんだ付けもPythonも殆ど経験なしでしたが勉強がてらに作ってみました。
まずは、データが取れて確認が出来ればそれでよしレベルです。

Raspberry Piの設定

SSH … Enable
IP … 固定

温度センサーDHT11の接続

DHT11はモジュールになっているタイプを秋葉原のマルツで買ってきました。たしか600円くらいだったかな…
下記のサイトを参考にGPIOに接続しました。
http://www.c-sharpcorner.com/article/windows-10-iot-monitor-temperature-humidity-using-dht11/

温度センサーの情報を拾えるようにする

すでにPythonでDHT11の情報を拾うためのコードがあるので、それを利用しました。
https://github.com/szazo/DHT11_Python

git clone https://github.com/szazo/DHT11_Python.git

温度記録用スクリプトの作成

単純に1分毎にCSVファイルに日付時刻,温度,湿度を記録するだけのスクリプトをDHT11のサンプルコードを参考にしながら作りました。

​DHT11_Python/dht11_csv.py
import RPi.GPIO as GPIO
import dht11
import time
import datetime
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
# read data using pin 14
# read data using pin 4 mod by kmizuta
#instance = dht11.DHT11(pin=14)
instance = dht11.DHT11(pin=4)
while True:
    result = instance.read()
    if result.is_valid():
        file = open ('../temp_csv/temp.csv','a')
        #print("\'" + str(datetime.datetime.now())+ "\',\'%d\',\'" % result.temperature + "%d" % result.humidity + "\'")
        file.writelines("\"" + str(datetime.datetime.now())+ "\",\"%d\",\"" % result.temperature + "%d" % result.humidity + "\"\n")
        file.close()
    time.sleep(60)

スクリプトの実行バックグラウンドで実行し、disownすることで、ログアウトしても記録を続けます。

cd ​DHT11_Python
sudo python ./dht11_csv.py &
disown

イケてないところと今後の方針

  • DHT11センサーが結構データを取りこぼすので、スクリプト内でリトライをする仕組みを作りたいです。
  • データを現在はcronでFTPを使って一日一回VPSに上げているのですが、GoogleDriveに上げる仕組みにしたいです。
    • gdriveを使ってみたが、更新が上手くできなかったのでこの方針に変更しました。