Raspberry PiとBlynkを使って温湿度情報を遠隔監視するための手順メモ.Blynkはこういう数値情報を送って遠隔監視するには超便利.
背景
これまで,畑監視システムを構築するために色々やってきたが,つい最近からBlynkというものを使ってみている.前々回の記事では,それぞれ違うネットワークに接続されているRaspberry Piとスマホを接続して,スマホからRaspberry Piに数値情報を送ってみた.
www.eletech.work
そして前回の記事では,畑監視システムに欠かせない温湿度情報をRaspberry Piで計測することにトライした.
www.eletech.work
そして今回は,温湿度情報をリアルタイムでBlynkを使ってスマホで監視することにする.そのための手順メモ.
Blynkアプリ側の準備
Blynkアプリ側は,既に作っていたtestプロフェクトを前々回の記事と同じで使用することにする.前回作っておいたスライダも残しておいて,これとは別に"Gauge"というライブラリを使ってみる.温度表示用と湿度表示用にそれぞれ置いてみる.


Python3でのプログラム
冒頭でリンクを貼った過去の記事を参考にしつつ,以下のようなプログラムを作成.
import BlynkLib import smbus import time i2c = smbus.SMBus(1) addr=0x45 def sign16(x): return ( -(x & 0b1000000000000000) | (x & 0b0111111111111111) ) # Initialize Blynk blynk = BlynkLib.Blynk('b8********************************5a') @blynk.VIRTUAL_WRITE(1) def my_write_handler(value): print('Current V1 value: {}'.format(value)) @blynk.VIRTUAL_READ(2) def my_read_handler(): blynk.virtual_write(2, (Temparature)) @blynk.VIRTUAL_READ(3) def my_read_handler(): blynk.virtual_write(3, (RelativeHumi)) while True: #Execute Blynk blynk.run() #send address i2c.write_byte_data(addr,0xe0,0x0) #read data data = i2c.read_i2c_block_data(addr,0x0,6) #calculate temparature data raw_data_T = ((data[0]) << 8) | (data[1]) calc_T = sign16(int(hex(raw_data_T),16)) Temparature = round(-45 + 175 * calc_T / (2**16 - 1), 1) #calculate humidity data raw_data_RH = ((data[3]) << 8) | (data[4]) RelativeHumi = round(100 * raw_data_RH / (2**16 - 1), 1) #print data print (str(Temparature) +"degC") print (str(RelativeHumi) +"%RH") #wait for data conversion time.sleep(1)
動作確認(温湿度の遠隔監視)
まず,Raspberry Piのターミナルでプログラムを実行.
pi@raspberrypi:~ $ sudo python3 blynk_test.py blynk_test
___ __ __
/ _ )/ /_ _____ / /__
/ _ / / // / _ \/ '_/
/____/_/\_, /_//_/_/\_\
/___/ for Python v0.2.0 (Linux)
19.7degC
48.1%RH
19.7degC
48.0%RH
Blynkが立ち上がって,温湿度が表示されていることを確認.スマホをRaspberry Piと違うネットワークに接続するために,WiFiを切って4G接続にしておいて,Raspberry Piとの接続を開始してみると…

pi@raspberrypi:~ $ sudo python3 blynk_test.py blynk_test
___ __ __
/ _ )/ /_ _____ / /__
/ _ / / // / _ \/ '_/
/____/_/\_, /_//_/_/\_\
/___/ for Python v0.2.0 (Linux)
19.7degC
48.1%RH
19.7degC
48.0%RH
19.7degC
47.9%RH
19.7degC
47.8%RH
19.7degC
47.8%RH
19.7degC
47.8%RH
19.7degC
47.9%RH
19.7degC
47.9%RH
19.7degC
47.9%RH
22.2degC
50.5%RH
21.7degC
58.3%RH
21.6degC
65.5%RH
21.4degC
71.2%RH
21.3degC
75.6%RH
21.1degC
79.1%RH
21.0degC
81.0%RH
20.9degC
79.6%RH
20.8degC
76.3%RH
Current V1 value: ['135']
20.8degC
72.6%RH
と,送られてくることをが確認できた.これで,Raspberry Piとスマホがそれぞれ異なるネットワークに接続されている状態で,双方向にデータをやり取りできるところまで確認.
