Raspberry PiでHome Assistantをセットアップする(Docker compose利用)

IoT

最近、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以上が推奨とのことです。

長時間つけっぱなしにするため、ファン付きのケースもあった方が良いでしょう。私は、ファン・ヒートシンク・電源がセットになったこちらを購入しました。

Miuzei 最新 Raspberry Pi 4 ケース ラスベリー パイ4 5.1V 3A USB-C 電源アダプター+冷却ファン+ヒートシンクラズパイ 4 Model B対応(Raspberry Pi 4 本体含まりません)PSE取得
Miuzei
¥2,199(2024/04/13 11:52時点)
raspberry pi 4ケースための新しいデザインを採用して積層型ケースより組み立て簡単、初心者のケースとしてお勧めです。

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を動かしているという備忘録でした。ご参考まで。

コメント

タイトルとURLをコピーしました