IoTに挑戦 PR

【IoTに挑戦】温湿度をDBに格納する準備をしてみた

ラズパイ3
記事内に商品プロモーションを含む場合があります

おはようございます。じぇいかわさきです。

スポンサーリンク

 

さて、今回は前回作った温湿度のサンプルプログラムから、自分で温湿度をDBに格納するための準備段階を始めてみた。

 

簡単に言えば、温湿度をDBに入れるために、サンプルとは違い余分な表示を抜かして、CSVで格納するための準備だ。

 

ラズパイ3

 

 

まずは作業用DIRの作成

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

MkDIR

 

作成した後は、そこの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

>>>  %Run rasptemp.pyと表示されて次に、現在の温度27.6が表示されました。いちようプログラムとしては動いて入るようですね。

 

最初は気温だけだったので、今度は同時に湿度も表示するようにしましょう。

[ads]

 

DHT11センサー自体は、温湿度を両方測定してデータとして吐き出しているので、プログラムの記述さえ行えば、湿度も表示可能だと思います。

 

import RPi.GPIO as GPIO  
import dht11 

tempGpio = 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 dht11 

tempGpio = 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]

 

Loading

ABOUT ME
じぇいかわさき
進撃の社畜/弱小プロブロガー 本ブログは、還暦で定年の世代の筆者が、まだまだやれるという事を証明するために新たな事に挑戦した事を情報発信しているブログです。同世代の人達に対して、まだまだいろいろと頑張れる、第二の人生を楽しく生きていく為に現状維持は退化、失敗の反対は行動しないことを座右の銘とし、思い立ったことにチャレンジした記録です。また、せっかく稼いだ収益を騙し取られないように、毎日来る迷惑メールなどのネットリテラシーについても情報発信をしています。 このブログは ネットリテラシー ブログ 働くこと について書いており、第二の人生で頑張る同世代の心に刺さる記事を目指してます。人生100年、まだまだがんばれます。 >> Twitterをフォローする