続編: “XiaomiのBLEスマート温湿度計LYWSD03MMCにカスタムファームウェア”
ESPHomeを遅ればせながら実際に使い始めた。Xiaomi Mijia BLE Sensorsの一部として,プラントモニタXiaomi Mi/HHCC Flora Monitor/Flower Care Monitorがサポートされているだけでなく,最新版でBLE対応スマート温度・湿度計LYWSD03MMCも公式サポートされた。これで,ESPHomeをインストールしたESP32機を使ってモニターさせようとしていたBLE機器の全てにESPHomeが対応したと思っていたら甘かった。
ESP32搭載TTGo T-DisplayからMi Floraのセンサー値を拾ってMQTTブローカに投げることは不慣れで手間取った面はあったが,本質的には難しくなかった。LYWSD03MMCを接続させるのは大変。LYWSD03MMCは,Mi FloraやXiaomiのそれ以前の温湿度計のようにBLEでデータを「垂れ流して」いない(advertiseしていない)。ペアリングをして相手にだけデータが伝わるよう暗号化されている。セキュリティーの観点からは理にかなっているのかもしれないが,簡便にアクセスしたいと思っている自分には不都合。自宅の室温や湿度を盗み見られたところでどうってことない,と思ってしまう自分は考えが甘いのだろうか。
GitHub – JsBergbau/MiTemperature2: Read the values of the Xiaomi Mi Bluetooth Temperature sensor 2はペアリングをしてデータを得るというアプローチなのに対し,ESPHomeはbindkeyを得ることでペアリングすることなくデータを解読する,というアプローチを採用している。Bindkeyを得るにはスマホ上でPCAPでパケット・スニッフィングをしWiresharkでその結果を解析する,というかなりハードコアなことをしなくてはならない。そんな手間のかかることをしなくちゃいけないんなら違うモデルを選べばよかった…。
ESPHomeが用意してる指示にしたがって,以下のように進める。Androidであれば,パケットキャプチャにPCAP Remoteアプリを使う。 “PCAP Remote Tutorial – Andrey Egorov | Dev blog & Portfolio“がチュートリアル。これはSSHサーバを内蔵しており,PCから遠隔に接続できる。AndroidでキャプチャされたパケットデータをPC上で見るのに使うWiresharkは,コンパニオンツールsshdumpでPCAP Remoteと接続する。このsshdumpはWindows上ではデフォルトではインストールされない。しょうがなく,公式サイトでダウンロードして,インストールの過程でsshdumpも合わせてインストールされるようにした(図)。
その後の手順は以下:
- Mi Homeアプリから事前にLYWSD03MMCを削除。
- “PCAP Remote Tutorial – Andrey Egorov | Dev blog & Portfolio” を参照してAndroid端末上のPCAP RemoteがSSH Serverモードで動くようにし,PC上のWiresharkがそれに連動するようにする。この段階で,PCAP RemoteのSSHプライベートキーをWireshark側の設定に入れないと接続できなかった。
- PCAP RemoteとWiresharkを走らせてから,Mi HomeアプリでLYWSD03MMCの登録。
3. で何度も失敗し,結局一度も成功しない(図)。認証がうまく行ってないようだ。理由はわからない。PCAP RemoteがVPNサービスとして動作する,ということと何か関係あるのだろうか?PCAP Remoteの実行を止めるとすんなりMi HomeにLYWSD03MMCは登録できる。
ESPHomeが用意してる指示と自分がやったことで異なる箇所があり,それはXiaomiの米国サーバ上に作成したアカウントを使用していること。 “Currently a chinese (sic) server needs to be selected as the rest of the world doesn’t support most of these devices yet.” ということだが,本当に対応しているスマート機器の種類の数の問題なのなら,ここに問題になっているLYWSD03MMCを米国サーバがサポートしていることはわかっているのだから問題にならないように思うのだが…。
また, “PCAP Remote Tutorial – Andrey Egorov | Dev blog & Portfolio” には以下のくだりがあるがこれ本当なのだろうか?PCAP RemoteからWiresharkにデータが流れていることは確実なのだから,問題にならないと思うんだが…。少なくとも,Mi Homeアプリが何らかの認証に失敗する,ということには関係ない気が…。
#3: Your PC and a device on which PCAP Remote is installed should be connected to the same WiFi (other configurations are not tested).
とりあえず今はここまで。各所でLYWSD03MMCをサポートしようとしているようだから,ESPHomeでもいずれ簡便にアクセスできるようになると信じたい。
ESPHomeからLYWSD03MMCにアクセスする手法3つをまとめた。
以下は雑多な資料。
“LYWSD03MMC support (implemented since 0.6.0) · Issue #7 · custom-components/sensor.mitemp_bt · GitHub” “NOTES OF LAZY ENTHUSIAST: Modified Mi Home with translation of actions, conditions and statuses (Russian and English)” https://ru.kapiba.ru/mihome/files/old/MiHome_5.8.22_63082_vevs.apk
「XiaomiのBLEスマート温湿度計LYWSD03MMCをESPHomeからアクセスするのは大変」への5件のフィードバック