6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-10-14

何をしたのか?

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

構成図

絵的には、こんな感じです。
構成図.png

  1. micro:bit & weather:bit から温度、湿度、気圧、環境光の値を60秒間に1回送信
  2. USB接続されたPC(Mac)に python のアプリを常駐させて温度、湿度、気圧、環境光の値を受信、そのまま MySQL に蓄積
  3. MySQLに蓄積された値を Metabase で可視化

写真だと、こんな感じです。
Image from iOS.jpg

1. micro:bit & weather:bit から温度、湿度、気圧、環境光の値を60秒間に1回送信

micro:bit(weather:bit)のコードはこんな感じです。
スクリーンショット 2019-09-22 8.13.38.png

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 で可視化

温度と湿度を可視化してみました。
スクリーンショット 2019-10-14 21.34.04.png

お手軽に環境が作れて可視化ができる Metabase はいいっすね ♪
以上です!

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?