Home Assistant:簡単インストール ラズパイ・Khadas VIM1Sに導入

Home Assistant・IoT

家のスマートホームでそろそろセンサー類を1つのアプリで総合的に操作できるように変えていきたいと思っていたところ、Home assistantがだいぶ使いやすくなったようなので導入してみます。

この記事は複数のページに別れています

最初はRaspberry PiでHome assistantをインストールしようとしましたが、Khadas VIM1Sも使えるようなので、Khadas VIM1SでHome assistantを導入して使ってみます。

Raspberry PiにHome assistantを導入する場合

Raspberry PiではRaspberry Pi ImagerでHome assistantを選べば簡単にインストール可能。

上記の順番でMicroSDカードにインストールする。

同じように導入の簡単なKhadas VIM1SでHome assistantを運用することにします。

Khadas VIM1S Debian(Home assistant)

Khadas VIM1SでHome Assistant 入りのDebianがインストールできる!のでKhadas VIM1SをHome Assistant 用にしてみます。(やっと使い道ができた♪)

1週間ほど使ってみて、Home assistantが軽いようなので安定して重くもなく使えています。

VIM1S and home assistant supervisor
Thank you for the reaction. The boot work up the moment where I have this message : proc: Bad value for ‘hidepid’ proc: ...

OOWOWを起動すると↓vim1s-ha-supervised-debian-11-minimal-linux-5.4-fenix-1.5.1-230623.img.xzがある。haはHome Assistant のことでしょう。

ファイルをダウンロードすると↓LabelにHome Assistantの表示が!

MicroSDではなく内蔵のeMMにインストールします。

インターネットにつながらないのでnmtuiで設定する

インストールは普通に終わりますが、OOWOWで設定したWifi接続がなぜかOSが引き継いで接続できないので、もう一度Wifi設定します。

nmtui

以下のような画面になるのでWifiのSSIDとパスワードを入力して接続する。

Wifiに接続できたら↓説明のようにローカルからだと「http://homeassistant.local:8123/」にアクセスするか、他のPCからだとIPアドレスにして「http://192.168.31.51:8123/」などでアクセスすればHome assistantのWeb UIが表示される。

Onboarding Home Assistant
Instructions to get Home Assistant configured.

Debian バージョン

Home Assistant が最初から入っているDebianのバージョンを調べておきます。

lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

Home Assistant の設定ファイルなど(Dockerの設定)

設定ファイルは/usr/share/hassio/homeassistantにあるが、こちらはDockerで稼働している設定ファイルなのでここからはいじらない。

$ ls /usr/share/hassio/homeassistant
automations.yaml    home-assistant.log        home-assistant_v2.db-wal
blueprints          home-assistant.log.1      scenes.yaml
configuration.yaml  home-assistant.log.fault  scripts.yaml
deps                home-assistant_v2.db      secrets.yaml
esphome             home-assistant_v2.db-shm  tts

Home assistantはDockerで稼働

Khadas VIM1SのHome assistantはどこにあるのかと調べたらDocker内でした。

$ sudo docker ps
CONTAINER ID   IMAGE                                                       COMMAND               CREATED       STATUS                 PORTS                                   NAMES
d86c1f675eb2   homeassistant/aarch64-addon-configurator:5.7.0              "/init"               7 hours ago   Up 7 hours (healthy)                                           addon_core_configurator
02ae16ec4277   ghcr.io/esphome/esphome-hassio:2023.12.9                    "/init"               7 hours ago   Up 7 hours                                                     addon_5c53de3b_esphome
9f3451695c68   ghcr.io/home-assistant/aarch64-hassio-multicast:2023.06.2   "/init"               7 hours ago   Up 7 hours                                                     hassio_multicast
f7835da850aa   ghcr.io/home-assistant/aarch64-hassio-audio:2023.12.0       "/init"               7 hours ago   Up 7 hours                                                     hassio_audio
5ec615c6e529   ghcr.io/home-assistant/aarch64-hassio-dns:2023.06.2         "/init"               7 hours ago   Up 7 hours                                                     hassio_dns
b3ce1e86b8ba   ghcr.io/home-assistant/aarch64-hassio-cli:2023.11.0         "/init"               7 hours ago   Up 7 hours                                                     hassio_cli
d917d267df26   ghcr.io/home-assistant/aarch64-hassio-observer:2023.06.0    "/usr/bin/observer"   3 days ago    Up 7 hours             0.0.0.0:4357->80/tcp, :::4357->80/tcp   hassio_observer
12f7a3679c61   ghcr.io/home-assistant/aarch64-hassio-supervisor:latest     "/init"               3 days ago    Up 7 hours                                                     hassio_supervisor
027a5f1f88a3   ghcr.io/home-assistant/qemuarm-64-homeassistant:2023.6.2    "/init"               3 days ago    Up 12 minutes                                                  homeassistant

