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

<!-- START_SERIES -->

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

[ホームサーバー完全構築ガイド #0 計画とハードウェア選定](https://qiita.com/SolitudeRA/items/0a3f810efb315ba04fd2)
[ホームサーバー完全構築ガイド #1 OS導入と基本設定](https://qiita.com/SolitudeRA/items/aecc62f0bb4270367656)
[ホームサーバー完全構築ガイド #2 インフラの構築](https://qiita.com/SolitudeRA/items/4c6196234446c5965f23)
[ホームサーバー完全構築ガイド #3 サービス群の選定](https://qiita.com/SolitudeRA/items/78ed880f4fa89d466c1f)
[ホームサーバー完全構築ガイド #4 WordPressのデプロイ](https://qiita.com/SolitudeRA/items/ce9e9dadf46e19143656)
[ホームサーバー完全構築ガイド #5 情報収集システムの構築](https://qiita.com/SolitudeRA/items/f41e730e87181076d707)
[ホームサーバー完全構築ガイド #6 クラウドストレージの構築](https://qiita.com/SolitudeRA/items/652c84442abfd818f743)
[ホームサーバー完全構築ガイド #7 DevOpsプラットフォームの構築](https://qiita.com/SolitudeRA/items/8580cffbb7de7148366a)

<!-- END_SERIES -->

## はじめに

前回の「[ホームサーバー完全構築ガイド #7 DevOpsプラットフォームの構築](https://qiita.com/SolitudeRA/items/8580cffbb7de7148366a)」では、ホームサーバーを活用したDevOps環境を構築するために、**Gogs**や**Woodpecker CI**、**Jenkins**などのツールをご紹介しました。これらを導入することで、バージョン管理や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](https://www.home-assistant.io/installation/linux) を参照できます  

### Dockerのセットアップ
DockerおよびDocker Composeが未導入の場合は、以下の記事を参考して下さい：

[ホームサーバー完全構築ガイド #2 インフラの構築](https://qiita.com/SolitudeRA/items/4c6196234446c5965f23)

## Home Assistant用コンテナの構築

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

```yaml
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`: ネットワークをホストと共有し、ポート設定を簡素化  

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

```bash
docker-compose up -d
```

起動が成功したら、ブラウザで  
```
http://<サーバーのIPアドレス>:8123
```
へアクセスし、初回セットアップ（アカウント作成やロケーション設定など）を行ってください。

---

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

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

## cocoroの導入

- GitHub: [rcmdnk/cocoro](https://github.com/rcmdnk/cocoro)  

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

### 導入手順例 (Ubuntu)

1. **Python 3とpipのインストール**  
   ```bash
   sudo apt update
   sudo apt install python3 python3-pip
   ```
2. **cocoroのクローンおよびセットアップ**  
   ```bash
   git clone https://github.com/rcmdnk/cocoro.git
   cd cocoro
   pip install -r requirements.txt
   ```
3. **設定ファイルの調整**  
   `.env`や`config.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`ツールを入れると便利です。

```bash
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を起動できるため、ホームサーバーの活用の幅が一段と広がるでしょう。