センサーの値を見える化する(2)
温湿度センサ:DHT11の値の見える化
どもです。
前回に引き続き、今回もセンサ値の見える化です。
前回のエントリの最後に、「見える化する値が1つだけでは面白くない」という結論に至りました。
そこで、今回のエントリでは、温度に加えて「湿度」も見える化します。
1.作業環境
今回の作業環境です。
H/W | RaspberryPi3 |
OS | Raspbian GNU/Linux 10 (buster) |
ライブラリ | libpigpio/libcgpio(0.4.0) |
python3 | ver.3.7.3 |
温度センサ | DHT11 |
湿度センサ | DHT11 |
前回のエントリで紹介した作業環境からの変更点は、赤字で示しています。
自作ライブラリを使用していますが、バージョンを更新しています。
詳細はGitHubで公開していますので、あわせて参照・使用していただければ幸いです。
温度と湿度を測定するセンサーとして、DHT11を使用しています。
DHT11の使い方は、温度(湿度)センサを使ってみた(2)-RaspberryPi/pigpioでDHT11にコードを記載していますので、こちらを参照していただければ、と思います。
2.「見える化」する
温度と湿度の「見える化」は、前回同様「Ambient」というサービスを使用します。
このサービスに対してデータを送信、グラフにセンサー値を表示します。
その際に使用したpythonのコードは、下記の通りです。
import ambient
import requests
def GetTemperature():
filename = 'dht11.data'
infile = open(filename, 'rb')
temperature_int_part = infile.read(2)
temperature_dec_part = infile.read(2)
humidity_int_part = infile.read(2)
humidity_dec_part = infile.read(2)
infile.close()
temp_int_value = int.from_bytes(temperature_int_part, byteorder='little')
temp_dec_value = int.from_bytes(temperature_dec_part, byteorder='little')
sensor_data = temp_int_value + (temp_dec_value / 10)
return sensor_data
def GetHumidity():
filename = 'dht11.data'
infile = open(filename, 'rb')
temperature_int_part = infile.read(2)
temperature_dec_part = infile.read(2)
humidity_int_part = infile.read(2)
humidity_dec_part = infile.read(2)
infile.close()
int_value = int.from_bytes(humidity_int_part, byteorder='little')
dec_value = int.from_bytes(humidity_dec_part, byteorder='little')
sensor_data = int_value + (dec_value / 10)
return sensor_data
if __name__ == '__main__':
temperature = GetTemperature()
humidity = GetHumidity()
print(temperature, '[C], ', humidity, '[%]')
try:
am = ambient.Ambient(xxxx, 'yyyyy')
r = am.send({'d1': temperature, 'd2': humidity})
print('sent to ambient : ret = %d' % r.status_code)
except requests.exceptions.RequestException as e:
print('request failed: ', e)
行っている処理は、前回のエントリで紹介した内容と同じです。
C/C++で実装したツールが測定、ファイルに書き込んだ値を読み出してデータを送信しています。
上記のコードでは、GetTemperature()で温度を、GetHumidity()で湿度をぞれぞれ読み出しています。
それぞれのデータは、整数部と小数部から構成されており、2バイトずつのデータです。
順番としては、温度→湿度の順番で書き込まれています。
コード内の「xxxx」と「yyyy」は、それぞれ「チャンネルID」と「リードキー」です。
3.見える化の結果
とある日の私の部屋の気温と湿度の変化を見てみます。
一日中、部屋のエアコンをつけっぱなしにしています。
設定は「除湿」!
室温については、比較的安定しています。
湿度についてはあまり安定していないです。
それでも、ある程度湿度が高くなると、それを下げるように動作しているのだ、ということが分かります。
なお、エアコンを動かしていない場合の部屋の温度/湿度の変化は下図。
昼間、エアコンを動かしていない間は、ホントに気温も湿度も変化しないですね…。
4.まとめ
今回は、温度と湿度を測定し、同じグラフに表示してみました。
エアコンを動かしている状態では、キチンと動作して効果を発揮していることが分かります。
また、温度と湿度の波形の変化の仕方を見てみると、なんとなくですが相関があるように見えなくもないです…。
この辺は、微分したりすると分かるのかもしれません。
しかし、それはこのエントリの本題ではないので、割愛します。
やっぱり、データが複数あって何かしらの相関が見える(見えそう…)のは、面白いですね。
ではっ!
ディスカッション
コメント一覧
まだ、コメントがありません