
こんにちは、小林直也です。
すでにスマートホームを構築しているものの、まだ満足できていない方。技術的に新しいことに取り組んでみたい方。 より高みを目指したスマートホーム構築に取り組んでみませんか?
本記事では、ハイレベルなスマートホームを構築できるオープンソースソフトウェア「Home Assistant」についてご紹介いたします。
そもそも「スマートホーム」とは、スマートホームデバイス等を用いて 自宅のさまざまな操作を遠隔から行ったり、自動化したりすることで、生活を便利・快適にする仕組みを指します。
スマートホームデバイスには、学習リモコン、LED電球や電動カーテン・ブラインド、スピーカー等 様々なデバイスがあります。
これらの多くは、インターネットに接続するIoTデバイスです。そのため、例えば外出先から帰宅前にあらかじめ遠隔でエアコンを起動する、決まった時間に照明をオンにするなどの自動化が可能です。
私がスマートホームで抱えていた課題
私は以前から、Amazon Alexa等のスマートスピーカーの音声操作または各メーカー専用アプリから、エアコンをつけたり、スマート電球でお家の明かりをオンにする、などといった、スマートホームデバイスを用いた「おうちIoT化」に取り組んでいました。
しかし、使い込むにつれ…
- アプリがデバイスメーカーごとに分散されて管理が面倒
- Alexaスマートスピーカーの音声操作が不安定で結局手動になる
- だから自動化したいけど各社間のデバイス連携が弱く、また複雑なロジックが作成できない
上記のように「完全にスマートになりきれていないな…」と感じる場面がいくつかあり、これを改善したいと考えたのがきっかけでした。

Home Assistantとの出会い
そこで、YouTubeなどで解決策はないか調べてみたところHome Assistantというシステムを知りました。 このシステムは、自宅のスマートホームデバイスを1つにまとめられる優れものです。

まだ日本では超ニッチですが、海外のDIYer・スマートホーム好きの間では定番のシステムです。
これを知った私は、ものは試しとHome Assistantを導入し、今ではどっぷりスマートホーム沼にはまっています。
Home Assistantの何が良いのか
異なるメーカーのデバイス・プロトコルを統合できる
Home Assistantの最大の強みは、メーカーをまたいだ様々なデバイスやサービスを 統合(インテグレーション) できることです。

たとえばデバイスメーカーで言えば、日本でも有名なSwitchBotを始め、Amazon Alexa、Google Home、IKEA、Xiaomi、Aqaraなど。プロトコルで言えば、近年登場したスマートホームの共通規格であるMatter(Thread/Wi-Fi)、Bluetooth、Zigbee、MQTT等、幅広く連携できます。
また、Googleカレンダー等の外部サービス連携もできます。Home Assistant標準では対応していないデバイス等も、有志が作成した「カスタムインテグレーション」を使えば、日本で普及しているスマートホームデバイス規格であるECHONET Lite等の統合もできますよ。
もし自分に合ったカスタムインテグレーションが無ければ、Pythonでコーディングができれば自分で開発でき、さらに電子工作ができる方なら、ESP32等のマイコンで作った自作デバイスを統合させる、といったことも可能です。
複雑なオートメーションを構築できる
先述のようにメーカーやプロトコルの垣根を超えて様々なデバイスをひとつのスマートホームに組み込んだ上で、複雑な自動化(オートメーション) も実現できます。
たとえば、以下のような構成だったとしても(凡例:【メーカー・OS(プロトコル等)】)
- 照明【SwitchBot(Bluetooth)/IKEA(Zigbee)】
- スマートフォン【iOS/Android(WebSocket)】
- ベッド感圧センサー【Withings(WebAPI)】
- パソコン【Windows(WebSocket)】
- 扇風機(スマートプラグ)【SwitchBot(Bluetooth)】
- 空調(学習リモコン)【NatureRemo(WebAPI)】
- テレビ 【LG(WebSocket)】
すべてメーカーも方式もバラバラですが、Home Assistant上でまとめて登録して…
デバイスを組み合わせて「就寝時に家中の電源を落としたい!でも誰か一人でも起きていたら、リビングだけは残したい」という自動化を、次のようなロジックで組むことができます。
- 家族がベッドで就寝しており、かつ家族全員のスマホが充電中ならば、リビング・寝室の照明/テレビ/空調/扇風機/PC をオフにして「全員就寝フラグ」を立てる
- 上記以外ならば、寝室のみ照明と空調をオフにする(リビングはオンのまま)