configuration.yamlを編集するためには、どのコンテナかけっこう起動しているのでどれがHome assistantかわかりにくいのですが、一番下の「ghcr.io/home-assistant/qemuarm-64-homeassistant:2023.6.2」のようです。

これで入れた↓

sudo docker exec -it 027a5f1f88a3 /bin/bash
homeassistant:/config# ls
automations.yaml          deps                      home-assistant.log.fault  scenes.yaml
blueprints                esphome                   home-assistant_v2.db      scripts.yaml
configuration.yaml        home-assistant.log        home-assistant_v2.db-shm  secrets.yaml
custom_components         home-assistant.log.1      home-assistant_v2.db-wal  tts

configuration.yaml があった。ただ、ここからファイルを編集するのは面倒なのでWeb UIからそうさできるようにアドオンをインストールしていきます。

サイトにアクセス

Home Assistantがうまく起動しているかWindows PCのWebブラウザでアクセスする。

http://192.168.31.51:8123/onboarding.html

以下のような画面になり、まずはユーザーや自宅情報など設定。

ログインすると↓XiaomiのIoT機器やRaspi3BにインストールしたOctoPrintが表示された。

Raspi3BのOctoPrintと接続

まずは簡単なところからOctoPrintを接続する。

上画像でOctoPrintをタップすると、OctoPrintのWeb UI↓で以下のように表示された。

OctoPrintのWebページの右上にAccess Requestが表示されるのでAllowボタンを押すと接続できる。

あとは3Dプリンターに接続されているRaspi3B(OctoPrintがインストールされている)のエリアを選んで完了。

OctoPrintは2種類 コントロール・センサーの操作パネルをダッシュボードに追加可能。

3Dプリンターを本格的には使えないが、監視ページとしての役割は果たせている。

(けどレスポンスは少し遅く、カメラは3Dプリンターの電源入れてから1~5秒後くらいに動き出すので、1~5秒前の表示だと思う。)

OctoPrintのWebページのほうがリアルタイムで操作できカメラもほぼリアルタイム~1秒くらい前の表示になる。

3Dプリントなど細かい操作はOctoPrintでやるので、1画面で様子を見れるのは便利です。

File editor(アドオン)

まずは設定ファイルをWebブラウザから操作できるアドオンを入れておく。

Home Assistant のUIから設定configuration.yamlファイルを編集できるようになる。

設定 > アドオンの右下「アドオンストア」で検索。

設定ファイルをHome AssistantのUIから編集できる。

Xiaomi Miio

設定 > デバイスとサービスからXiaomiのIoT機器がいくつか登録できるようなので登録してみます。

結果的にXiaomi Gateway・電源プラグ(chuangmi.plug.m3)のみ登録できました。他の機器は手動か他の登録方法でやるしかない。

Xiaomi機器を登録

設定 > デバイスとサービスでXiaomi Miioを選ぶ(もう一つのほうの発見の192.168.31.141のXiaomi Gatewayは今は使い方わからない)

Mi Homeアプリでのユーザー・パスワードを入力してXiaomi Miio Cloudにログインする。

すると↓いろいろとXiaomiの機器が出てくる。

このエラー↓が出た場合は「しつこく」送信を押すと2・3回で登録可能だが、こうなると使えない?可能性大。

ルーターAX3600は↓はじめから登録できなかった。

Xiaomi Miioでchuangmi.plug.v1になるアイテムは全て操作不能みたい。

Zigbee対応のゲートウェイと電源プラグ2個のみがXiaomi Miioで使えた。他はWifi接続なので?使えないみたい。

Wifi接続は不可でBluetooth(ESP32から接続)とZigbee対応製品のみHome assistantと接続できそう。

今のところ使えるのは少ないが、エンティティにはリストがいっぱいになって、ほとんど!マークが表示される。

今後、調べて使えるようにしていきたいが、ダメかな?

ESPHome(アドオン)

