有哪些用于绘制传感器值的好工具?

物联网 传感器 可视化
2021-06-27 01:21:10

我正在使用 Home Assistant 进行家庭自动化,它具有一些基本的绘图功能,但仅限于过去 24 小时。我想创建具有细粒度和长时间的图表。

我在地下室有一个家庭办公室,我在那里抽雪茄。我有一个很大的排风扇,气流非常大,可以将烟雾拉出并使房间保持负压,因此烟雾不会到达房屋的任何其他部分。

我有兴趣了解不同的风扇速度如何影响地下室其他房间的温度,以及它如何再次受到外部温度的影响,例如夏季与冬季。

为此,我需要在很长一段时间内绘制各种温度和其他传感器数据,并且我需要能够看到不同的传感器读数如何相关(或不相关)。

有哪些易于与家庭自动化和物联网传感器或家庭助理交互的优秀绘图工具?

2个回答

Domoticz 中的 InfluxDB

这是在 Raspberry Pi 上安装 Domoticz 时提供的数据库。它允许使用时间序列数据

Domoticz 使用它来对传感器的数据进行建模

在此处输入图片说明

特别是对于 Home Assistant,您可以连接到 SQLite 数据库并使用您自己的图形软件(或脚本)来生成自定义图形。家庭助理博客演示与使用Python的matplotlib做到这一点:

# Adapted from the linked code from Home Assistant.
import sqlite3
from matplotlib import dates
import matplotlib.pyplot as plt

import homeassistant.util.dt as dt

ENTITY_ID = 'entity id here'
START_DATE = 'date here'
END_DATE = 'date here'

values = []
timestamps = []

conn = sqlite3.connect('/home/ha/.homeassistant/home-assistant_v2.db')
data = conn.execute("SELECT state, last_changed FROM states WHERE entity_id = {} AND last_changed BETWEEN {} AND {}".format(ENTITY_ID, START_DATE, END_DATE))

for x in data:
    timestamps.append(dates.date2num(dt.parse_datetime(x[1])))
    values.append(float(x[0]))

plt.plot_date(x=timestamps, y=values, fmt="r-")
plt.ylabel('Value')
plt.xlabel('Time line')

plt.savefig('sensor.png')

数据库架构在此处可用我们感兴趣的是状态对象你应该知道entity_id你感兴趣的设备。

如果您熟悉 Python,那么适应它应该相对容易,您甚至可以添加 GUI 或更漂亮的命令行界面。不过,任何可以查询 SQLite 数据库的语言都可以正常工作。

或者,您可能会考虑导出到 CSV 并使用电子表格程序 - 毫无疑问,这对自动化会更具挑战性,但如果您不是程序员,可能会更加用户友好。