Home Assistant 超神篇 - 告别不接地气的 History

声明:本文禁止转载!

欢迎加入 HA 技术讨论群:515348788

HA 中的历史也就是 History,原本是个非常好的设计。汇总设备一段时间的数值之后以可视化的形式呈现给大家,除了图标的颜色有些丑,其他都不错。然而千好万好,一到了国内环境就变了味。原因在于其加载了 Google API 用于加载可视化 JS 和 CSS,当然我们可以从云端直接下载相关文件,但是操作起来总是麻烦,而且涉及动态加载,文件本身总有变数。

时间序列数据库 InfluxDB 在 2 年前就已经被 HA 官方博客提及,配合 Grafana 可以成为数据可视化的替代选择。然而时过境迁,Grafana 最新版对包括树莓派在内的 armhf 架构设备支持度较差,而 InfluxDB 早已推出了自己的数据可视化平台,和 Grafana 有的一拼。如果你还照着 HA 论坛上老旧的教程和帖子操作,很快就会发现部署在 8083 端口的 Web UI 早已仙去。

本次的教程就教导大家如何在系统中安装最新版本的 InfluxDB 并且利用原生可视化平台展示数据。

老样子,先上最终效果吧:

可以看出对比原生 History 的优势有:

  • 大文字展示数值
  • 折线图与文字同时展示
  • 鼠标拖拽缩放深入指定时间数据
  • 数据展示最长至 30 日,最短精确到 5 分钟
  • 高大上的 GUI

下面开始正式教程:

安装 InfluxDB

InfluxDB 发展至今已经从单一的数据库演变成了集成平台,通过提供、整理、可视化 InfluxDB 上的数据。

名称 功能 默认端口
InfluxDB 数据库 8086
Kapacitor 数据处理 9092
Chronograf 数据展示 8888
Telegraf 数据收集 8086

当然,所有的一切始于 InfluxDB 数据库本身的安装,打开设备终端,输入以下指令:

1
2
3
4
5
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install influxdb
sudo systemctl start influxdb

以上的指令基于 Hassbian Stretch 版树莓派,下同。使用 Debian 系统的用户可参考,适当变通。例如如果你使用的是 Debian 8 Jessie 的话,那么第三行指令则应为:

1
test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

其他平台安装方法详见 官方文档

安装完成后,默认的配置文件存放于 /etc/influxdb/influxdb.conf,按正常的安装步骤我们应该逐步新建一个数据库,当然如果你有其他项目的需求可以着手开始,但是这里我们要利用 Home Assistant 本身的数据库。

在接入 Home Assistant 本身前,我们必须安装其他三个工具完成整个数据链处理的闭环。

上步的教程用了 apt 工具安装 InfluxDB,实际中我们也可以使用 dpkg 完成安装,结合剩余三个工具的安装,以下是在树莓派 Raspbian Stretch 上完整的平台安装方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.2.4_armhf.deb
sudo dpkg -i influxdb_1.2.4_armhf.deb
sudo systemctl start influxdb
wget https://dl.influxdata.com/kapacitor/releases/kapacitor_1.3.1_armhf.deb
sudo dpkg -i kapacitor_1.3.1_armhf.deb
sudo systemctl start kapacitor
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.3.2-1_armhf.deb
sudo dpkg -i telegraf_1.3.2-1_armhf.deb
sudo systemctl start telegraf
wget https://dl.influxdata.com/chronograf/releases/chronograf_1.3.3.0_armhf.deb
sudo dpkg -i chronograf_1.3.3.0_armhf.deb
sudo systemctl start chronograf

如果你使用的是 arm64 等其他架构设备,注意替换指令中的 armhf

完成上述操作,你就在终端中安装了整个 InfluxDB 平台,现在打开 http://localhost:8888,一个漂亮的欢迎界面就展现在你眼前了:

中间的用户名和密码可以留空,名称随便取,其余的照着截图填即可,点击添加后,我们就进入了 InfluxDB 的前端控制面板。

点击左侧栏第 2 个图标 (Host List),点选唯一的 Host,一个系统监测面板就出现了:

是不是挺酷炫的?接下来我们就让 Home Assistant 的数据也呈现上述效果。

接入 HA 数据库

处理数据之前,我们首先要接入 Home Assistant 的数据库。

点选左侧栏倒数第 2 个图标,进入管理面板,选择右上角 Create Database,将数据库取名为 home_assistant 后点勾:

之后,我们回到 Home Assistant 的 configuration.yaml 配置文件,添加 InfluxDB:

1
influxdb:

因为我们都是用默认设置,无须其他配置,完整的参考配置语句是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
influxdb:
host: 192.168.1.190
port: 20000
database: DB_TO_STORE_EVENTS
username: MY_USERNAME
password: MY_PASSWORD
ssl: true
verify_ssl: true
default_measurement: state
exclude:
entities:
- entity.id1
- entity.id2
domains:
- automation
include:
entities:
- entity.id3
- entity.id4
tags:
instance: prod
source: hass

之后重启 HA,我们发现 HA 已经开始自动向 InfluxDB 推送数据了。

数据可视化

既然成功获取了 HA 的数据,我们的最终目标是可视化相关数据。

选择 InfluxDB 面板左侧栏第 3 个图标(Dashboard),点选右上角按钮新建面板。

之后,点选 Add a requery,选择左侧栏的 home_assistant.autogen,现在选择你想要在卡片中展示的数据,注意是否选用 function 函数,在右上方选择图表样式。可视化后的图标可以实时预览,十分方便。

之后,重复这步操作,往面板添加你想要监测和展示的数据,卡片的大小和位置可以鼠标直接拖拽变更。同时,监测的时间和更新的频率都可以通过右上方点选,可以说是十分方便了。

对比一下之前的 历史 面板,是不是有一种浓浓的嫌弃感?

接入面板

大功告成之后,我们可以使用 Ifame Panel 将其接入 HA,取代 History 的位置:

1
2
3
4
panel_iframe:
router:
title: '历史'
url: 'http://localhost:8888'

Google Chart,Bye Bye 了您嘞~~~

cxlwill wechat
欢迎扫码订阅“墨澜工作室”公众号,获取最新文章推送。