ESP32を使って他にガジェットをBluetooth接続するのにESPHomeが必要。

家にあるXiaomi温湿度計とMi Fit 2(次ページ、接続できたがあまり使えない)をESP32のBluetoothからHome assistantに登録してみます。

ESPHomeアドオン インストール

設定 > アドオン で右下にあるアドオンストアで「ESP」と検索

ここから先はPCのWebブラウザをChromeかEdgeでないとESP32のポートをチェックできないので、Firefoxでは設定できなかった。

接続・インストール

なにも使っていないESP32をHome Assistantを起動しているPCに接続して設定していきます。

ESPHomeのページで「+NEW DEVICE」を選択。

名前(適当にあとから変更可能)とWifiのSSIDとパスワードを設定、続いてESP32を選択。Raspberry Pi Picoも使えるようですね。

INSTALLを押すとなにやらPlatform IOの?ツールがインストールされていく。

SUCCESSになったけど、Wifiが繋がらない?

うまく繋がらないので設定を以下のマニュアルを読んで追加する。

WiFi Component
Instructions for setting up the WiFi configuration for your ESP node in ESPHome.

Wifiのところに以下のように設定追加。static_ipがESP32のIPアドレス。

  manual_ip:
    static_ip: 192.168.31.73
    gateway: 192.168.31.1
    subnet: 255.255.255.0

ESP32にインストール

PCに繋いでいる場合は「Plug into this computer」を選んでインストールしていく。

間違えて違うのを選んだらESPHomeのページから再度インストール可能。↓

ESP32が接続しているシリアルポートを調べる

スタートメニューを右クリックしてデバイスマネージャーを開いてESP32の接続されているポート番号を調べます。(ESP32のUSBケーブルを抜き差しするとポートが無くなったり表示されたりする番号がESP32)

COM9なのでHome Assistant のブラウザに戻ってCOM9を選んだ↓。

インストールはしばらく5分弱くらい時間がかかる。成功すると↓このようになる。

追加された↓このESP32でBluetoothのガジェットを登録したりするのに使う。

以下のXiaomiの温湿度計が家にあるのでHome assistantで表示させてみます。

Xiaomi Mijia BLE Sensors
Instructions for setting up Xiaomi Mi Home (Mijia) bluetooth-based sensors in ESPHome.

Xiaomi 温湿度計(ESP32を使ってBluetooth接続)

まずはこちらの温湿度計をHome assistantに登録してみる。

こちらの製品はもう売ってないみたい。

Macアドレスが分からないのでRaspi4Bでhcitoolコマンドでスキャンする。

sudo hcitool lescan
Set scan parameters failed: Input/output error
#エラーになったら以下を実行
sudo hciconfig hci0 down
sudo hciconfig hci0 up
sudo hcitool lescan
13:F9:11:B9:6C:E0 (unknown)
78:0D:8E:59:06:CB (unknown)
4C:65:A8:DB:4E:75 (unknown)
4C:65:A8:DB:4E:75 MJ_HT_V1
F8:A8:82:C6:33:97 IM
17:DF:E2:80:4D:85 (unknown)
72:31:12:A2:7C:DA (unknown)

hcitoolはRaspi4まで、Raspi5ではエラーのままで効かなかった。

こちらの方↑の設定を参考にして、Macアドレスの部分(mac_address)はさきほどスキャンしたMJ_HT_V1の4C:65:A8:DB:4E:75を使う。

# BLE Tracker
esp32_ble_tracker:

sensor:
  # Xiaomi Temperature-Humidity Sensor
  - platform: xiaomi_lywsdcgq
    mac_address: 4C:65:A8:DB:4E:75
    temperature:
      name: "Xiaomi LYWSDCGQ No1 Temperature"
    humidity:
      name: "Xiaomi LYWSDCGQ No1 Humidity"
    battery_level:
      name: "Xiaomi LYWSDCGQ No1 Battery Level"

ESPHomeのESP32のEDITを選択してesp32.yamlを開いて、一番下に追加。

インストールすると最後にXiami温湿度計が取得している温湿度が表示されます。

ダッシュボードに追加

アイコンが小さくて余計な文字があって、温湿度が小さいのでカスタマイズする。

設定 >ESP32 > エンティティで表示名・名前などを変更可能。

多少見やすくなった。↓

Mi Homeに登録されているガジェットを表示 Xiaomi Cloud Tokens Extractor

