LoginSignup
13
20

More than 3 years have passed since last update.

Xiaomiの温湿度計のBLEデータをラズパイで取得。スマートホームプラットフォーム(Home Assistant, Homebridge, ESPHome)の紹介なども。

Last updated at Posted at 2020-07-02

こちらの機種が良すぎたので温湿度データをラズパイで取得する方法をまとめます。

機種名
LYWSD02

商品自体の解説とセットアップ

下記記事が参考になります。
Xiaomiの温湿度計「Temperature and Humidity Monitor Digital Clock」レビュー | CLEARTEX.net
https://www.cleartex.net/entry/2020/01/26/xiaomi-digital-clock
ロケールを中国にするのが肝です。

ライブラリ

https://github.com/h4/lywsd02
python製のこれがメジャーのようでした。

ロシア人の方がBLEデータを解析してライブラリにしてくれたようです。下記記事に苦戦の解析過程が書かれています。ブラウザの翻訳等で読めます。
https://habr.com/ru/post/452558/

コード

pip3 install lywsd02
にてライブラリをインストールします。

main.py
from lywsd02 import Lywsd02Client

mac = 'xx:xx:xx:xx:xx:xx'
client = Lywsd02Client(mac, notification_timeout=30.0)

with client.connect():
    data = client.data
    print(data.temperature)
    print(data.humidity)
    print(client.battery)

温湿度計のmacアドレスを指定して
python3 main.py
などで実行すると。

macアドレスはMi Homeアプリ上から確認できます。

25.57
64
69

温度、湿度、バッテリーの値が取得できます。

私の環境ですとたまに失敗してエラーがでるのが確認できました。エラーが出た場合はリトライなど実装したほうがよさそうです。

Traceback (most recent call last):
  File "main.py", line 6, in <module>
    with client.connect():
  File "/usr/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/home/ode/.local/lib/python3.7/site-packages/lywsd02/client.py", line 47, in connect
    self._peripheral.connect(self._mac)
  File "/home/ode/.local/lib/python3.7/site-packages/bluepy/btle.py", line 445, in connect
    self._connect(addr, addrType, iface)
  File "/home/ode/.local/lib/python3.7/site-packages/bluepy/btle.py", line 439, in _connect
    raise BTLEDisconnectError("Failed to connect to peripheral %s, addr type: %s" % (addr, addrType), rsp)
bluepy.btle.BTLEDisconnectError: Failed to connect to peripheral E7:2E:00:B1:F4:82, addr type: public

各種スマートホームプラットフォーム向け実装

調べてみるといろいろありますね。
ラズパイが活躍しそうで。(本当はお家サーバー用意したくなくてクラウドで管理でメンテいらずにしたいのだけどラズパイ使わざるをえないのか。。)

Home-Assistant

ブラウザで見れるスマートホームのダッシュボード作れるやつらしいです(これから試す予定)

h4/LYWSD02-home-assistant: Home-Assistant sensor for LYWSD02 Thermometer
https://github.com/h4/LYWSD02-home-assistant

Home Assistant
https://www.home-assistant.io/

公式のDEMO
https://demo.home-assistant.io/

HomeAssistantでスマートホームコントローラを作ってみる[1/6] | 育児×家事×IoT
https://dream-soft.mydns.jp/blog/developper/smarthome/2019/12/489/
image.png

Home Assistantを使って、様々な情報を表示する『スマートホーム情報パネル』を作ってみた(温度・湿度、電力、NW、カメラ映像) | 育児×家事×IoT
https://dream-soft.mydns.jp/blog/developper/smarthome/2020/05/1218/

Home Assistant (hass.io) と Google Home で自宅のレガシーデバイスを操作する話 - Qiita
https://qiita.com/keigoi/items/f96dd62bb2647e872a6a

Home Assistant (hass.io) を入れると、Google Home に任意の仮想的なデバイスを追加できるようになる。

便利そう。

Home Assistant Cast - Home Assistant
https://www.home-assistant.io/blog/2019/08/06/home-assistant-cast/
image.png
Nest HubやChromecastの画面にキャストもできるみたいです。すごい。

Homebridge (iOS系)

hannseman/homebridge-mi-hygrothermograph: Homebridge plugin for the Xiaomi Mi Bluetooth Temperature and Humidity Sensor
https://github.com/hannseman/homebridge-mi-hygrothermograph

homebridge/homebridge: HomeKit support for the impatient
https://github.com/homebridge/homebridge

