weather:bitとMetabaseで温度、湿度、気圧を可視化


何をしたのか?

以前、利用した 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

構成図

絵的には、こんな感じです。

  1. micro:bit & weather:bit から温度、湿度、気圧、環境光の値を60秒間に1回送信
  2. USB接続されたPC(Mac)に python のアプリを常駐させて温度、湿度、気圧、環境光の値を受信、そのまま MySQL に蓄積
  3. 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 のコードはこちらです。

qiita.py
"""
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 はいいっすね ♪
以上です!