0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

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

ホームサーバー完全構築ガイド #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を起動できるため、ホームサーバーの活用の幅が一段と広がるでしょう。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?