Home Assistant:ローカル完結・プライバシー優先の本格スマートホーム基盤をセルフホストする

タグ Home AssistantスマートホームセルフホストRaspberry PiDockerプライバシー保護IoTホームオートメーションcolumnコラムlinuxLinuxwindowsWindowsGitHubオープンソースhome-assistantcore
🚀 今すぐ試せます! デモスクリプトをダウンロードして、解凍後にターミナルで bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。 (macOS / Linux 環境が必要)

Home Assistant:ローカル完結・プライバシー優先の本格スマートホーム基盤をセルフホストする

ひとことでいうと

Home Assistant は、インターネット上の外部サービスを一切使わずに、自宅のネットワークだけで動くスマートホーム自動化プラットフォームです。Raspberry Pi(小型コンピュータ)や余ったパソコンを使って、家中のスマートデバイスをひとつの画面で管理できます。照明・エアコン・ドアロックの操作履歴が外部企業のサーバーに送られる心配がなく、プライバシーを守りながら快適なスマートホームが実現します。世界中の DIY 愛好家やエンジニアが開発に参加しており、対応インテグレーション(外部デバイスやサービスとの接続モジュール)は数千種類以上に達しています。

こんな人におすすめ

Home Assistant は幅広いユーザーに向いていますが、特に次のような場面で力を発揮します。

1. プライバシーを守りながらスマートホームを使いたい人 Amazon Alexa や Google Home のようなクラウド型サービスでは、操作の記録が企業のサーバーに送られます。Home Assistant なら、照明・エアコン・ドアロックのすべての操作履歴がローカル(自宅のネットワーク内)にだけ保存され、外部に送信されることはありません。Matter・Zigbee・Z-Wave といった幅広い通信規格をローカルで処理できる点も大きな魅力です。

2. 複数メーカーのデバイスをまとめて管理したいエンジニア・技術者 Philips の照明、Switchbot のカーテン、IKEA のスマートプラグ、Tesla の電気自動車など、メーカーや通信方式が異なるデバイスを単一のダッシュボードで一元管理できます。REST API(ソフトウェア同士がデータをやり取りするための仕組み)や MQTT(IoT 向けの軽量な通信プロトコル)を使ったカスタム連携にも対応しています。

3. Raspberry Pi などで自前サーバーを安く作りたい人 専用機(Home Assistant Green / Yellow)はもちろん、汎用 Linux サーバーや Raspberry Pi 3/4/5 にも公式対応しています。余ったシングルボードコンピュータ(手のひらサイズの小型コンピュータ)を活用すれば、ランニングコストを抑えながら本格的なスマートホーム基盤を持てます。

インストール・使い方

一般ユーザーには Home Assistant OS(専用 OS イメージ)または Docker 経由のインストールが公式に推奨されています。本リポジトリ(home-assistant/core)は開発者向けのコアコードですが、Docker を使えば比較的かんたんに始められます。

ターミナルとは? 文字でコマンド(命令)を入力してパソコンを操作する画面のことです。Mac なら「ターミナル」アプリ、Windows なら「PowerShell」が相当します。以降のコマンドはすべてコピー&ペーストで入力してください。

Step 1: ハードウェアを選ぶ

Raspberry Pi 3/4/5、Odroid シリーズ、Khadas VIM3、一般的な x86-64 パソコン、QEMU(仮想マシン)など多様なハードウェアが公式サポートされています。machine/ ディレクトリにサポートプラットフォームの一覧が収録されています。はじめてなら Raspberry Pi 4、または余った Windows / Mac パソコン上での Docker 実行がおすすめです。

Step 2: Docker で起動する

Docker(ソフトウェアを箱に詰めて動かす仕組み)がインストール済みであれば、次のコマンド一発で Home Assistant が起動します。

docker run -d \
  --name homeassistant \
  --privileged \
  --restart=unless-stopped \
  -e TZ=Asia/Tokyo \
  -v "$HOME/ha-config:/config" \
  --network=host \
  ghcr.io/home-assistant/home-assistant:stable

「Home Assistant の最新安定版を取得して、バックグラウンドで常時起動する」という命令です。-v "$HOME/ha-config:/config" の部分で、設定ファイルをパソコン本体の ha-config フォルダに保存するよう指定しています。

Step 3: ブラウザで初期設定する

起動後 30〜60 秒ほど待ってから、同じネットワーク内のブラウザ(Chrome・Firefox など)で次のアドレスを開きます。

http://localhost:8123

オンボーディングウィザード(初期設定の案内画面)が表示され、ユーザー登録と自動デバイス検出が始まります。画面の指示に従えば、難しい設定は不要です。

Step 4: インテグレーションを追加する

「設定 → デバイスとサービス」から使いたいデバイスを検索して追加します。Philips Hue、Switchbot、IKEA Tradfri、Tesla、Nature Remo など数千種類が一覧から選べます。

Step 5(開発者向け): Python 環境でコアを直接動かす

開発目的でコアを Python から動かす場合は Python 3.14.2 以上が必要です。仮想環境(プロジェクトごとに独立した Python 実行環境)を作成してから起動します。

python3.14 -m venv venv
source venv/bin/activate
pip install homeassistant
hass --open-ui

pip install homeassistant は「homeassistant というパッケージをインターネットから取得してインストールする」という命令です。hass --open-ui を実行すると、ブラウザが自動で起動します。

動かしてみた

実際にリポジトリの中身を調べたところ、公式サポートのハードウェアが非常に幅広いことが確認できました。machine/ ディレクトリには次のプラットフォームが含まれています。

machine/raspberrypi3-64
machine/raspberrypi4-64
machine/raspberrypi5-64
machine/generic-x86-64
machine/qemux86-64
machine/qemuarm-64
machine/green
machine/yellow
machine/odroid-c2 / odroid-c4 / odroid-m1 / odroid-n2
machine/khadas-vim3

ルートに Dockerfile が存在し、Docker によるコンテナ実行が公式にサポートされていることも確認できました。requirements.txt(本番用の依存パッケージ一覧)と requirements_test_all.txt(テスト用の依存パッケージ一覧)が別ファイルで管理されており、品質管理の仕組みがしっかり整備されています。script/ フォルダにはバージョン管理・ライセンス確認・通貨データ更新などの保守スクリプトが多数あり、大規模なオープンソースプロジェクトとしての成熟度が感じられました。開発者向けのコア実行には Python 3.14.2 以上が必要であることも仕様として確認しています。

ブラウザで試す(デモ)

この記事では、ブラウザ上で動作する簡易デモも用意しています。Home Assistant のオートメーション YAML ジェネレーターとして機能し、トリガー(きっかけとなるイベント)とアクション(実行する動作)を GUI(グラフィカルな操作画面)で選ぶだけで、automations.yaml に貼り付けられる雛形を自動生成します。実際のデバイスへの接続や通信は一切行わないため、YAML(設定ファイルの記述方式)の学習やテンプレート作成ツールとして気軽に活用できます。

実践のコツ:はじめの一歩を踏み出すために

設定をはじめるときに知っておくと便利なポイントをまとめました。すぐに試せる行動に絞っています。

  • まず 1〜2 台だけ連携させる: いきなり全デバイスを追加しようとすると混乱しやすいです。スマート電球など操作がかんたんなものから始めて、慣れてから増やしていきましょう。
  • オートメーションは GUI エディタから始める: YAML を直接書かなくても、ブラウザ上のオートメーションエディタで視覚的に作成できます。慣れてきたら YAML 形式に切り替えると、より細かい制御が可能になります。
  • エンティティ ID はデバイス追加後に自動割り当てられる: light.living_room のような識別子はデバイスを追加すると自動で生成されます。「設定 → デバイス」の画面から確認できます。
  • 設定ファイルは定期的にバックアップを取る: ha-config フォルダをそのままコピーするだけでバックアップになります。設定ミスがあっても安心して元に戻せます。
  • HACS(コミュニティ製インテグレーションの非公式ストア)も視野に入れる: 公式ストアにないデバイスやテーマが多数あります。公式の使い方に慣れてから探してみると、選択肢が大幅に広がります。

YAML でオートメーションを書いてみる

Home Assistant の自動化は YAML(インデントで構造を表す設定ファイル形式)で記述できます。「トリガー(きっかけ)→ 条件 → アクション(実行内容)」という構造が基本で、GUI エディタと YAML 編集の両方に対応しています。テンプレートエンジンとして Jinja2(設定ファイルの中で計算や条件分岐が書ける機能)が採用されており、センサー値を使った複雑な条件も柔軟に記述できます。

alias: 玄関センサーで照明オン
description: 玄関の動体センサーが反応したとき照明を点灯する
trigger:
  - platform: state
    entity_id: binary_sensor.hallway_motion
    to: "on"
condition:
  - condition: sun
    after: sunset
action:
  - service: light.turn_on
    target:
      entity_id: light.hallway
mode: single

「日没後に玄関の動体センサーが反応したら照明をオンにする」という条件付き自動化のルールです。binary_sensor.hallway_motion などのエンティティ ID はデバイス追加後に自動割り当てされ、管理画面から確認できます。