あとでわかったのですが、以下のツールを使うとMi HomeのMacアドレスやトークンがわかる。

GitHub - PiotrMachowski/Xiaomi-cloud-tokens-extractor: This tool/script retrieves tokens for all devices connected to Xiaomi cloud and encryption keys for BLE devices.
This tool/script retrieves tokens for all devices connected to Xiaomi cloud and encryption keys for BLE devices. - GitHu...

Wifi接続だとHome assistantでは使えるのが限られてきていて、Bluetooth接続だと設定すればHome assistantと接続可能っぽい。

今のところXiaomiのガジェットは温湿度計とXiaomi Smart Band 8・人感センサーがBluetooth接続。

あとゲートウェイ・電源プラグ2個はZigbee対応なので登録できた。他のXiaomi電源プラグ2個はWifi接続で登録できない。

bash <(curl -L https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/raw/master/run.sh)

#Mi Home(Xiaomi Miio Cloud)のIDとパスワードを入力してログインする。
Username (email or user ID):
Password:

#サーバーはCNを選んでいる。
Server (one of: cn, de, us, ru, tw, sg, in, i2) Leave empty to check all available:
cn

Devices found for server "cn" @ home "5012339001001570":
   ---------
   NAME:     Xiaomi Smart Band 8
   ID:       690177806
   MAC:      D0:62:2C:D9:FE:72
   TOKEN:    bc22341801ae157b80dc013bfbfe030e74
   MODEL:    miwear.watch.m66
   ---------
   NAME:     リビング 温湿度計
   ID:       blt.3.14eg3indge800
   BLE KEY:  5bcff4f69fdd46457cd3242aFFFFFFFF
   MAC:      4C:65:A8:DB:4E:75
   TOKEN:    9f2382476ac0f83cbf3ae3d520
   MODEL:    cleargrass.sensor_ht.dk1
   ---------
   NAME:     人感センサー
   ID:       lumi.158d000125a3d2
   MODEL:    lumi.sensor_motion.v2
   ---------
   NAME:     ルーターAX3600
   ID:       miwifi.a139d845-2982-7738-83a1-b379520c1967
   MAC:      88:C3:97:C1:1D:72
   TOKEN:    b6g3205FNvuJdzGq121mMwiWI4hYspRzoXHnYyaT+7ars=
   MODEL:    xiaomi.router.r3600
   ---------
   NAME:     掃除機 プラグ
   ID:       494403791
   MAC:      7C:C2:94:18:49:15
   IP:       192.168.31.133
   TOKEN:    eef3244a456a2f7b9264f7215949294945
   MODEL:    chuangmi.plug.212a01
   ---------
   NAME:     Mijia Smart DC Standing Fan 1X
   ID:       548829160
   MAC:      68:AB:BC:48:57:68
   IP:       192.168.31.140
   TOKEN:    d783256816e8a3934f38d839813075e17b
   MODEL:    dmaker.fan.p5c
   ---------
   NAME:     植物ホット プラグ
   ID:       494432603
   MAC:      7C:C2:94:18:B9:A1
   IP:       192.168.31.134
   TOKEN:    06023f2d5e890df7a2584d5ed9d0622974
   MODEL:    chuangmi.plug.212a01
   ---------
   NAME:     サーキュレーター
   ID:       lumi.158d0001a674d0
   MODEL:    lumi.sensor_switch.aq2
   ---------
   NAME:     3D Pri プラグ
   ID:       lumi.158d000128a61d
   MODEL:    lumi.plug.v1
   ---------
   NAME:     植物 ライト プラグ
   ID:       234970796
   MAC:      44:23:7C:5E:28:AC
   IP:       192.168.31.132
   TOKEN:    ae1239d2fee85ea7379149231c18a7c6cc
   MODEL:    chuangmi.plug.m3
   ---------
   NAME:     扇風機
   ID:       243112654
   MAC:      64:90:C1:AA:C9:4E
   IP:       192.168.31.184
   TOKEN:    72d235835cad5ca7759330e985d0db8f1c
   MODEL:    dmaker.fan.p11
   ---------
   NAME:     サーキュレーター
   ID:       410799334
   MAC:      58:B6:23:8E:F5:DB
   IP:       192.168.31.144
   TOKEN:    a61232829f15e4e5c1c46f9824f41fd1ba0
   MODEL:    zhimi.fan.fa1
   ---------
   NAME:     カメラ
   ID:       50781757
   MAC:      28:6C:07:76:62:D9
   IP:       192.168.123.101
   TOKEN:    46323443493172654a6447456456647569
   MODEL:    chuangmi.camera.xiaobai
   ---------
   NAME:     ゲートウェイ
   ID:       52271609
   MAC:      28:6C:07:89:1B:74
   IP:       192.168.31.141
   TOKEN:    f03232265bb51d18d121554612e239132659
   MODEL:    lumi.gateway.v3
   ---------
   NAME:     空気質検知器
   ID:       150144741
   MAC:      7C:49:EB:FA:DD:42
   IP:       192.168.31.146
   TOKEN:    595232a354b70356839523869417144364b
   MODEL:    cgllc.airmonitor.s1
   ---------


