1
4

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.

Xiaomi Mijia Bluetoothを使用した温湿度ロギング環境構築

Posted at

Xiaomi Mijia Bluetoothを使用した温湿度ロギング環境構築

AliExpressで入手した格安温湿度計を使った温湿度ロギング環境構築方法。
xiomi.jpg

環境

Debian 9.8
mysql Ver 15.1 Distrib 10.1.37-MariaDB
MySQL Workbench 8.0
Power BI Desktop

Raspberry Pi Zero W
Xiaomi Mijia Bluetooth 2個、1個あたり1300円くらいかと。
dynabook EX/56LWH、Windows10 Home 64bit

方針

Raspberry Pi Zero WとXiaomi Mijia Bluetooth 2個をBluetoothでペアリングし、Raspberry Pi Zero WのMySQLにデータを蓄積して、dynabookにインストールしたPower BIでグラフ化します。

設定

ラズパイと温湿度計を接続するまでは下記の記事を参考にしました。
Xiaomi 気温湿度計

室外だと外壁があるため、見通し1mも届かないようです。
窓のすぐ近くの物置内に室外用の温湿度計を設置して、室内窓際にRaspberry Pi Zero Wを設置してなんとかペアリング出来ました。室内に設置した温湿度計はRaspberry Pi Zero Wから2mくらい離してもOKみたいです。

(1)/home/pi/mitemp/demo_custom.pyを編集する。
温湿度計を2個設置したので、MACアドレスで区別してデータを蓄積するようにコードを追加して、Raspberry Pi Zero Wに作成したテーブルにデータを書き込みます。
MySQL Workbench 8.0で事前にデータベースとテーブルを作成しておきます。

demo_custom.py
def poll(args):
    """Poll data from the sensor."""
    backend = _get_backend(args)
    poller = MiTempBtPoller(args.mac, backend)
    print("Getting data from Mi Temperature and Humidity Sensor")
    print("FW: {}".format(poller.firmware_version()))
    print("Name: {}".format(poller.name()))
    print("Battery: {}".format(poller.parameter_value(MI_BATTERY)))
    print("Temperature: {}".format(poller.parameter_value(MI_TEMPERATURE)))
    print("Humidity: {}".format(poller.parameter_value(MI_HUMIDITY)))
    print("MAC: {}".format(args.mac))

    battery = format(poller.parameter_value(MI_BATTERY))
    temp = format(poller.parameter_value(MI_TEMPERATURE))
    humi = format(poller.parameter_value(MI_HUMIDITY))
    mac = format(args.mac)
    now = datetime.datetime.now()

    connection = MySQLdb.connect(host='192.168.**.***',user='****',passwd='****',db='pizero_db',charset='utf8')

    cursor = connection.cursor()

    sql = 'INSERT INTO env_table VALUES (%s, %s, %s, %s, %s)'
    data = (now,mac,battery,temp,humi)
    cursor.execute(sql, data)

    connection.commit()

    connection.close()

(2)crontabを編集する。
温湿度計が電池駆動なので1時間に1回の測定にしています。

0 * * * * python3 /home/pi/mitemp/demo_custom.py --backend bluepy poll mac_outside
0 * * * * python3 /home/pi/mitemp/demo_custom.py --backend bluepy poll mac_inside

(3)Power BIでグラフ化する。
冬が近づいているので、日ごとの最小値をプロットしてみています。
PBI.jpg

今後

分電盤のブレーカーにCTを設置して、AD変換したデータからラズパイで消費電力を求めるシステムを作っています。温湿度計のデータと連携させて、室外環境から消費電力を予測するシステムを作ろうかと思います。

以上

1
4
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
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?