こんにちは!
SJC共同開発推進室の鈴木です。
以前の記事でHome Assistantの導入から基本的なセンサー連携までをご紹介しました。
今回は、自作のデバイスやIoT機器をMQTTを利用してHome Assistantと通信し、利用する仕組みをご紹介します。
目次
- 1.Home AssistantでのMQTTの活用メリット
- 2.今回の構成図
- 3. MQTT Broker(Mosquitto)の立て方
- 4.Home Assistant独自の「MQTTセンサー」とは?(MQTT Discoveryの活用)
- 5.オートメーションの活用(JetsonでSwitchBotを操作)
- 6.まとめ
1. Home AssistantでのMQTTの活用メリット
MQTT(Message Queuing Telemetry Transport)は、IoT分野で広く使われている軽量な通信プロトコルです。Home AssistantでMQTTを利用する最大のメリットは、ArduinoやRaspberry Piといったあらゆるマイコンで作成した自作IoT機器を、メーカーの垣根を超えて簡単に統合できる点にあります。
今回は例として、Jetson Orin Nano(以下、Jetson)を「パブリッシャー(送信側)」とし、Home Assistantを「サブスクライバー(受信側)」として利用する仕組みをご紹介いたします。
Home Assistant自体に重いAIライブラリ(TensorFlowやPyTorchなど)を直接インストールして推論させるのは、OSの安定性やリソース管理の面からあまり適していません。
そこで、推論はパワーのあるエッジ機(Jetson等)で行い、その結果(パラメータや判定フラグ)だけをMQTTでHome Assistantに送るという役割分担をしております。
実際に利用してみて、Home AssistantでエッジAIを利用する場合は、このように分けて対応するのが良いと感じております。
2. 今回の構成図
今回は、例としてJetsonを「パブリッシャー(送信側)」とし、Home Assistantを「サブスクライバー(受信側)」として構成します。
具体的には、Jetsonからの指示(MQTTメッセージ(例として、トピック:myhome/workroomにfan_onという値))をHome Assistantが受け取り、Home Assistantに登録されているSwitchBotのサーキュレーターを連動して動かす、という構成です。
※今回は、Home Assistant側の仕組みに焦点を当て、JetsonでのAI推論側の詳細は省略します。

3. MQTT Broker(Mosquitto)の立て方
MQTTを行うには、メッセージを中継する「Broker(ブローカー)」が必要です。
Home Assistantなら、Home Assistant内のアプリを使って数クリックで簡単に「Mosquitto broker」を構築できます。
サイドバーの「設定」=>「アプリ」を開き、右下の「アプリをインストール」を押下します
検索窓に「Mosquitto broker」と入力し、インストールします。

インストール後、「開始」ボタンを押下すればブローカーが立ち上がります。

4. Home Assistant独自の「MQTTセンサー」とは?(MQTT Discoveryの活用)
MQTTにはパブリッシャー(送信)、ブローカー(中継)、サブスクライバー(受信)といった概念がありますが、Home Assistantで登録する「MQTTセンサー」の位置づけの点も補足でご紹介いたします。
Home Assistantの「MQTTセンサー」とは、標準的なMQTTの仕組みをHome Assistantが理解できる「仮想デバイス(エンティティ)」に変換したものになります。
Home Assistant側で「このトピックに来たデータは、温度センサーの値として扱う」といった具合に定義してあげることで、ダッシュボードに表示したり、オートメーションの条件に使ったりできるようになります。
さらにHome AssistantにはMQTT Discoveryという機能があります。
通常はHome Assistant側の設定ファイル(yaml)などで手動で設定する必要がありますが、Jetson (パブリッシャー(送信))側から、Mosquittoに対して「TopicとPayload」を最初に1回送るだけで、Home Assistant側が「新しいデバイスが来た」と自動的に認識し、ダッシュボードに反映してくれます。
つまり、JetsonをHome Assistant上の「一つのセンサーデバイス」として簡単に登録できるということです。

5. オートメーションの活用(Jetson Orin NanoでSwitchBotを操作)
Home Assistantの醍醐味はオートメーションです。オートメーションは基本的に以下の3つの要素で構成されます。
- トリガー(きっかけ): 何が起きたら実行するか(例:時間が来たら、センサーが反応したら)
- 条件(任意): 実行するための前提条件(例:夜間だったら、家に人がいたら)
- アクション(実行): 何をするか(例:電気をつける、スマホに通知する)
今回は、Jetson(MQTTセンサー)とSwitchBotサーキュレーターをオートメーションで連携させます。
- トリガー: JetsonからMQTT経由で fan_on というPayload(状態)がHome AssistantのMQTTセンサーに届く。
- アクション: Home Assistantが、連携済みのSwitchBotサーキュレーターの電源を「オン」にする。
「設定」=> 「オートメーションとシーン」=> 「オートメーションの作成」から作成できます。

同様に、Jetsonから 「fan_off」 という状態が届いた場合をトリガーにして、サーキュレーターを「オフ」にするオートメーションを作成します。これにより、Jetson側のAI画像認識などで特定の条件を満たしたときに、自動で家電を操作するといった制御が可能になります。
6. まとめ
今回は、Home AssistantでのMQTTの活用メリットと、JetsonなどのマイコンからMQTTを通してSwitchBotデバイスを制御する事例をご紹介しました。
MQTTブローカー(Mosquitto)をHome Assistant内のアプリで簡単に構築でき、MQTT Discoveryを利用することで面倒な設定なしに自作デバイスをHome Assistant上の「センサー」として登録できます。そしてオートメーションを組み合わせることで、メーカーの異なるデバイス同士をシームレスに連携させることができますので、Switchbotなどのスマートホームデバイスをお持ちで、ご興味ある方は是非ご挑戦してみてください!
エコモットでは、ともに未来の常識を創る仲間を募集しています。
弊社に少しでも興味がある方はぜひ下記の採用ページをご覧ください!



