おはようございます。じぇいかわさきです。
さて、今回は前回作った温湿度のサンプルプログラムから、自分で温湿度をDBに格納するための準備段階を始めてみた。
簡単に言えば、温湿度をDBに入れるために、サンプルとは違い余分な表示を抜かして、CSVで格納するための準備だ。

まずは作業用DIRの作成
HOME DIRの配下に新規にrasptempというDIRを作成します。

作成した後は、そこのDHT11用のモジュールをコピーします。これは、前回ダウンロードしたDHT11_pythonのDIRの中に入っています。
これで、作業を行うためのDIRの準備が出来ました。

[ads]
前回のサンプルプログラムを元にして、プログラムを記述していきます。
基準となるプログラムを書いてみる
プログラムと言っても、前回習得した通り、モジュールの読み込み、ラズパイのGPIOの指定、そしてセンサーからのデータの読み出しと、非常にシンプルなプログラムです。
復習の意味も兼ねて、プログラムの内容を見ていきましょう。
import RPi.GPIO as GPIO /* GPIO用のモジュールをインポート
import dht11 /* DHT11用のモジュールをインポートtempGpio = 4 /* GPIOのピン番号を変数「tempGpio」に入れる
GPOI.setmode(GPIO.BCM) /* GPIOのモードを[GPIO.BCM」にセットする
dhtStart = dht11.DHT11(pin = tempGpio) /* DHT11のDATAピンに繋がったGPIOピン番号を指定するstat = shtStat.read() /* 変数「stat」にDHT11で読み取ったセンサー情報を入力する
print(stat.temperature) /* 変数「stat」に格納されている「temperature」の情報を画面に表示する

意外と、思い込みによるタイピングミスが多いので、よく見ながらタイプをしていきます。
たった7行のプログラムですが、1文字間違えただけでも動きませんので。
そう言えば余談ですが、最初の会社で先輩に言われた事を思い出しました。
電気回路とプログラムは絶対に嘘はつかない。設計仕様通りに動かないのは、設計した自分が間違っているから。
電気回路もプログラムも、作られた通りにしか動かないのだから、間違っているのは設計した人が原因。
確かに、今回こんな簡単なプログラムで、その言葉が蘇ってきました。
プログラムに間違いが無いことを確認したら、緑地に白の三角マークボタンを押し実行させます。

>>> %Run rasptemp.pyと表示されて次に、現在の温度27.6が表示されました。いちようプログラムとしては動いて入るようですね。
最初は気温だけだったので、今度は同時に湿度も表示するようにしましょう。
[ads]
DHT11センサー自体は、温湿度を両方測定してデータとして吐き出しているので、プログラムの記述さえ行えば、湿度も表示可能だと思います。
import RPi.GPIO as GPIO
import dht11tempGpio = 4
GPOI.setmode(GPIO.BCM)
dhtStart = dht11.DHT11(pin = tempGpio)stat = shtStat.read()
print(stat.temperature)
print(stat.humidity) /* 変数「stat」に格納されている「humidity」の情報を画面に表示する
たった1行の追加ですね。

実行結果としては、気温の下に湿度が表示されるようになりました。
これで、このDHT11が持つセンサー機能をフルに使ってデータを取る事ができるようになりました。
しかし、このままではDBに格納するのにこまりますので、DBに格納しやすいように、カンマ区切りでデータを表示するように変更します。
データ表示をカンマ区切りに変更
プログラムの舌から3行を、カンマ区切りで表示するように変更します。
import RPi.GPIO as GPIO
import dht11tempGpio = 4
GPOI.setmode(GPIO.BCM)
dhtStart = dht11.DHT11(pin = tempGpio)stat = dhtStat.read()
data = [stat.temperature,stat.humidity]
print(‘,’.join(map(stat,data)))
このようにすることで、気温と湿度を並べて表示し、各々の間にカンマで区切るために、joinという関数を使います。

>> %Run rasptemp.pyと表示されて下に、27.3,55.0と温度、湿度がカンマ区切りで表示されました。
後は、緑に白三角のボタンを押す度に、温湿度が表示されます。

これでデータを吐き出す方式は整いました。
次は、このプログラムの動作を10分ごとに計測する方法を考えていたいと思います。
まとめ
今回、最初にサンプルで動かしたDHT11の温湿度センサーを使って、温湿度計測を行い、それをDBに格納しやすいカンマ区切り形式で出力するまでを行いました。
これでやっとデータ測定のスタートラインにたった感じですね。
こんな簡単なプログラムでも、自分で手で打ち込み、動いたときには感動があります。
この感動を味わうと、次も次もという感じで、もっとプログラミングをしたくなるのでしょうね。
一気にやっても、なかなか覚えきれないので、一つひとつを亀の歩みほどのゆっくりとしたステップでススメていきたいと思っております。
[twt]
