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

約6分で読めます
目次全3項目
  1. 01やりたいこと
  2. 02セットアップ手順
  3. 03まとめ

最近、Home Assistantの世界に足を踏み入れました。最初はVMで遊んでいたのですがすぐに物足りなくなり、Raspberry Piにインストールすることにしました。備忘のため、そのセットアップ記録をまとめます。

01 / 03やりたいこと#

今回やりたいことは以下の通りです。

  • Raspberry Pi上にHome Assistantをインストールする
  • ECHONET LiteをMQTT経由で利用したいので、ECHONETLite2MQTTおよびMQTTブローカーを立ち上げる

Home Assistantのインストール方法はいくつかあるのですが、自由度が高く管理も比較的楽なコンテナ形式でセットアップすることにします。

02 / 03セットアップ手順#

Raspberry Piの入手#

半導体不足の影響で高騰していましたが、今はだいぶ落ち着いてきたでしょうか?

Raspberry Piの種類は3でも4でも良いようです。私の場合はHome Assistant以外にもいろいろ動かせるように、余裕のある8GB版Raspberry Pi 4 Model Bにしました。

広告
Raspberry Pi 4 Model B 8GBAmazon楽天市場Yahoo!

SDカードは、Class A2で32GB以上が推奨とのことです。

広告
SanDisk Extreme microSDカード 64GBAmazon楽天市場Yahoo!

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

広告
Miuzei Raspberry Pi 4 ケース(ファン・ヒートシンク・電源付き)Amazon楽天市場Yahoo!

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。

ターミナルbash
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は以下のようにしました。

YAML
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でマウントしているディレクトリは以下のような配置になっています。

ターミナルsh
$ tree
.
├── docker-compose.yml
├── echonetlite2mqtt
│        ├── config
│                     ├── alias.json
│                     └── config.json
│        └── MRA_custom
│                      └── 0x0265.json
├── homeassistant
│        └── config
└── mosquitto
             └── config
                           └── mosquitto.conf

あとは

ターミナルsh
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

JSON
{
        "port": 1883
}

03 / 03まとめ#

というわけで、我が家では上記のような設定でHome Assistantを動かしているという備忘録でした。ご参考まで。

コメント

コメントを書く

送ったコメントは、著者が確かめてから載ります。メールアドレスは聞きません。プライバシーポリシー

この記事を書いた人Hiroaki

注文住宅のスマートホーム化と、iPhoneアプリやFM音源のソフトウェアづくりを、自分で使いながら書いています。

hiroaki0923@hiroaki0923このサイトについて