Home Assistantの内部では、「そのデバイスがどこの部屋にあるのか」等のデバイスの属性情報や、「全員就寝フラグ」のように状態(変数のようなもの)を保持できます。
そのため、特定の部屋のデバイスだけオフにしたり、フラグを使って別のオートメーションで「廊下の人感センサーが反応したとき、全員就寝ならば照明を暗めに点灯。それ以外は明るめに」といった条件分岐も作れます。
オートメーションは、以下のような専用UIで組めるため、基本的にはコーディング不要です。 必要であれば、yaml形式での記述も可能ですので、ChatGPT等の生成AIでバイブコーディングしながら希望のオートメーションを組んでもらうこともできますよ。

参考までに、私は以下のようなオートメーションを作成しています。
- スマートフォンの時計アプリのアラームが鳴ったら、カーテンオープン
- 朝一番に洗面所に入室するとスマートディスプレイでYouTubeで朝のニュースを再生
- 窓の開閉を検知して、空気清浄機をオン/オフする
- 家族全員の外出を検知して30分経過したら、ロボット掃除機起動
- 外出時に窓が開いていたら、スマートフォンに警告通知
- 誰も家にいないとき かつ 夜の場合、帰宅したら照明・エアコンをオン
- 人感センサーが反応したら照明をオンにする(リビング等の居室を除きすべての部屋に実装)
- キッチンで一定のCO2を検知したら、換気扇を起動
- 食洗機が洗浄完了したらスマートスピーカーで音声通知。
- 浴室のドア開閉を検知して、換気扇停止・浴室照明をオン
- 洗濯機で洗濯した後、6時間経過したら洗濯の取り込みリマインドをスマートスピーカーで音声通知。ただし乾燥まで行っている場合は通知しない
- テレビでNetflixやAmazonPrimeなどの動画配信サービスを起動したら、照明を少し暗くする
- オーディオプレイヤーで音楽を再生したら、テレビの電源をオフにする
- スマートフォンに着信があった場合、または玄関のドアベルがなった場合、テレビやオーディオプレイヤーをミュートにする
- Googleカレンダーに登録されているゴミ収集日の前日の場合、リマインドをスマートスピーカーで音声通知
など…。デバイスメーカー独自のスマートホームアプリの場合、ここまでの連携は難しいですが、Home Assistantならば可能なのです。
ユーザインターフェースのカスタマイズ性が高い
Home AssistantのUIである「ダッシュボード」は、主にスマートホームデバイスの操作をする画面になります。
通常、メーカーごとにアプリを入れて、それぞれ異なるUIで操作する必要がありますが、Home Assistantでは統一されたUIで操作が可能です。
ダッシュボードは自由にレイアウトしたり、テーマを適用できます。そのため、以下のようにスマートフォン用に最適化したダッシュボードを作ったり…

タブレットにダッシュボードを表示させて、リビングで誰でも操作できる 家のリモコン にしたりもできます。

私の場合は、上記の写真の通り自宅の間取り図の上に電源オン/オフ等の操作ができるボタンを表示させて、直感的なコントロールができるような工夫をしています。
さらに、宅内のセンサーから集めたデータをダッシュボードで可視化することもできます。
各部屋の室温・湿度、外気温のログを記録し、時間別/日別に確認したり、観葉植物の土壌水分量を測ったり…

スマートメーターや太陽光発電システムと統合し、いわゆるHEMSのように発電量・消費電力を集計して月あたりの電気代を概算したりできます。

