Help us understand the problem. What is going on with this article?

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

https://www.metabase.com/

構成図

絵的には、こんな感じです。
構成図.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 はいいっすね ♪
以上です!

m_ryusei
pro-japan
ソフトウェアの受託開発・SES・メディア事業・ブロックチェーンの開発提案など。「あったらいいな」を実現します!
https://www.pro-japan.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした