スマートメーターから消費電力データを取得してグラフ化する2026 ②mosquittoとHome Assistant導入編

python、mosquitto、Home Assistantでスマートメーターから消費電力データを取得してグラフを表示しよう、という企画です。
概要はこちらの記事をご覧ください。

この記事では、Rock 4C+にmosquittoとHome Assistantを導入します。

Rock 4C+のセットアップ

ベースとして、Rock 4C+にDebian12をクリーンインストールしました。
以降、Debian12にradxaユーザでSSH接続している前提で書きます。

サスペンドしないようにする

Debian12の仕様なのかRock 4C+用イメージの仕様なのか分かりませんが、デフォルトでは一定時間無操作の場合にサスペンドしてしまい常時起動してくれないので、サスペンドしないようにします。

/etc/gdm3/greeter.dconf-defaults を編集します。
ファイルの末尾に[org/gnome/settings-daemon/plugins/power]ブロックがあります。
そこに、
sleep-inactive-ac-timeout=0
を追加します。
また、Rock 4C+にはバッテリーがないので意味がないかもしれませんが、
sleep-inactive-battery-timeout=0
も追加しました。
これにより、無操作でもサスペンドしないようになります。

$ sudo vi /etc/gdm3/greeter.dconf-defaults
# Automatic suspend
# =================
[org/gnome/settings-daemon/plugins/power]
# - Time inactive in seconds before suspending with AC power
#   1200=20 minutes, 0=never
# sleep-inactive-ac-timeout=1200
sleep-inactive-ac-timeout=0
# - What to do after sleep-inactive-ac-timeout
#   'blank', 'suspend', 'shutdown', 'hibernate', 'interactive' or 'nothing'
# sleep-inactive-ac-type='suspend'
# - As above but when on battery
# sleep-inactive-battery-timeout=1200
sleep-inactive-battery-timeout=0
# sleep-inactive-battery-type='suspend'

Dockerインストール

mosquittoとHome Assistantはコンテナとして導入するので、まずはDockerをインストールします。

リポジトリのセットアップ

必要パッケージのインストール

$ sudo apt-get update
$ sudo apt-get install  ca-certificates  curl  gnupg  lsb-release

Docker の公式 GPG 鍵を追加

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

安定版(stable)リポジトリを設定

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker Engine のインストール

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

radxaユーザをdockerグループに所属させます。

$ sudo usermod -aG docker $USER

グループ設定の反映のために一度ログアウトしてログインしなおします。

Docker ComposeでmosquittoとHome Assistantの導入

スクリプトやコンテナを格納するディレクトリを作成します。

$ mkdir smartmeter

今回は以下のようなディレクトリ構成になります。

/home/radxa/           …radxaユーザのホーム
├─ha_config/ …Home Assistant用ディレクトリ(Dockerが作成)
├─mosquitto/ …mosquitto用ディレクトリ(Dockerが作成)
├─docker-compose.yml …Docker Composeの定義ファイル
└─main.py …スマートメーター情報取得スクリプト

Docker Compose定義ファイルを作成します。

$ cd smartmeter
$ vi docker-compose.yml
version: '3'
services:
  # MQTT Broker
  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto
    ports:
      - "1883:1883"
      - "9001:9001"
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    restart: unless-stopped

  # Home Assistant
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - ./ha_config:/config
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "8123:8123"
    restart: unless-stopped

mosquittoの設定ファイルを作成します。
家庭内でしか使わないので認証なし(allow_anonymous true)としています。

$ mkdir -p mosquitto/config
$ vi mosquitto/config/mosquitto.conf
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous true

Docker Composeを実行してmosquittoとHome Assistantのコンテナを作成します。

$ docker compose up -d

4分ほどで作成完了しました。
この時点で http://(Rock4C+のIPアドレス):8123 にアクセスするとHome Assistantのページが表示されるようになります。(設定は後で実施します。)

続きはこちら

コメント

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