Press ENTER to finishXiaomi Miio Cloud

たくさんXiaomiのガジェットがあるが、Wifi接続でBluetooth接続の温湿度計のみ登録できた。

植物センサー HHCCJCY01 2個

Xiaomiの植物センサーHHCCJCY01がやってきたのでHome assistantに追加していく。この植物センサーちょっと高く2個で29ドルした。

パッケージが豪華
Xiaomi Mijia BLE Sensors
Instructions for setting up Xiaomi Mi Home (Mijia) bluetooth-based sensors in ESPHome.
ボタン電池のシールを取り除いて通電させる

Mi homeに登録

ESPHomeに登録する前にMi homeに登録する。

あまり元気がないオーガスタの状態をチェック
アレカヤシはかなり育てやすく強い、冬でも冷たい水をあげても平気

土壌湿度15%と少ないかな?でも冬(2月)なのであまり水をあげられない。くわえて肥料も少なそう、3月までちょっと我慢する。

Macアドレス取得

ESPHomeに登録するためにMacアドレス取得。上の項目で説明したXiaomi Cloud Tokens Extractorで取得する。

   NAME:     植物モニター
   ID:       blt.3.1gnf9evqk4g01
   BLE KEY:  b1e96f62b0ada3530cacbc01FFFFFFFF
   MAC:      5C:85:7E:B0:FF:54
   TOKEN:    847c15b02cda21c08892a461
   MODEL:    hhcc.plantmonitor.v1

   NAME:     植物モニター2
   ID:       blt.3.1gnfcames4g00
   BLE KEY:  59449c630150327cc09d7578FFFFFFFF
   MAC:      5C:85:7E:B0:FF:31
   TOKEN:    fc446250a93763a1cf26d46e
   MODEL:    hhcc.plantmonitor.v1

esp32.yaml

ESPHome >EDITでesp32.yamlを以下のように追加した。

追加したらSAVEしてINSTALL実行してしばらく待つ。

  - platform: xiaomi_hhccjcy01
    mac_address: '5C:85:7E:B0:FF:54'
    temperature:
      name: "Xiaomi HHCCJCY01 1 Temperature"
    moisture:
      name: "Xiaomi HHCCJCY01 1 Moisture"
    illuminance:
      name: "Xiaomi HHCCJCY01 1 Illuminance"
    conductivity:
      name: "Xiaomi HHCCJCY01 1 Soil Conductivity"
    battery_level:
      name: "Xiaomi HHCCJCY01 1 Battery Level"
      
  - platform: xiaomi_hhccjcy01
    mac_address: '5C:85:7E:B0:FF:31'
    temperature:
      name: "Xiaomi HHCCJCY01 2 Temperature"
    moisture:
      name: "Xiaomi HHCCJCY01 2 Moisture"
    illuminance:
      name: "Xiaomi HHCCJCY01 2 Illuminance"
    conductivity:
      name: "Xiaomi HHCCJCY01 2 Soil Conductivity"
    battery_level:
      name: "Xiaomi HHCCJCY01 2 Battery Level"

オーバービュー

オーバービュー > ダッシュボードを編集(右上点々) > +カードを追加(右下)で「一覧」を選んで以下のように追加しました。

最終的にこのような表示になった。

それにしても肥料が少ないなぁ、来週水やりの時に液肥を与えようか?これ信じていいのかな?

Khadas VIM1S容量不足:DockerをMicroSDに移動する

Khadas VIM1SはeMMCにDebian OSをインストールしてるが、eMMCが15GBしかないので、Home Assistantで容量が満タンになってしまったので、Docker(Home AssistantはDocker内で動いている)の全てをMicroSDに移動する。