活用アイデア

Home Assistant は「スマート電球をオンにする」だけでなく、工夫次第でさまざまなシステムに発展できます。

  • エネルギー管理ダッシュボード: スマートプラグの電力消費データを時系列で収集・可視化し、待機電力の大きい家電を特定できます。使用パターンに合わせた自動オフのルールを組み合わせれば、電気代削減にもつながります。
  • フルローカル音声アシスタント: Whisper(音声をテキストに変換するソフト)と Piper(テキストを音声に変換するソフト)を組み合わせ、クラウド通信なしで動く完全ローカルの音声アシスタントを構築できます。コミュニティで多数の事例が共有されています。
  • 農業・ガーデニング IoT: 土壌湿度センサーと自動散水バルブを接続し、OpenWeatherMap インテグレーション(天気予報データを取得できる連携機能)と組み合わせた自動散水スケジュールを実現できます。
  • セキュリティ監視システム: ドア・窓センサーや Frigate(ローカルで動く AI カメラソフト)と連携し、人物を検知したときにスマートフォンへ画像付きで通知を送る独自システムを構築できます。

用語とポイント解説

インテグレーション 特定のデバイスやサービスと Home Assistant を接続するためのモジュール(部品)です。かんたんに言うと、「Philips Hue と HA が会話できるようにする通訳」のようなものです。公式に数千種類が対応しており、設定画面から検索して追加できます。一度追加すると、そのデバイスが自動的にダッシュボードに表示されます。

エンティティ Home Assistant 内で管理されるデバイスや状態の最小単位で、light.living_roomsensor.temperature のような識別子で表されます。かんたんに言うと、「HA が認識している個々の機器や数値に付けられた名前タグ」です。ひとつの物理デバイスが複数のエンティティ(電力・温度・オンオフ状態など)を持つこともあります。

オートメーション 「トリガー(きっかけ)→ 条件 → アクション(実行内容)」の順で組み立てる自動化のルールです。かんたんに言うと、「〇〇したとき、△△なら、□□する」という処理を設定ファイルや GUI で定義できる仕組みです。GUI エディタで視覚的に作れるため、プログラミング経験がなくても始められます。

ダッシュボード(Lovelace) カード単位で自由にカスタマイズできる Web UI(ブラウザで操作する管理画面)です。かんたんに言うと、「家の状態をひと目で確認できるコントロールパネル」です。温度グラフ・照明スイッチ・カメラ映像など、好きな情報を好きなレイアウトで並べられます。

HACS(ハックス) コミュニティが作ったインテグレーションやテーマを管理できる非公式ストアです。かんたんに言うと、「公式には載っていないアドオン(追加機能)を探してインストールできるアプリストア」のようなものです。公式インテグレーションでカバーされていないデバイスに対応する拡張機能が多数公開されており、選択肢を大幅に広げてくれます。

Matter(マター) Apple・Google・Amazon・Samsung が共同で策定したスマートホームの標準通信規格です。かんたんに言うと、「異なるメーカーの製品が共通の言葉で話せるようにした新しい規格」です。Home Assistant は Matter に対応済みで、対応デバイスをクラウドを介さずローカルで直接操作できます。

Zigbee(ジグビー)/ Z-Wave(ゼットウェーブ) スマートホームデバイスが使う近距離無線通信の規格です。かんたんに言うと、「スマート機器同士が Wi-Fi を使わずに直接やりとりできる専用の無線方式」です。消費電力が少なく、多数のデバイスをメッシュ状(網の目のように相互接続した形)でつなげられるため、センサー類に広く使われています。

Jinja2(ジンジャーツー) Home Assistant の YAML 設定ファイルの中で、センサー値を使った計算や条件分岐を書くためのテンプレートエンジンです。かんたんに言うと、「設定ファイルの中に数式や条件を書けるようにする機能」です。「気温が 28 度を超えたら冷房をオンにする」といった柔軟な自動化ルールをかんたんに記述できます。

REST API ソフトウェア同士がネットワークを通じてデータをやり取りするための仕組みです。かんたんに言うと、「他のアプリやスクリプトから Home Assistant を操作したり、状態を取得したりするための窓口」です。curl コマンドや Python スクリプトから HA のデバイスを制御することができ、カスタムシステムとの連携に役立ちます。

ぜひ、プライバシーを守ったスマートホームの構築や、Raspberry Pi を活用した自家製エネルギー管理ダッシュボード・フルローカル音声アシスタントなどに活用してみてはいかがでしょうか。