何をしたのか?
以前、利用した micro:bit に weather:bit をドッキングさせて温度、湿度、気圧(ついでに環境光)の値を取得。
その値を MySQL に蓄積し Metabase で可視化してみました。
micro:bit では湿度、気圧などの値は取ることが出来なかったため、拡張基盤の weather:bit で取ることにしました。スイッチサイエンスにて約2,000円くらいです。さらにオプションセンサを購入すれば土壌水分、土壌温度、風速なども測ることもできるみたいです。
前回は Ambient にて可視化をしましたが、今回は Rate Limit など気にすることなく、お手軽に可視化できるツール、 Metabase を使うことにしてみました。
weather:bit
https://www.switch-science.com/catalog/3383/
https://www.sparkfun.com/products/14214
Metabase
構成図
- micro:bit & weather:bit から温度、湿度、気圧、環境光の値を60秒間に1回送信
- USB接続されたPC(Mac)に python のアプリを常駐させて温度、湿度、気圧、環境光の値を受信、そのまま MySQL に蓄積
- MySQLに蓄積された値を Metabase で可視化
1. micro:bit & weather:bit から温度、湿度、気圧、環境光の値を60秒間に1回送信
micro:bit(weather:bit)のコードはこんな感じです。
https://learn.sparkfun.com/tutorials/microclimate-kit-experiment-guide/about-the-weatherbit
コードの組み方などは weather:bit のガイドが参考になります。
2. USB接続されたPC(Mac)に python のアプリを常駐させて温度、湿度、気圧、環境光の値を受信、そのまま MySQL に蓄積
python のコードはこちらです。
"""
weather:bit で温度、湿度、気圧を取得してDB(MySQL)に値を蓄積する
(可視化はmetabaseで確認)
"""
import serial
import pymysql.cursors
conn = pymysql.connect(host='localhost',
db='sandbox_db',
user='root',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
HYPHEN = '-'
line = ''
microbitdata = ''
# MacでUSBシリアルポートの名前を調べるコマンド
# ls -l /dev/tty.*
ser = serial.Serial('/dev/tty.usbmodem1412', 115200)
microbitdata = ''
while True:
line = ''
line = str(ser.readline(), 'utf-8')
if HYPHEN == line.strip():
data = microbitdata.split(':')
with conn.cursor() as cursor:
cursor.execute(
"INSERT INTO environment (humidity, temperature, pressure, ambient_light) "
"VALUES (" + data[1] + ", " + data[3] + ", " + data[5] + ", " + data[7] + ")"
)
conn.commit()
microbitdata = ''
else:
microbitdata = microbitdata + line.strip() + ':'
ser.close()
3. MySQLに蓄積された値を Metabase で可視化
お手軽に環境が作れて可視化ができる Metabase はいいっすね ♪
以上です!