設定 > システム >ストレージを見ると93%もディスクを使っている。

この状態だと新たになにも追加できないので、MicroSD128GBをKhadas VIM1Sにさして、Docker全体をMicroSDで運用する。

MicroSD フォーマット

Khadas VIM1SにMicroSDをさして認識されているかチェック

$ sudo fdisk -l
省略
Disk /dev/mmcblk1: 119.25 GiB, 128043712512 bytes, 250085376 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb6155bf4

ext4でフォーマットする。

$ sudo mkfs.ext4 /dev/mmcblk1
mke2fs 1.46.2 (28-Feb-2021)
Found a dos partition table in /dev/mmcblk1
Proceed anyway? (y,N) y
Creating filesystem with 31260672 4k blocks and 7815168 inodes
Filesystem UUID: d944ee42-3f84-4359-b2be-d2a442e61990
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks):
done
Writing superblocks and filesystem accounting information: done

UUID取得

フォーマットできたらUUIDを取得しておく。

$ sudo blkid | grep mmcblk1
/dev/mmcblk1: UUID="d944ee42-3f84-4359-b2be-d2a442e61990" BLOCK_SIZE="4096" TYPE="ext4"

MicroSDのマウントディレクトリ作成

sudo mkdir -p /mnt/microsd

マウントできるか確認。

$ sudo mount /dev/mmcblk1p1 /mnt/microsd
$ df -h | grep microsd
/dev/mmcblk1p1  120G  768K  120G   1% /mnt/microsd
$ sudo umount /mnt/microsd

ちゃんとマウントできているので一旦アンマウントする。

systemdで自動マウントする設定

こちらのページを参考に、DockerをMicroSDに移動する設定。

自動マウントするUSB外付けSSDにdockerのファイルを移動させる
sudo vim /etc/systemd/system/mnt-microsd.mount
[Unit]
Description=MicroSD

[Mount]
What=/dev/disk/by-uuid/d944ee42-3f84-4359-b2be-d2a442e61990
Where=/mnt/microsd

Type=ext4
Options=defaults
[Install]
WantedBy=multi-user.target

マウント ユニットは、制御するマウント ポイント ディレクトリにちなんで名前を付ける必要あり。

/mnt/microsdだったら、中のスラッシュを-に変えてmnt-microsd.mountというファイルにしないと「Where= setting doesn’t match unit name. Refusing.」エラーになる。

sudo vim /etc/systemd/system/mnt-microsd.automount
[Unit]
Description=Automount MicroSD

[Automount]
Where=/mnt/microsd

[Install]
WantedBy=multi-user.target

systemdで有効にする

sudo systemctl daemon-reload
sudo systemctl start mnt-microsd.mount
sudo systemctl start mnt-microsd.automount

sudo systemctl enable mnt-microsd.mount
sudo systemctl enable mnt-microsd.automount

マウントされているか確認

