Home Assistant: スマートホームの高みを目指し、自宅サーバ・IT環境を再構築中

堰を切ったように
仮想化基盤の上でゲストとしてVM/LXCを運用し、そのイメージの定期的なバックアップを稼働中でも取得できるシステム構成は、可用性を高められる点で大変ありがたいものだ。これは業務では鉄板の構成であるものの、しかし、Raspberry Piを中心にずいぶん昔に組んだ私の自宅のサーバ構成は、当時の知識に基づいたまま、これまでずっと物理OSでの直運用を行っていた。
ほかにも、自宅の1ベイNASのHDD (2016年製) の寿命がそろそろ尽きるかもしれないという懸念や、最近知った定番のアプリ「Home Assistant」を運用してスマートホーム化をさらに楽しみたい、CO2センサーを増やして室内の換気制御をより緻密にしてみたい、などの欲望が押し寄せてきて。私の気持ちは、IT×住まいに関して抱く現段階の理想を具現化したくなり、サーバを含む自宅IT環境の再構築に、ここ数週間は趣味の時間を使っている。
基本は無音で、小規模で省エネで、ITと住まいとの自然なつながりを実現する。個人でできる範囲で、私も家族も楽に使えて、可用性は高く。そのためにはどうしたらいいか。どのような基盤から作っていくべきか。
“NOT A HOTEL”
ここまで書いたところで蘇ってきた記憶があり (本当に忘れていた)、今回の気持ちのきっかけを再認識した。2025年3月に『NOT A HOTEL FUKUOKA』を訪れた際に知った、スムースな空間体験と、それをもたらすための裏方の物凄い作り込み。あの時の衝撃をやっと私は咀嚼しはじめて、いま手を動かしているのだと思う。
書き留めておく
自宅のIT環境が“完成”に達することはないので、このブログ記事は、今回の再構築のきっかけや概要をいったん書き留めておくための、記録のマイルストーンのような位置づけだ。再構築の各部分の詳細については、本サイトとしてのネタ度 (バリュー) を判断して、もしかしたら単体の記事として仕上げていくかもしれません。
System-1. サーバ関係について
サーバ関係のBefore/Afterは次の通り。再構築の第一の目的は、仮想化基盤を用意すること。それは各アプリケーションごとの環境を用意して相互に分離し、かつ環境が確実に復元できるバックアップを残すためだ。
項目 | Before | After | 備考 |
---|---|---|---|
ハードウェア | Raspberry Pi 4 Model B [8GB] | Raspberry Pi 4 Model B [8GB] | ラズパイ5への切替えも可能だが当面は4を維持する |
物理OS | Ubuntu | Proxmox VE (Proxmox-Port; PXVIRT) | 仮想化を利用し、アプリ別VM/LXCで環境を分離する構成とする |
ストレージ1 | USB接続: AMPCOMケース + M.2 NVMe SSD [120GB] | USB接続: Buffalo SSD-PST250U3BA/N [250GB] | 物理OS起動用 |
2nd NIC | PLANEX USB-LAN1000R | — | 2nd NICは自宅のIP電話ネットワーク接続に必要 (Asterisk用) |
2nd NIC + USB給電ハブ | — | UGREEN 45321 (6-in-1 USBハブ LANアダプター) | ラズパイ4単体では給電力不足だったようで、USB接続ストレージのエラーが多発したのでUSB給電ハブを追加 |
ストレージ2 | — | USB接続: SanDisk SDSSDE81-4T00-GH25 [4TB] | Dropbox, Google Driveのバックアップ先とするローカルストレージ / フォーマットは耐障害性の観点からFAT32ではなくext4 |
USB-ACアダプタ | 一般的なもの | Anker 521 Charger (Nano Pro) | 2系統の出力をラズパイ本体とUSB給電ハブへ1系統ずつ入力 |
余談: ラズパイの給電能力をUSB機器の消費電力が上回ると
ラズパイのUSB給電能力と接続するUSB機器の消費電力の大小関係には、注意が必要、と今回の構築途中に思い知った。この関係がほぼ拮抗していたり、消費電力が上回る状態が発生する場合には、おそらく接続の瞬断的なことが起こるのだろう、外付けUSB接続ストレージであればデータ異常のエラーが多発する。
分かってしまえば簡単な因果関係なのであるが、私はこのエラーの謎を解くまでに、クラウドから4TB SSD (上記のストレージ2) へ総量数百GBのデータ転送を試しては途中で失敗、を何度か繰り返し数日間悩んだ (白状すると、高額だった新品SSD本体の初期不良かなぁとも考えて返品処理の一歩手前までやっていた)。下記写真は、4TBの方ではなく250GB SSD (上記のストレージ1) が死んだときの端末画面である。後者が死ぬと仮想化基盤のホストOSが起動しなくなるので悲しい思いでモニターを接続した。そして、新品の4TBではなく250GB SSDもこのように死にうると判明したことにより、ストレージ2つに共通する要因として、USB給電に問題がある可能性を悟った。
参考リンク: サーバ
Before
After
- Buffalo SSD-PST250U3BA/N:
【Amazon.co.jp限定】バッファロー SSD 外付け 250GB 極小 コンパクト ポータブル PS5 / PS4 対応 (メーカー動作確認済) USB3.2 Gen2 読込速度 600MB/s ブラック エコパッケージ SSD-PST250U3BA/N
バッファロー
- UGREEN 45321 (6-in-1 USBハブ LANアダプター):
UGREEN USB A 有線LANアダプター 6-in-1 LAN ハブ LANポート付き USB A to RJ45 ギガビットイーサネット 10Gbps 超高速転送 USB-C 3.2*2+USB A*2 USB-Cポート拡張 給電ポート搭載 Surface/XPS/Mac OS/Windows/Linux/switchなどに対応 LAN ネットワークアダプター
Ugreen Group Limited
- SanDisk SDSSDE81-4T00-GH25:
【Amazon.co.jp限定】SanDisk SSD 外付け 4TB USB 3.2 Gen 2x2 最大2000MB/秒 防滴防塵 SDSSDE81-4T00-GH25 エクストリームプロ ポータブルSSD V2 メーカー5年保証 エコパッケージ
SanDisk
- Anker 521 Charger (Nano Pro):
Anker 521 Charger (Nano Pro) USB PD 40W USB-C 急速充電器【PowerIQ 3.0 (Gen2)搭載/PSE技術基準適合】iPhone 16 / 15 / 14 / 13 MacBook Air その他各種機器対応 (ホワイト)
Anker
System-2. 外部ストレージについて
外部ストレージのBefore/Afterは次の通り。再構築の第一の目的は、保守し続ける必要があるHDDを自宅の中から撤廃すること。
項目 | Before | After | 備考 |
---|---|---|---|
クラウド1 | Dropbox [2TB] | (左記を継承) | 日常的なファイルの置場 |
クラウド2 | Google Drive [2TB] | (左記を継承) | 写真・動画等の置き場, Dropboxのバックアップ先 |
クラウド3 (WebDAV) | — | InfiniCloud [30GB (無料枠)] | Proxmox VE VM/LXCイメージの定期的なバックアップ先 |
NAS, 外付け | NAS: QNAP TS-128 + WD WD30EFRX [3TB] | 外付け: SanDisk SDSSDE81-4T00-GH25 [4TB] | Dropbox, Google Driveのバックアップ先 / NASは自宅での必要性の低下、HDDの寿命を鑑みて廃止 |
クラウド3としてWebDAVアクセス可能なサービスを選定している理由は、Proxmox VEでのWebDAVマウントが標準設定の範囲で行えて、利用が容易であるからだ。仮に何らかの障害が発生してProxmox VEをゼロから再構築する必要がある場合、当該サービスをWebDAVマウントしてVM/LXCイメージのバックアップを復元することは数ステップの作業で可能なので、システム復旧に大きな工数はかからないと見込んでいる (実際、上記System-1の写真にあるcrash時にPVEを再構築したが比較的短時間で行えた)。
参考リンク: 外部ストレージ
Before
- QNAP TS-128:
QNAP(キューナップ) TS-128A プライベートクラウド&ホームエンターテイメント向け 軽量/パワフル/エントリーモデル ARM 1.4GHz クアッドコア 1ベイNAS 2年保証
QNAP(キューナップ)
- WD WD30EFRX:
Western Digital HDD 3TB WD Red NAS RAID 3.5インチ 内蔵HDD WD30EFRX
ウエスタンデジタル(Western Digital)
System-3. アプリケーションレイヤーについて
アプリケーションレイヤーのBefore/Afterは次の通り。再構築の第一の目的は、「アプリAの実行環境を触っていたらアプリBが動かなくなった」なんて困った事態が発生しないように、各アプリの実行環境をカプセル化すること。
項目 | Before | After | 備考 |
---|---|---|---|
センサー連携・スマートホーム | 物理OS上の各種自作スクリプト | VMで構築 (Home Assistant) | PiMox HAOS VM |
Pi-Hole (自宅用Adblocking) | 物理OSに導入 | LXCで構築 | Pi-Hole LXC |
Asterisk (IP電話の子機) | 物理OSに導入 | LXCで構築, 2nd NICへも接続 | Ubuntu LXC + Asteriskパッケージ |
Podman (コンテナ実行環境) | 物理OSに導入 | LXCで構築 | Ubuntu LXC (Unprivileged container: No) + Podmanパッケージ |
rclone, rsync, gpup (クラウドとのファイル同期・写真転送) | 物理OSに導入 | LXCで構築, USB-SSDをbind mount, 各種自作スクリプト | Ubuntu LXC + 標準パッケージ等 |
Proxmox VEで使えるHelper-Scripts
Proxmox VE (Proxmox-Port; PXVIRT) による仮想化基盤の上に各アプリのゲスト環境を構築する際、Proxmox VE Helper-Scripts (Proxmox ARM64 Helper-Scripts) を用いると物凄く楽ができる。例えば、PiMox HAOS VM (Home Assistant) やPi-Hole LXCの構築は、次のページにある手順で指定のスクリプトを実行すると半自動的に行える。
System-4. センサー・IoT機器について
センサー・IoT機器関係のBefore/Afterは次の通り。再構築の第一の目的は、これまで部品を組み合わせて手作りしていた部分を既製品へ置き換えて、センサーを実験装置ではなく調度品化すること。第二に、部品を余らせて新たな実験ができるようにすること。
項目 | Before | After | 備考 |
---|---|---|---|
リビング | Raspberry Pi 4 (GPIO接続) + BME280 + MH-Z19C | ▲SwitchBot CO2センサー (温湿度計) | GPIO接続物よりも既製品のスッキリ感・ハンディさを重視 |
書斎 | Raspberry Pi Zero WH (GPIO接続) + BME280 + MH-Z19C + WaveShare 2.7inch e-Paper HAT | ▲(上記と同じ) | (上記と同じ) |
寝室 | — | ▲(上記と同じ) | 隣室のセンサーでもカバーできるが計測精度を上げるため追加 |
屋外 | — | ▲SwitchBot 防水温湿度計 | 屋外の温度・湿度も計測したいため追加 |
ハブ | — | ▲SwitchBot ハブ2 | SwitchBotセンサー製品用 |
その他 | スマート電球: 9個, スマートプラグ: 10個 (サーバ空冷用1, 照明用3, 換気扇用2, サーキュレータ用1, その他電化製品用3), スマートメーター: 1台, IRリモコンハブ: 1台 | (「サーバ空冷用1」を除いて左記を継承) | IKEA, Tuya, Meross, SwitchBot, Nature Remoが混在 |
表中の▲印のセンサーの置き換えは記事執筆時点で未着手であり、これから作業を進める。Home Assistantにセンサーを統合 (Integration) する設定作業の難易度については、SwitchBotが公式ページ Home Assistant – SwitchBot International で紹介しているぐらいだから、ほぼほぼ心配していない。
参考リンク: センサー
Before
- BME280:
スイッチサイエンス BME280搭載 温湿度・気圧センサモジュール(ピン実装済) SSCI-023238
スイッチサイエンス
- Winsen MH-Z19C:
MH-Z19 MH-Z19C CO2モジュール二酸化炭素NDIR CO2 400-5000ppm UART PWM出力用
JAPROA(ジャプロア)
- WaveShare 2.7inch e-Paper HAT:
2.7インチE-Inkディスプレイハット、264x176ピクセル ブラック、ホワイト 2色 3.3V/5V E-Paper スクリーン LCD Raspberry Pi 4B/3B+/3B/2B/Zero/Zero W/Zero W/Zero WHおよびJetson Nano SPIインターフェース対応 フルリフレッシュ対応
Waveshare
After
- SwitchBot CO2センサー(温湿度計) W4900010:
SwitchBot CO2センサー 二酸化炭素濃度計 温湿度計 アラーム - スイッチボット デジタル 大画面 高精度 CO2測定器 快適指数 天気予報 時計 卓上 カレンダー スマホ連動 アラート通知 グラフ記録 スマートホーム Alexa Google Home Siriに対応
スイッチボット(SwitchBot)
- SwitchBot 防水温湿度計 W3400010:
SwitchBot 防水温湿度計 Alexa 温度計 湿度計 - スイッチボット ワイヤレス 室内 屋外用 温湿度計 スマホで温度湿度管理 デジタル 高精度 コンパクト 温度 湿度 絶対湿度 異常通知 グラフ記録 スマートホーム Alexa Google Home IFTTT イフト Siriに対応(ハブ必要)
スイッチボット(SwitchBot)
- SwitchBot ハブ2 W3202100:
SwitchBot スマートリモコン ハブ2 赤外線家電を管理 スマートホーム Alexa スイッチボット 学習リモコン 温湿度計機能付き 光センサー付き リモートボタン スケジュール シーンで家電一括操作 遠隔操作 節電·省エネ Google Home IFTTT Siri SmartThingsに対応 Hub2
スイッチボット(SwitchBot)
今回のまとめ
個人の範囲で行えるスマートホーム化は、冒頭部分で「定番」だと述べたように現段階ではHome Assistantを導入し、各種クラウドサービスや家電製品やセンサーをありったけHome Assistantに統合し、連携動作をプログラムするというアプローチが最も手っ取り早いであろう。
そう考えると、今進めている自宅サーバ・IT環境の再構築の方向性は、Home Assistant自体や、生活の中で用いているその他のアプリ (例えば自作のtelppo, liblibや、毎日必要時に実行しているGoogle NestのText-to-Speech機能など) が、これから自宅内で、安定的に動作し続けるために行っているものであるから、すなわち、大げさに言えばスマートホーム化推進のための基盤強靱化につながっているのかもしれない。
下記の画面は、我が家のHome Assistantの現状 [2025-05-11] だ。多くの様々なものを統合した状態だが、プログラム (if-thenで組むロジック) にはほとんど手を付けておらず、自分としては面白味がまだ全然足りない。これから生活の中で家族とも発案しつつ、模索していくのでしょう。