🌃

ホームサーバー完全構築ガイド #8 スマートホームプラットフォームの構築

2024/12/25に公開

ホームサーバー完全構築ガイド シリーズ記事:

ホームサーバー完全構築ガイド #0 計画とハードウェア選定
ホームサーバー完全構築ガイド #1 OS導入と基本設定
ホームサーバー完全構築ガイド #2 インフラの構築
ホームサーバー完全構築ガイド #3 サービス群の選定
ホームサーバー完全構築ガイド #4 WordPressのデプロイ
ホームサーバー完全構築ガイド #5 情報収集システムの構築
ホームサーバー完全構築ガイド #6 クラウドストレージの構築
ホームサーバー完全構築ガイド #7 DevOpsプラットフォームの構築

はじめに

前回の「ホームサーバー完全構築ガイド #7 DevOpsプラットフォームの構築」では、ホームサーバーを活用したDevOps環境を構築するために、GogsWoodpecker CIJenkinsなどのツールをご紹介しました。これらを導入することで、バージョン管理やCI/CDを効率化し、小規模から大規模まで柔軟に対応可能な基盤を整えられます。
今回のでは、その土台をさらに発展させ、スマートホームプラットフォームの構築に取り組みます。具体的には、Ubuntu上のDockerでHome Assistantを導入し、公式サポート外の家電を制御するための非公式ツールやiOS連携のアイデアを解説いたします。また、Wake-on-LANによるリモートPC起動を解説し、ホームサーバーの可能性を一段と広げていきましょう。


Home Assistantの導入 (Docker)

ホームサーバーでスマートホームプラットフォームを構築する際は、まずHome Assistantを導入するのが定番です。公式サイトが充実しており、世界的に広く利用されているため、各種機器との連携がしやすい利点があります。以下ではDocker環境へのインストールと基本設定について順を追って解説します。

事前準備

  1. OS: Ubuntu (本記事では22.04を想定しています)
  2. Docker / Docker Compose: あらかじめインストールを済ませておきます
  3. Home Assistant公式サイト: Home Assistant Installation on Linux を参照できます

Dockerのセットアップ

DockerおよびDocker Composeが未導入の場合は、以下の記事を参考して下さい:

ホームサーバー完全構築ガイド #2 インフラの構築

Home Assistant用コンテナの構築

Home Assistant公式ドキュメントの「Dockerでのインストール」をもとに、docker-compose.ymlを作成します。以下は一例です。

version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - ./config:/config
    environment:
      - TZ=Asia/Tokyo
    restart: unless-stopped
    network_mode: host
  • TZ=Asia/Tokyo: タイムゾーンを日本時間に設定
  • network_mode: host: ネットワークをホストと共有し、ポート設定を簡素化

ファイルを作成後、以下のコマンドでコンテナを起動します。

docker-compose up -d

起動が成功したら、ブラウザで

http://<サーバーのIPアドレス>:8123

へアクセスし、初回セットアップ(アカウント作成やロケーション設定など)を行ってください。


公式サポート外の家庭機器をiOSで操作するアイデア

Home Assistantは多数の家電と連携可能ですが、一部の日本国内向け家電(たとえばシャープの空気清浄加湿器KI-NX75など)は公式サポートが存在しない場合があります。そこで、非公式ツールを利用し、直接制御を行う工夫が必要です。また、iOSショートカットから操作して、Siriやワンタップで手軽に制御する方法も有効です。

cocoroの導入

こちらにはシャープの「COCORO AIR」対応機器を操作するためのPythonスクリプトやドキュメントが揃っています。Home Assistantとの統合を図ることも可能ですし、SSH経由で呼び出すことで直接家電を操作できます。

導入手順例 (Ubuntu)

  1. Python 3とpipのインストール
    sudo apt update
    sudo apt install python3 python3-pip
    
  2. cocoroのクローンおよびセットアップ
    git clone https://github.com/rcmdnk/cocoro.git
    cd cocoro
    pip install -r requirements.txt
    
  3. 設定ファイルの調整
    .envconfig.ymlが求められる場合はリポジトリのREADMEに従って設定します。

これらを完了すると、シャープ家電の電源ON/OFFや風量調整などが可能となります。

iOSショートカットとの連携

Home Assistantに統合しづらい機器でも、iOSショートカット + SSHで連携すれば手軽に操作できます。

  1. iOSショートカットで「SSH経由でコマンドを実行」を選択
  2. **サーバー接続情報(IPアドレスやSSHキー)**を事前に設定
  3. cocoroなどのスクリプトを呼び出し、ターゲット家電を制御

たとえば「空気清浄機をOFFにする」ショートカットを作れば、Siriへ話しかけるだけで操作できるようになります。


リモートからのPC起動 (Wake-on-LAN)

ホームサーバーを充実させるうえで、遠隔地からPCを起動できる**Wake-on-LAN(WoL)**は非常に便利です。Windowsの場合、高速スタートアップをオフにしないと正常に動作しない場合があるため、あわせて設定を見直しておきましょう。

PC側の設定

  1. BIOS/UEFIでWoLを有効化
    マザーボードの設定画面で「Wake on LAN」や「PCI-E Device Power On」をオンにします。
  2. OS側でWoLを有効化
    WindowsやLinuxでLANアダプタのプロパティを開き、WoL関連の項目をオンにします。
  3. Windowsの高速スタートアップを無効化
    「コントロール パネル」→「電源オプション」→「電源ボタンの動作を選択する」→「現在利用可能ではない設定を変更します」→「高速スタートアップを有効にする(推奨)」のチェックを外します。
  4. MACアドレスの確認
    WoLパケット送信に必要なため、あらかじめ調べておきます。

LinuxサーバーからのWoL送信

Home AssistantにWake-on-LAN統合を追加する方法もありますが、単純にコマンドラインから起動する場合は、Ubuntuにwakeonlanツールを入れると便利です。

sudo apt-get install wakeonlan
wakeonlan XX:XX:XX:XX:XX:XX

ここでXX:XX:XX:XX:XX:XXは、起動したいPCのMACアドレスを指します。

iOSショートカットからのWoL送信

スマートフォンからもPC起動を行いたい場合は、iOSショートカットでSSH接続を設定し、上記のwakeonlanコマンドを実行すれば、どこからでも遠隔でPCを起動できます。


まとめ

本記事では、Ubuntu上のDockerでHome Assistantを導入し、多様な家電やIoT機器を制御するスマートホームプラットフォーム構築の手順をご説明しました。日本向け家電の一部は公式サポート外ですが、非公式ツール (cocoro)iOSショートカットを組み合わせることで、使い勝手を大きく向上できます。さらに、Wake-on-LANを用いれば、離れた場所からPCを起動できるため、ホームサーバーの活用の幅が一段と広がるでしょう。

Discussion