おはようございます。じぇいかわさきです。
前回までに、カンマ区切りで温湿度を出力する事ができるようになりました。
DBにデータを格納するためには、カンマ区切りで出力したデータを、CSV形式のファイルとして保管できるようにしなければいけません。
ますは、CSVで保管するためには日時をキーにしてファイルする必要がありますね。
その書式で出力ができるように考えていきましょう。

DHT11センサーの問題に対処する
今回使用しているDHT11という温湿度センサーですが、実はこのセンサーにはちょっとした問題があるようなんです。
実験している時に気がついたんですが、実行ボタンを頻繁に押してデータの取得をしている時に、たまに0,0という感じで、データの取得が出来ない場合があるんです。
どうやら、これはこのDHT11センサーの仕様の問題で、データの取得をする間隔が、あまり短いとデータ取得出来ないみたいなんです。
このデータ取得間隔は、仕様では6秒以上間隔を開けなければいけないと言うこと。
しかし、一般的に温湿度を測定する場合、1秒間隔で測定するようなことはないので、この仕様は大きな問題にはなりませんね。
それでも、万が一0,0というデータが採取されて記録されても困りますから、0,0を取得した場合にはもう一度データを取得するようにプログラムを変更する必要があります。
[ads]
前回作成したプログラムを元に改版していきます。
import RPi.GPIO as GPIO
import dht11tempGpio = 4
GPOI.setmode(GPIO.BCM)
dhtStart = dht11.DHT11(pin = tempGpio)while True: /* データの取得が0でなくなるまで繰り返す
stat = dhtStat.read()
data = [stat.temperature,stat.humidity]
if stat.temperature == stat.humidity == 0: /* 温湿度の値がともに0の場合には、次の行を実行する
continue /* whileの行に戻る
print(‘,’.join(map(stat,data)))
break /*ループを抜けて終了する

こうすることで、データ取得時の0を回避することができるようになるのです。
実行した結果がこれ。

データに日付を付ける
今までのデータ出力では、温湿度のデータだけなので、そのデータがいつ取得されたものなのかがわかりません。
一般的に、なんらかのデータを取得し保管する場合には、タイムスタンプを一緒に付けてデータを保管します。
タイムスタンプをつけることにより、そのデータは何時取得したものなのかが、可視化されるからです。
それでは、今までの温湿度のデータにタイムスタンプが付加されるように、修正をしていきます。
import RPi.GPIO as GPIO
import dht11
import datetime /* datetimeライブラリーをインポートするtempGpio = 4
GPOI.setmode(GPIO.BCM)
dhtStart = dht11.DHT11(pin = tempGpio)while True:
stat = dhtStat.read()
now = str (datetime.datetime.now())[0:16] /* 変数nowに現在の日時を入力する
data = [now,stat.temperature,stat.humidity] /* dataの配列の先頭に、現在時間の変数nowを加える
if stat.temperature == stat.humidity == 0:
continue
print(‘,’.join(map(stat,data)))
break
[ads]
このように修正することで、従来は温湿度をカンマ区切りで出力していたものに、日付を付加して、何時取得したのかがわかるようにしました。

こんな感じで、実行すると温湿度の前に、取得時の日時が追加されるようになりました。
まとめ
今回は、データをDBに記録していく際に、そのデータが何時のものかを分かるようにするため、データの先頭に取得日時を付加するプログラムに修正しました。
こうすることで、これから毎日データを取得していったとしても、それは何時頃のデータなのかわかるようになり、一定以上のデータが蓄積したときには、過去の同一季節と時間での比較が可能となるのです。
せっかく取得したデータも、基準となるキーがなければ、単なる数字でしかなくなってしまいます。
その数字が、日時というキーを付加することにより、価値が生まれてくると言うことですね。
普段、こういう事に関わっていない場合には、そんな事を気に留めることも無いのかもしれません。
日付の付いた値は、過去と比較して未来を予測していくことに、大事な要素となるんですね。
今回は、DBにデータを格納する前に、先々に有効活用していくための、日時と言うキーを付加するという話でした。
次回は、いよいよDBにデータを格納していくための、ファイルの書き出しについて考えていきたいと思います。
おじさんの挑戦は、まだまだ続きますよ。
[twt]
