家のスマートホームでそろそろセンサー類を1つのアプリで総合的に操作できるように変えていきたいと思っていたところ、Home assistantがだいぶ使いやすくなったようなので導入してみます。
- Home Assistant:スマートホーム Khadas VIM1Sに導入 (現在このページにいます)
- Samba導入と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が軽いようなので安定して重くもなく使えています。
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が表示される。
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ブラウザでアクセスする。
以下のような画面になり、まずはユーザーや自宅情報など設定。
ログインすると↓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のところに以下のように設定追加。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 温湿度計(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アドレスやトークンがわかる。
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ドルした。
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に移動する設定。
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は?無理かな?
コメント