Home Assistant 導入・設定手順

前提事項
構成概要
| 設置場所 | 自宅 |
| ハイパーバイザー | Proxmox |
| Home Assistant VM | Debian 13 |
| HA 実行方式 | Docker(Container) |
| DB | MariaDB |
| Prometheus / Grafana | 別VM(sv05) |
| センサ | SwitchBot / M5Stack |
| 目的 | 家庭内センサ統合・自動化・可視化 |
ネットワーク構成
[ sv05 ] 192.168.1.205
├ Prometheus
└ Grafana
[ sv07 ] 192.168.1.207
├ Docker
├ Home Assistant
└ MariaDB
Debian 13 初期設定(固定IP)
systemd-networkd を使用
Bash
sudo systemctl enable --now systemd-networkd設定ファイル
Bash
sudo vi /etc/systemd/network/10-ens18.network設定内容
INI
[Match]
Name=ens18
[Network]
Address=192.168.1.207/24
Gateway=192.168.1.1
DNS=192.168.1.1反映:
Bash
sudo systemctl restart systemd-networkd確認:
Bash
ip a
ip rDocker 環境構築
必須ツール
Bash
sudo apt updat
sudo apt install -y curl gnupg ca-certificatesDocker 公式リポジトリ
Bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian bookworm stable" | \
sudo tee /etc/apt/sources.list.d/docker.listDocker インストール
Bash
sudo apt update
sudo apt install -y docker-ce docker-compose-plugin
sudo systemctl enable --now docker確認:
Bash
sudo docker run --rm hello-worldHome Assistant + MariaDB 構築(Docker Compose)
ディレクトリ作成
Bash
sudo mkdir -p /opt/homeassistant/{config,mariadb,mariadb-conf.d}MariaDB 設定
Bash
sudo vi /opt/homeassistant/mariadb-conf.d/99-homeassistant.cnfINI
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone=Asia/Tokyodocker-compose.yml
Bash
sudo vi /opt/homeassistant/compose.ymlYAML
services:
mariadb:
image: mariadb:10.11
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: xxxxx
MARIADB_DATABASE: homeassistant
MARIADB_USER: homeassistant
MARIADB_PASSWORD: xxxxx
volumes:
- /opt/homeassistant/mariadb:/var/lib/mysql
- /opt/homeassistant/mariadb-conf.d:/etc/mysql/conf.d:ro
ports:
- "127.0.0.1:3306:3306"
homeassistant:
image: homeassistant/home-assistant:stable
network_mode: host
restart: unless-stopped
volumes:
- /opt/homeassistant/config:/config
- /etc/localtime:/etc/localtime:ro起動:
Bash
cd /opt/homeassistant
sudo docker compose up -dHome Assistant 初期セットアップ
ブラウザ:
http://192.168.1.207:8123
- ユーザー作成
- タイムゾーン:Asia/Tokyo
MariaDB を Recorder に使用
Bash
sudo vi /opt/homeassistant/config/configuration.yamlYAML
recorder:
db_url: mysql://homeassistant:xxxxx@127.0.0.1/homeassistant?charset=utf8mb4
purge_keep_days: 14Bash
sudo docker restart homeassistantPrometheus(sv05)→ Home Assistant 連携
ポイント(重要)
- prometheus: 統合は Exporter(HA → Prometheus)
- Prometheus → HA は REST センサーを使用
SwitchBot 温度(例)
YAML
sensor:
- platform: rest
name: "SwitchBot Temperature"
resource: >-
http://192.168.1.205:9090/api/v1/query?query=switchbot_temperature_celsius{instance="localhost:9105"}
value_template: "{{ value_json.data.result[0].value[1] | float }}"
unit_of_measurement: "°C"M5Stack 温度(device 別)
YAML
- platform: rest
name: "M5 Temperature m5stackC301"
resource: >-
http://192.168.1.205:9090/api/v1/query?query=m5_env_temperature_c{device="m5stackC301"}
value_template: "{{ value_json.data.result[0].value[1] | float }}"
unit_of_measurement: "°C"湿度・気圧も同様
- m5_env_humidity_percent
- m5_env_pressure_hpa
※ device="…" の指定は環境次第。
よくハマるポイント
- prometheus: include_metrics
→ Exporter 用設定。Prometheus 取り込みには使えない - result[0] だけ参照
→ 台数増加で壊れる。必ず device / instance 指定 - Bluetooth エラー
→ Cloud 連携のみなら無視してOK
この構成のメリット
- Home Assistant を 中枢にできる
- センサ → HA → Prometheus → Grafana → HA の循環が可能
- Docker なので バックアップ・再構築が容易
- センサ増設時も Prometheus 側を触るだけ
まとめ
- Home Assistant は Docker + host network が最安定
- Prometheus との双方向連携は REST センサーが正解
- M5Stack / SwitchBot のような 多デバイス構成と相性が良い
- 可視化(Grafana)と制御(HA)を分離できる
