こんにちは! SJC共同開発推進室の鈴木です。
これまでHome Assistantを通じて様々な活用事例をご紹介してきましたが、今回は一歩踏み込み、「家はいかにして住人の意図を先回りできるか」というテーマを掘り下げます。スマートホームは「スマホで家電を操作できる便利さ」に注目が集まりがちですが、「人が操作をしていない時間」にこそスマートホームの良さが現れます。
外出先から手動でエアコンをONにすることは、利便性はありますが、人の「操作」に依存しています。目指すべきは、操作の代替ではなく、操作そのものを無くすことです。
今回はその第一歩として、Home Assistantの「Zone」機能を活用し、家を単なる座標「点」ではなく、住人の行動を包み込む「面」として捉える手法をご紹介します。
過去記事は以下になります。Home Assistantの概要、環境構築、活用事例をご紹介しておりますので、よろしければご確認ください。
– スマートホームを次のレベルへ:Home Assistant のご紹介(1)
– スマートホームを次のレベルへ:Home Assistant のご紹介(2)
– スマートホームを次のレベルへ:Home Assistant のご紹介(3)
– 過去の自分に留守番を頼む ~Home Assistant 「Presence Simulation」の設定と活用法~
目次
- 1. 脱・リモコン操作
- 2. 家が住人を認識する仕組み
— 2-1. 通信経路:Tailscale
— 2-2. センサー:Device Tracker
— 2-3. 主体:Person(人) - 3. 「点」ではなく「面」で捉える
- 4. 「帰宅予知」オートメーションの作成
- 5. 前半までのまとめ
1. 脱・リモコン操作
「帰る前にスマホでエアコンをつける」。 これだけでも十分便利ですが、忙しい夕方や疲れている時には、そのワンタップすら忘れてしまうことがあります。そして帰宅してドアを開けた瞬間、冷え切った空気に迎えられ、「忘れてた」と後悔することがあるかもしれません。目指したいのは、「人が手動で押すのではなく、家が空気を読んで設定してくれる」 設計です。
「もうすぐ帰ってくるな」と家が察知する。
「今日は平日だし、時間も遅いから仕事終わりだろう」と推測する。
「じゃあ、部屋を暖めておこう」と判断する。
これはHome Assistantが持つ標準的な機能の組み合わせで実現することができます。まずは、その基礎となる「位置情報の扱い」からご紹介します。
2. 家が住人を認識する仕組み
家の外にいる自分を、Home Assistantはどうやって認識するのでしょうか。 ここでは、以下の3つの要素が連携しています。

※事前にご自身のスマホにHome Assistantコンパニオンアプリをインストールしておく必要がありますのでご確認ください。
2-1. 通信経路:Tailscale
tailscale(VPN)を使うことで、外出先からでもスマホと、自宅のHome Assistant(サーバー)を安全につなぎ、スマホにインストールしたHome Assistantアプリがサーバーと通信し、位置情報を送り続けることができます。過去記事でもTailscaleに関しての概要をご紹介しております。ご興味ある方はぜひご確認ください。
2-2. センサー:Device Tracker
Home Assistantにおける「GPS発信機」のような役割です。 Home Assistantコンパニオンアプリを入れたスマホは、device_tracker というIDを持ち、緯度・経度の情報をHome Assistantに送信しております。
以下を順に押下して確認できます。
「 設定 → デバイスとサービス → デバイス → (検索ボックスに自分のスマホ端末名を入力)」

2-3. 主体:Person(人)
Home Assistantにはpersonドメインという概念があります。「デバイス(iPhone)」と「人(私)」はイコールではありません。私はiPhoneを家に置いて出かけるかもしれませんし、iPadを持って出かけるかもしれません。
そこで、例として、私「鈴木」の場合 person エンティティに対して、私のiPhone「device_tracker」を紐付けます。これにより、Home Assistantは「iPhoneが動いた」ではなく、私「鈴木」という人間中心に物事を認識できるようになります。
以下の手順で設定ができます。
「設定 → メンバー → (ユーザー名を選択) → (ユーザーに属するデバイスを選択)→ 保存」

3. 「点」ではなく「面」で捉える
位置情報が取れるようになったら、次は「場所」の定義です。 Home Assistantにはデフォルトで「Home(自宅)」という「Zone」がありますが、これだけでは不十分です。自宅という「Zone」に入った瞬間にエアコンをつけても遅いからです。
エアコンが効き始めるまでには時間がかかるので、「家に着いた時」ではなく、「家の近くまで来た時」にスイッチを入れたいのです。そこで、新しい「Zone」を作成します。
帰宅範囲圏内の自宅を中心とした、大きな円(半径300m程度)の「Zone」を定義します。「Zone」のサイズはドラッグすることで広げることができます。

以下の手順で設定ができます。
「設定 → エリア、ラベル、ゾーン → ゾーン → ゾーンの作成」
また、外出中にはHome Assistantコンパニオンアプリから自身の位置情報や「Zone」の範囲に入っているのかを確認することができます。

「私が「Zone」に入った(=もうすぐ着く)」というトリガーを利用できるようになります。これが「家を「点」ではなく「面」で捉える」考え方になります。
4. 「帰宅予知」オートメーションの作成
それでは、実際にオートメーション(自動化フロー)を組んでみました。 やりたいことは以下の通りです。
平日の夕方、帰宅する私が自宅周辺エリアの「Zone」に入ったら、自動でエアコンをONにする。
以下の手順で設定ができます。
「設定 → オートメーションとシーン → オートメーションを作成」

オートメーションはUI上で作成することもできますが、以下のように「YAMLで編集」から、YAML形式のエディタでの編集が可能になります。

今回の例でご紹介しているオートメーションのYAML記述は以下になります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<br />alias: 平日帰宅時のエアコン自動ON description: "平日の18時以降、自宅300m圏内(Zone)に入ったらエアコンをつける" triggers: - entity_id: person.atsufumi_suzuki # personエンティティ - platform: zone.home event: enter trigger: zone conditions: # 条件1:18:00以降であること - condition: time after: "18:00:00" # 条件2:平日(月~金)であること - condition: time weekday: - mon - tue - wed - thu - fri action: # アクション:暖房を23度でON - service: climate.set_temperature target: device_id: xxxxxx # エアコンのデバイスID data: temperature: 23 - service: climate.turn_on target: device_id: xxxxxx # エアコンのデバイスID |
これで、「平日18時以降に、私が半径300m圏内「Zone」に入ったら、エアコンを入れる」というフローが完成しました。これで、玄関を開ける頃には部屋が暖まっているはずです。
5. 前半のまとめ
いかがだったでしょうか? ここまでで、家は人が返ってくる前にエアコンをつけるということはできるようになりました。
しかし、ここまでの場所「Zone」という判定だけでは、「そこへ向かっているのか(帰宅)」、それとも「ただ通り過ぎているだけなのか(通過)」の区別がつきません。
外出先から、家の近くのお店に寄って、しばらく家に帰らないかもしれません。もしくは、家の前を車などで通りすぎるだけの可能性もあります。単純な「Zone」だけでは、「帰宅する意志」までは読めないのです。 通りすがりなのか、本当に帰ってくるのか。この難問を解決するには、数学的な「ベクトル」の概念が必要になります。
次回の【後編】では、Home Assistantの「Proximity」を活用し、できる限り「本当に帰宅しようとしている時だけ」反応する、応用した「空気の読み方」について深掘りしていきたいと思います。
エコモットでは、ともに未来の常識を創る仲間を募集しています。
弊社に少しでも興味がある方はぜひ下記の採用ページをご覧ください!