$ ls /mnt/microsd
lost+found
$ mount | grep /mnt
systemd-1 on /mnt/microsd type autofs (rw,relatime,fd=39,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
/dev/mmcblk1 on /mnt/microsd type ext4 (rw,relatime)

Docker停止

Home AssistantはDocker内で動いているのでDockerを一旦停止。

sudo systemctl stop docker
sudo systemctl stop docker.socket

Dockerを全てMicroSD にコピー

Dockerの内容を全てMicroSDにコピーする。

sudo cp -a /var/lib/docker /mnt/microsd/

MicroSDにシンボリックリンク作成

今までの/var/lib/dockerは一旦退避させて、MicroSDで/var/lib/dockerが動いたら削除する。

sudo mv /var/lib/docker{,.old}

/var/lib/dockerをMicroSDにシンボリックリンク作成

sudo ln -s /mnt/microsd/docker /var/lib/docker
sudo ls /var/lib/docker

Docker 依存関係追加

sudo cp /lib/systemd/system/docker.service /etc/systemd/system/

sudo vim /etc/systemd/system/docker.service

この行を
After=network-online.target docker.socket firewalld.service containerd.service time-set.target
以下に変更
After=network-online.target docker.socket firewalld.service containerd.service time-set.target mnt-microsd.mount

Docker再起動

sudo systemctl daemon-reload
sudo systemctl start docker

$ sudo docker ps
CONTAINER ID   IMAGE                                                      COMMAND               CREATED       STATUS          PORTS                                   NAMES
d917d267df26   ghcr.io/home-assistant/aarch64-hassio-observer:2023.06.0   "/usr/bin/observer"   2 weeks ago   Up 25 seconds   0.0.0.0:4357->80/tcp, :::4357->80/tcp   hassio_observer

古いDocker削除

うまくHome Assistantが起動したら、古いDockerを削除してeMMCの容量を開放する。

$ sudo rm -r /var/lib/docker.old

設定 > システム >ストレージを見ると↓39%弱まで減った。

これでしばらくKhadas VIM1SでHome Assistantを使えそう。

InfluxDBサーバーにデータ送信

温湿度計などセンシングしてHome Assistantが取得したデータを別サーバーのRaspberry pi5のInfluxDBに送信して、データをGrafanaで表示するまでやってみました。

InfluxDBは「1」系を使ってます。2への移行はかなり難しいのでやってない。

configuration.yaml設定

特にインストールしなくてもconfiguration.yamlに設定するだけでOK。

override_measurement: stateにしたらmeasurementがstateになった。(当たり前か、)

普段使っているmeasurementはair5ではデータは保存されなかったので、default_measurement: air5は必要ないかもしれません。

influxdb:
  host: 192.168.31.53
  port: 8086
  database: sensor
  username: root
  password: Pass
  max_retries: 3
  default_measurement: air5
  override_measurement: state
  tags:
    source: HA
    place: homeassistant
    host: khadas_vim1s
  include:
    entities:
# Qingping Air
      - sensor.cgllc_s1_dd42_tempair
      - sensor.cgllc_s1_dd42_humiair
      - sensor.cgllc_s1_dd42_tvoc
      - sensor.cgllc_s1_dd42_co2
#ベランダ
      - sensor.0x881a14fffef01cf1_tempve
      - sensor.0x881a14fffef01cf1_humidity
#キッチン
      - sensor.0x28dba7fffe80a286_tempki
      - sensor.0x28dba7fffe80a286_humiki
#リビング
      - sensor.esp32_xiaomi_lywsdcgq_no1_templi
      - sensor.esp32_xiaomi_lywsdcgq_no1_humili
 #洗面所
      - sensor.0x881a14fffef47f71_tempsen
      - sensor.0x881a14fffef47f71_humisen

これでデータをInfluxDBに送信できた。

Grafana

データが他のInfluxDBとちょっと違うので注意が必要。

Home Assistantから送信されたデータは全てfieldがvalueになり、entity_idでエンティティを指定する。

例えばQingping Air Monitorのco2の場合は、entity_idで絞り込んで「cgllc_s1_dd42_co2」を選択したら表示された。

SELECT "value" FROM "state" WHERE ("entity_id"::tag = 'cgllc_s1_dd42_co2') 
  • measurement:state
  • field:value
  • entity_id:ここでエンティティを選択

このようになりました。通常とちょっと違うがデータが受信できて絞り込みできるので問題ない。

データは温度などが変わらないとHome Assistantから送信されないようです。なのであまり変化しないデータはずっと送られてこない。

Grafanaはこのようになりました。データが増えて嬉しい。

Advanced SSH & Web Terminal 導入

Advanced SSH & Web Terminal インストール

設定 > アドオン > アドオンストア(右下)で「SSH」で出てきます、インストールを押す。

Dockerにログインしてauthorized_keys取得

Advanced SSH & Web TerminalはSSHにログインするときにパスワードではなく、authorized_keysを使わないとエラーになる?みたいなのでauthorized_keysを取得します。

sudo docker exec -it homeassistant /bin/bash
ssh-keygen -t rsa
#パスワードなど無しで全てリターン
#id_rsa.pubが生成される
cat /root/ssh/id_rsa.pub
ssh-rsa AA省略9QZ5JGE= root@homeassistant

上記に表示されたssh-rsa Aから=までをコピーする。

Advanced SSH & Web Terminal設定

Advanced SSH & Web Terminalの上の設定タブを開いて以下のようにします。

authorized_keysは先ほどコピーした文字列をペーストする。

ポートは他のSSHで22を使っている時が多いので2222など別のポートにしておく。

DockerでログインしなくてもHome assistantの中身を操作できるようになった♪

ロボット掃除機はHoniture Q6 ProでHoniture Q6 LiteはHome assistantで使えそうですが、Proは?無理かな?

この記事は複数のページに別れています

コメント