はじめに
現在はhomberidgeのhomebridge-peopleプラグインによるデバイスの在宅確認ベースのオートメーション設定を行っている。
このプラグインは設定した端末へのICMP応答を用いて端末の在宅判定を行っている。る程度は在宅確認ができるが、端末を忘れた場合や、子供の学校等で端末を持っていかない場合に正しく判定されなかった。
長年、正確な在宅判定を行いたかったがIEEE 802.11bfによるWi-Fi Sensingはサポートされている機器が少なく実装するのが現実的ではなかった。
Google AI Plusを契約したのを機にGeminiでスマートホームについて調べていたところ、TOMMYというWi-Fiベースのモーションセンサーソリューションを発見した。
日本語で書かれた記事・対応しているデバイスについての情報が少なかったのでQiitaに記載することにした。
TOMMYとは
「TOMMY」は、ESP32などのWi-Fiチップが通信時に取得するCSI(Channel State Information:チャネル状態情報)を活用し、追加の専用センサーなしで室内の「人の動き」や「在室」を検知するオープンソースのWi-Fiセンシング・フレームワークです。従来の赤外線センサー(PIR)とは異なり、電波の微細な揺らぎを解析するため、壁越しや死角、あるいは静止している人物の存在すら検知できる可能性を秘めています。特にM5Stack NanoC6のような最新チップをサポートしており、軽量なエッジデバイスとHomebridgeやMQTTを組み合わせることで、プライバシーに配慮した次世代のスマートホーム・オートメーションを安価に実現できるのが最大の特徴です。
なぜTOMMYか
今回、自在室検知システムを構築するにあたり、既存の製品や技術を検討した結果、最終的にTOMMYを選択しました。その主な理由は以下の3点です。
-
IEEE 802.11bf対応デバイスの未普及
次世代のWi-Fiセンシング規格として「IEEE 802.11bf」が策定されていますが、現状ではこの規格をフルサポートし、かつ個人が手軽に購入・実装できる市販デバイスやルーターはほぼ存在しません。規格の普及を待つのではなく、今ある技術で「Wi-Fiセンシング」を形にするための現実的な解が、CSIを直接扱えるTOMMYでした。 -
プライバシーへの配慮と設置の心理的ハードル
精度の高い動体検知といえばカメラ(赤外線カメラ含む)が一般的ですが、寝室やプライベートな空間に「常にレンズがある」状態は、家族の理解を含めプライバシーの観点から避けたいと考えていました。Wi-Fiセンシングであれば、電波の揺らぎという数値データのみで判定を行うため、視覚的な情報を一切取得せずに「人の気配」だけを捉えることが可能です。 -
ESP32対応による圧倒的な低コストと汎用性
TOMMYは、安価で入手性の良いESP32シリーズで動作します。専用の高価なセンサーを買い揃える必要がなく、1,500円程度のマイコン1つで高度な検知システムを構築できるコストパフォーマンスの高さは、多くの部屋に展開したい私にとって大きな魅力でした。
準備(ハードウェア編)
ハードウェアですがEPS32で動いていればほぼ対応しているようです。今回はM5Stack NanoC6を採用しました。1個1500円弱で購入しました。モーション検知をさせるためには1部屋最低2個のセンサーが必要になります。私はマルツ秋葉原本店で4個購入しました。
M5Stack NanoC6
準備(ソフトウェア編)
エディションによる機能の違い
以下の表の通りです。ゾーン数1というのが痛いですが、まずはPoC的なお試しなので無償版にしました。
複数ゾーンを検知させたい場合にはコンテナを複数起動させればよいのではないかと予想。
#制約をよく読んでおらず1ゾーン3台までというのを知らなかったのでm5stackを4個も買ってしまった。
| 機能・サービス | Community (無償版) | Pro (有償版) |
|---|---|---|
| 価格 | 無料 | €49 |
| ゾーン設定数 | 1 | 無制限 |
| 最大デバイス数 | 3台まで | 無制限 |
| Matter / HomeKit 連携 | 対応 | 対応 |
| Home Assistant ネイティブ統合 | 非対応 | 対応 |
Dockerによる管理サーバ
TOMMYのサーバーエンジン(Virtual Bridge)は、Home Assistant Add-onまたはスタンドアロンのDockerコンテナとして動作します。今回は柔軟性と既存環境への影響を考慮し、Docker環境を採用しました。
-
ホストネットワークの必須性: Dockerで動かす際は --network host(または network_mode: host)が必須です。これは、各デバイスがmDNSを使用してサーバーを自動発見するために、コンテナがホストと同じネットワークレイヤーに直接アクセスする必要があるためです。Docker環境のUbuntuにmDNSが入っているのですが、名前解決による接続はできずIP指定で設定しました。
-
データの永続化: ゾーン設定やファームウェア情報を保持するため、ボリュームマウント(-v ~/.tommy:/data)が推奨されます。私はdocker-compose.yamlと同じディレクトリに設定ファイルを配置捺せたかったので公式の記載から変更しました。
docker-compose.yamlの例(公式ほぼそのまま)
services:
tommy:
image: tommysense/virtual-bridge:latest
container_name: tommy
network_mode: host
restart: unless-stopped
environment:
DASHBOARD_PORT: 8089 # Web Dashboard
FILE_SERVER_HTTP_PORT: 8090 # Configuration file and OTA
FILE_SERVER_HTTPS_PORT: 8091 # Configuration file and OTA
MQTT_PORT: 1886 # Built-in MQTT broker
UDP_RELAY_PORT: 8547 # Device communication
volumes:
- .tommy:/data
デバイスへの書き込み:TOMMY Flasher
デバイスのプロビジョニングには、公式が提供するWebベースのツール「TOMMY Flasher」を使用しました。
M5Stack NanoC6への対応: 最新のNanoC6(ESP32-C6チップ)もサポートされており、ブラウザ経由でシリアルポートを選択するだけで、複雑なコンパイル環境を構築することなく専用ファームウェアを焼くことが可能です。
-
Wi-Fi設定の簡略化: 書き込み完了後、デバイスは自動的に設定モードに入り、ダッシュボードから自宅のWi-Fiクレデンシャルを流し込むことができます。
-
エコシステム連携:有償プラグインを回避し「Matter」で統合
TOMMYにはいくつかの連携方法がありますが、今回はコストと汎用性を重視した構成にしました。 -
Home Assistant連携の制約: Home Assistant専用のネイティブ統合(Custom Component)機能は「Pro Edition(有償)」の限定機能となっています。
-
MatterによるHomeKit連携: 一方で、TOMMYは標準でMatterブリッジ機能を備えています。Community EditionでもこのMatter機能を利用することで、HomeKit(Apple Home)へ「在室センサー」として直接露出させることが可能です。これにより、追加費用をかけずにiPhoneやMacの「ホーム」アプリから検知状態を確認し、オートメーションのトリガーとして利用できるようになります。
準備(設定編)
1. TOMMYの管理画面にアクセスする
2. TOMMY Flasher でファームウェアの書き込み
3. wifi関連の設定
4. パラメータチューニング
2026.04.27追記
Try all features with a 1 minute detection pause every 2 minutes
とのことでほぼ使い物にならなくなってしまった。。
€29(=5,500円くらい)なので買っても良いですが、後続記事のMatterデバイスの数を増やすとhomepodの動作が不安定になるので一旦見送り。