※iOS持ってないので詳しくはないです

おそらく下記のようにHomeアプリに温度など表示できると思われます。
image.png

下記は別センサーでの例ですがHomebridge知らない人向けに参考になりそうです。
Raspberry Pi 4 4GBモデルでこれまで構築したラズパイ環境を統合化してみる (2) "homebridgeでHomeKit対応" | THE POOH FILES
https://min2club.com/talk/2020/03/02/raspberry-pi-4-4gb%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A7%E3%81%93%E3%82%8C%E3%81%BE%E3%81%A7%E6%A7%8B%E7%AF%89%E3%81%97%E3%81%9F%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E7%92%B0%E5%A2%83%E3%82%92%E7%B5%B1-2/

iOS系持ってる人は使ったほうが良さそうですが
持ってなくてもWeb UIでも見るツールあるみたいなので選択肢には入ってもよいのかもしれません。(未利用)

image.png

【Homebridge】Web管理ツール「Homebridge Config UI X」をラズパイで使う方法 - CHASUKE.com
https://chasuke.com/homebridge-config-ui-x/

oznu/homebridge-config-ui-x: Homebridge Web UI plugin to monitor, manage and control Homebridge from a browser.
https://github.com/oznu/homebridge-config-ui-x

ESPHome向け

ESPHome自体があまりわかってないですがHome Assistant用のセンサーとして連携して使えるみたいですが恐らくESP32単体でもコンポーネント使えば色々できるのかと思われます。MQTTやWebServerなど色々あるようです。

Xiaomi LYWSD02 BLE Sensor — ESPHome
https://esphome.io/components/sensor/xiaomi_lywsd02.html

ESPHome — ESPHome
https://esphome.io/index.html

ESP32/ESP8266をホームオートメーションに使うためのフレームワークESPHome – inajobのいろいろレビュー
https://inajob.github.io/iroiro-review/post/esp32-esp8266%E3%82%92%E3%83%9B%E3%83%BC%E3%83%A0%E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E4%BD%BF%E3%81%86%E3%81%9F%E3%82%81%E3%81%AE%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFesphome/

image.png

その他のxiaomiの温湿度計

LYWSDCGQ/01ZM

液晶、BLE、丸形、単4電池

image.png

Xiaomi Mijia 温湿度計 をIoTデバイスとして使う - Qiita
https://qiita.com/poruruba/items/d16b58dfb45e513111d6

Xiaomi Mijia LYWSD03MMC vs Mijia LYWSDCGQ/01ZM: Which Digital Bluetooth Thermometer Hygrometer is Better?
https://www.gearbest.com/community/SanfL4

ライブラリ

LynxyssCZ/node-xiaomi-gap-parser: Xiaomi GAP sensor data parser
https://github.com/LynxyssCZ/node-xiaomi-gap-parser
こちらのライブラリをLYWSD02で利用したところ温度と湿度のどちらかしか取得できなくまとめては取得できませんでした。機種によってプロトコルが微妙に違うと思われます。

LYWSD03MMC

液晶、BLE、四角形、CR2032、快適度の顔表示、安い(700円ほど)
image.png

ライブラリ

JsBergbau/MiTemperature2: Read the values of the Xiaomi Mi Bluetooth Temperature sensor 2
https://github.com/JsBergbau/MiTemperature2
こちらのライブラリをLYWSD02で利用したところ動きませんでした。機種によってプロトコルが違うようです。
READMEを読むとプライバシーに配慮したのかadvertisment dataでは送信しなくなり、BLEでの接続が必要になったようです。

MHO-C201, MHO-C202

電子ペーパー、BLEは搭載なし、CR2032

image.png

miというロゴがついて広告されていたりxiaomi製品と並んで販売されていたりxiaomi製かと勘違いするが実際は秒秒测(miaomiaoce)という企業でBLEも搭載なし。xiaomiから投資されている会社との噂。

Amazon.co.jp: 温湿度計 Homidy 温度計 デジタル湿度計 室内 高精度±0.3℃ E-Ink大画面 見やすい 顔文字でお知らせ 置き・掛け・貼り三用(マグネット付) 日本語説明書: ホーム&キッチン
https://www.amazon.co.jp/dp/B07GL1Z8P9

秒秒测(miaomiaoce)の温湿度計「MHO-C202」買った - ヒトナツログ
https://written-1natsu.hatenablog.com/entry/2018/10/27/131116

13
20
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
13
20