最近、Home Assistantの世界に足を踏み入れました。最初はVMで遊んでいたのですがすぐに物足りなくなり、Raspberry Piにインストールすることにしました。備忘のため、そのセットアップ記録をまとめます。
やりたいこと
今回やりたいことは以下の通りです。
- Raspberry Pi上にHome Assistantをインストールする
- ECHONET LiteをMQTT経由で利用したいので、ECHONETLite2MQTTおよびMQTTブローカーを立ち上げる
Home Assistantのインストール方法はいくつかあるのですが、自由度が高く管理も比較的楽なコンテナ形式でセットアップすることにします。
セットアップ手順
Raspberry Piの入手
半導体不足の影響で高騰していましたが、今はだいぶ落ち着いてきたでしょうか?
Raspberry Piの種類は3でも4でも良いようです。私の場合はHome Assistant以外にもいろいろ動かせるように、余裕のある8GB版Raspberry Pi 4 Model Bにしました。
SDカードは、Class A2で32GB以上が推奨とのことです。
長時間つけっぱなしにするため、ファン付きのケースもあった方が良いでしょう。私は、ファン・ヒートシンク・電源がセットになったこちらを購入しました。
OSの選択
Raspberry Pi Imagerから、Raspberry Pi OS Lite (64 bit)を選択しました。GUIが不要であればLiteでOKです。
右下の歯車マークをクリックすると、ホスト名やSSHの有効化などの設定が行えます。ホスト名やログインするユーザ名など指定しておくとその後のセットアップが楽です。
設定を行ったら、SDカードに書き込みます。
dockerのインストール
ここではget.docker.comのスクリプトを使ってさくっと進めてみます。オフィシャルページにはubuntuのセクションにしか出てこないようなのですが、スクリプト内にはraspbianなどの記載があり、動きました。
Raspberry PiにSSHでログインし、以下を動かせばOK。
sudo apt update && sudo apt full-upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
コンソールにログインし直すと、root権限なしでdockerが動くようになります。
docker compose
上記の通り、今回動かしたいのは
- Home Assistant
- ECHONETLite2MQTT
- MQTTブローカー(mosquitto)
です。
設定ファイルをローカルディレクトリに保存できるよう、docker-compose.ymlは以下のようにしました。
version: '3'
services:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- ./homeassistant/config:/config
- /etc/localtime:/etc/localtime:ro
- /var/run/dbus:/var/run/dbus
restart: unless-stopped
privileged: true
network_mode: host
mqtt:
image: eclipse-mosquitto
container_name: mqtt
restart: unless-stopped
network_mode: host
volumes:
- ./mosquitto/config:/mosquitto/config
echonetlite2mqtt:
image: banban525/echonetlite2mqtt
container_name: echonetlite2mqtt
restart: unless-stopped
network_mode: host
volumes:
- ./echonetlite2mqtt/MRA_custom:/app/MRA_custom
- ./echonetlite2mqtt/config:/app/configure
environment:
- MQTT_BROKER="mqtt://homeassistant"
- MQTT_OPTION_FILE="/app/configure/config.json"
- ECHONET_TARGET_NETWORK="192.168.0.0/24"
- ECHONET_ALIAS_FILE="/app/configure/alias.json"
ECHONETLite2MQTTに関しては、通常ではMRA_customディレクトリをマウントする必要はないのですが、我が家の電気設備にあわせていくつか設定をしたかったため、このようにしています。
volumesでマウントしているディレクトリは以下のような配置になっています。
$ tree
.
├── docker-compose.yml
├── echonetlite2mqtt
│ ├── config
│ ├── alias.json
│ └── config.json
│ └── MRA_custom
│ └── 0x0265.json
├── homeassistant
│ └── config
└── mosquitto
└── config
└── mosquitto.conf
あとは
docker compose up -d
すればOK。
MosquittoとECHONETLite2MQTTの設定
MQTTの認証方法をMosquittoとECHONETLite2MQTTで揃える必要があります。
以下は認証なしの場合。
mosquitto.conf
set_tcp_nodelay true
listener 1883 0.0.0.0
allow_anonymous true
max_queued_messages 0
config.json
{
"port": 1883
}
まとめ
というわけで、我が家では上記のような設定でHome Assistantを動かしているという備忘録でした。ご参考まで。
コメント