はじめに
以前からHome Assistantを利用した自宅の自動化に興味があり、ESP32を利用したBLE位置測位システムを構築しています。
最終的な目標は、
- 部屋ごとの在室判定
- 照明の自動ON/OFF
- 家電の自動制御
などです。
現在はシステムの大部分が完成しており、実運用開始目前の状態まで来ています。
なぜBLE位置測位なのか
Home Assistantにはスマートフォンの位置情報を利用した在室判定機能があります。
しかし、
- スマートフォンを常に持ち歩くとは限らない
- 充電中は置いたままになる
- 部屋単位の判定は難しい
といった問題があります。
そこでESP32を利用したBLE位置測位を採用することにしました。
各部屋に設置したESP32でBluetooth信号を受信し、その受信強度からどの部屋にいるかを推定します。
構成
現在の構成はこんな感じです。
Garmin vivoactive 5
↓ BLE
ESP32 (BLE Proxy)
↓ Wi-Fi
Home Assistant
↓
照明・家電制御
ESP32はESPHomeを利用してHome Assistantに接続しています。
AirTagを試してみた
最初は手元にあったAirTagを利用できないか試してみました。
ESP32からは一時的に検出できたものの、
- ボタン操作直後は見える
- しばらくすると見えなくなる
- 継続的な監視ができない
という状態でした。
AirTagは本来Appleの「探す」ネットワーク向けに設計された製品なので、一般的なBLEビーコンのような使い方には向いていないようです。
少なくとも今回の用途では採用を見送りました。
Garminの時計が使える?
そこで普段使用している Garmin vivoactive 5 を試してみました。
正直なところ、最初は期待していませんでした。
Garminのスマートウォッチはスマートフォンとの連携を前提としており、
Bluetooth機器として見えたとしても位置測位には使えないだろう
と思っていたからです。
BLEアドレスが変わる
実際に確認してみると、vivoactive 5はBLEアドレスが定期的に変更されていました。
そのため当初は、
ああ、これは追跡できないな……
と思っていました。
名前は変わらなかった
ところがしばらく観察していると面白いことに気付きました。
BLEアドレス
→ 定期的に変わる
デバイス名
→ 変わらない
のです。
つまりアドレスで追跡しようとすると失敗しますが、デバイス名で判定すれば継続的に認識できます。
これに気付いた時は、
しめしめ……
となりました(笑)
現在の進捗
実はソフトウェア部分はほぼ完成しています。
- Home Assistant導入済み
- ESP32設定済み
- Garmin検出確認済み
- 位置判定の目処もついた
という状態です。
ただし実運用にはもう一歩足りません。
ESP32を常設したい場所に電源が無いため、コンセント増設工事が必要になっています。
現在はその工事待ちです。(免許は持っていますので自分で工事します
今後の計画
無事に運用開始できたら、
- 人がいる部屋だけ照明を点灯
- 一定時間不在なら自動消灯
- エアコンとの連携
- 在室状況の可視化
などを試してみたいと思っています。
また、現在運用中の太陽光発電設備やESP32を利用した各種監視システムとの連携も考えています。
まとめ
ESP32とHome Assistantを利用したBLE位置測位システムを構築中です。
AirTagは継続的な監視には向いていませんでしたが、Garmin vivoactive 5は意外にも位置判定へ利用できる可能性が見えてきました。
システム自体はほぼ完成していますが、現在はESP32設置用のコンセント増設待ちとなっています。
完成したら記事にしようと思っていましたが、完成する前に別の工作を始めそうなので、とりあえず現状を記録として残しておきます。


コメント