以下、公式のデモページがありますから、実際に動かしてみて、どんなUIか参考にしてみてください。
ローカルで動作する
Home Assistantは、物理または仮想マシン上に構築して動作するサーバアプリケーションです。宅内LAN上に常時起動する自宅サーバ(オンプレ)を構築して各デバイスと通信をします。
Home Assistantとデバイスはローカルネットワーク上で機器と通信をしますので、非常に高速にデバイスを制御できます(一部デバイスによってはクラウド連携が必要な場合もあります)。
各メーカーのスマートホームのサーバアプリは以下の図のように基本的にAWSやGoogleCloud等のクラウド上で構築されていてインターネット経由で通信します。

そのため、インターネット回線の速度や通信状況に依存し、デバイスの操作をしても反応に時間がかかったり、最悪の場合、クラウド上で障害が発生したときや自宅からインターネットに接続できないときは「エアコンが起動できない!」、「照明がつかない!」などの問題が発生します。
自宅サーバ上にHome Assistantを構築すれば、基本宅内LAN上で完結しますので、高速かつインターネットに接続することなくローカル動作します。
(仮に自宅サーバがダウンしたとしても、記事をご覧のエンジニアみなさんが在宅している限り24時間365日即時復旧可能でしょう。たぶん)
オープンソースソフトウェアのプロジェクトであること

何と言ってもHome Assistantの一番のよいところです。
オープンソースソフトウェアとは、ソースコードが一般公開されており、誰でも自由な利用と改変ができるアプリを指します。 そのため、世界中の開発者・ユーザがコミュニティとして支え、今日も改善し続けており、2025年にはGitHubで最も多くのコントリビュータが集まったオープンソースプロジェクトにもなりました。
オープンソースソフトウェアは特定の企業のモノではないので、「突然のサービス終了!」「利用料の値上げ!」などで生殺与奪の権を一企業に握られることはありません。
また、Home Assistant本体だけでなく、前述の通り周辺のカスタムインテグレーションも活発に開発されています。 新しいデバイスやサービスへの対応も高速で、コミュニティ全体でエコシステムが広がり続けています。
おわりに
Home Assistant、いかがでしたか?
市販のメーカーアプリと比べると自由度が高いぶん、「どう統合すればいいか」「どう自動化すればいいか」を調べるのに時間がかかったり、見つけた解説が英語だったりと、最初はなかなか手がかかります。 ただ、その分生活がちゃんと改善される体験が得られるので、個人的にはとてもやりがいがありました。
また、エンジニアの観点で言えばHome Assistantはシステム開発のお勉強としても大変良い題材でした。
アプリケーションしか経験したことがない場合は、サーバのバックアップ計画を立てたり、ハードウェアを含めたネットワーク設計をするなど、低レイヤを含めた基盤設計・運用の勉強にもなります。 インフラしか経験したことがない場合は、エンドユーザとなる家族ごとに自宅での過ごし方が異なり、想定外のパターンが必ず出てくる…等、家庭でもアプリケーション設計・運用と同じ課題に直面します。 この経験はいつか実務でも活きてくるでしょう。
スマートホーム化に取り組むうえでは、ご家族がおられる方は「まずは家庭内稟議を通さないと…」という場合もあるかもしれません。まずは人感センサーで照明を自動化するなど、手頃なところから始めると、その便利さから理解も得やすいと思います。
なお私の場合、比較的理解を得やすい家庭でした。 …が、お風呂場の照明自動化に取り組んでいたとき、ロジックにバグがあり、妻の入浴中に照明が消えて怖がらせたことがありました。 (危うく我が家のスマートホームがサービス終了になりかけました。)
家族とはいえ、ユーザにシステムを提供する立場として、障害は避けたいものです。
今回の記事で興味を持った方向けに、別の記事でHome Assistantの環境構築や具体的なオートメーションの作成について解説できればと思います。
それでは、良いスマートホームライフを!