Home Assistant を使うためのTips'
<!-- markdown-mode-on -->
# **概要**
HAの公式ドキュメントとApexCharts Cardのドキュメントです。
**タイルカードの設定**
https://www.home-assistant.io/dashboards/tile/
**ApexCharts Cardの設定**
https://github.com/RomRider/apexcharts-card
ApexChartsのGitHubページは英語ですが、全オプションが網羅されています。設定で困ったときはここを見れば大抵解決します。
<a name="more"></a>
今日やったことを整理します。
---
## 2階センサーをHAで表示するまでの手順
### STEP1:ESP8266スケッチの変更
`sendSensorData()`関数にMQTT publishの4行を追加。
Blynk送信はそのまま残し、併用状態にした。
送信トピック:
- `home/nikai/temperature`
- `home/nikai/humidity`
- `home/nikai/pressure`
- `home/nikai/wbgt`
---
### STEP2:configuration.yamlにセンサーエンティティを追加
`mqtt:`の`sensor:`セクションに4つのセンサーを定義。
l
以下を`configuration.yaml`の`mqtt:`セクションに追加しました。
```yaml
sensor:
- name: "二階 温度"
state_topic: "home/nikai/temperature"
unit_of_measurement: "°C"
device_class: temperature
unique_id: "mqtt_nikai_temperature"
object_id: "nikai_temperature"
- name: "二階 湿度"
state_topic: "home/nikai/humidity"
unit_of_measurement: "%"
device_class: humidity
unique_id: "mqtt_nikai_humidity"
object_id: "nikai_humidity"
- name: "二階 気圧"
state_topic: "home/nikai/pressure"
unit_of_measurement: "hPa"
device_class: pressure
unique_id: "mqtt_nikai_pressure"
object_id: "nikai_pressure"
- name: "二階 WBGT"
state_topic: "home/nikai/wbgt"
unit_of_measurement: "°C"
unique_id: "mqtt_nikai_wbgt"
object_id: "nikai_wbgt"
```
**意味:**
- `state_topic`:ESP8266がMQTTで送るトピック名
- `device_class`:HAがセンサーの種類を認識するための分類
- `unique_id`・`object_id`:エンティティIDを固定するための設定
HAを再起動。
---
### STEP3:HAダッシュボード「センサー」を作成
「設定」→「ダッシュボード」→「+追加」→「空のダッシュボードを最初から作成」
タイトル「センサー」、サイドバーに追加をオン。
---
### STEP4:HACSのインストール
HAの標準機能ではグラフ表示が貧弱。<br>
見栄えのいいグラフを作れる**ApexCharts Card**のインストールは**HACS**(**H**ome **A**ssistant **C**ommunity **S**tore)というアドオンから行います。
TerminalでHACSインストールコマンドを実行。
```bash
wget -O - https://get.hacs.xyz | bash -
```
HAを再起動。GitHubで認証。
---
### STEP5:ApexCharts Cardのインストール
「HACS」→リストから「apexcharts-card」を選択→「ダウンロード」
ブラウザをReload。
---
### STEP6:ダッシュボードのレイアウト作成
「センサー」ダッシュボード→編集→「名前のないビュー」の鉛筆→「コードエディタを表示」
以下の構成でYAMLを貼り付け:
- 上段:タイル4つ横並び(温度・湿度・気圧・WBGT)
- 下段:ApexChartsグラフ2つ横並び(センサー履歴・気圧)
---
### STEP7:小数点桁数の設定
**タイルカード**
- 「設定」→「デバイスとサービス」→「エンティティ」→各センサーの歯車→「表示精度」で設定
- YAMLの`decimals`や`suggested_display_precision`は効かなかった
**ApexChartsグラフ**
- カードのYAMLの`series`内に`float_precision`を設定
- 「表示精度」との相乗効果ではなく、`float_precision`単独で効いています
---
#### つまり設定場所が2つに分かれています
| 表示箇所 | 設定方法 |
|---|---|
| タイルカード | GUIの「表示精度」 |
| ApexChartsグラフ | YAMLの`float_precision` |
これが現実です。統一された設定方法がないのはHAの設計の不統一さです。
### STEP8:ApexCharts Card 縦軸表示の設定場所
縦軸に関する設定はカード直下のyaxisにまとめて書く。
```yaml
yamlyaxis:
- min: 970 # 縦軸の最小値
max: 1030 # 縦軸の最大値
apex_config:
labels:
formatter: |
EVAL:function(val) { return val.toFixed(0) } # 小数点桁数
```
`toFixed(0)` → 整数、`toFixed(1)` → 小数点1桁
---
### STEP9:HAのデータ保存について
- HAのデータベース(home-assistant_v2.db)は`/config/`に保存→Raspberry Pi 3ではSDカード
- デフォルト保存期間は**10日間**(自動削除されるためSDカードがいっぱいになることはない)
- 電力計は2秒間隔、センサー系は60秒間隔でデータが蓄積される
- グラフのloading時間はSDカードのDB読み込み速度とブラウザ描画処理の両方が影響
## 関連リンク