¿Cuáles son algunas buenas herramientas para graficar valores de sensores?


9

Estoy usando Home Assistant para mi domótica, tiene algunas capacidades gráficas básicas pero solo durante las últimas 24 horas. Me gustaría crear gráficos con granularidad fina y durante largos períodos de tiempo.

Tengo una oficina en casa en el sótano, donde fumo cigarros. Tengo un gran ventilador de extracción con un flujo de aire bastante serio que extrae el humo y mantiene la habitación a presión negativa para que el humo y los humos no lleguen a ninguna otra parte de la casa.

Estoy interesado en ver cómo las diferentes velocidades del ventilador afectan la temperatura en otras habitaciones en el sótano, y cómo la temperatura exterior la afecta nuevamente, por ejemplo, verano vs invierno.

Para esto necesito trazar varios datos de temperatura y otros datos del sensor durante largos períodos de tiempo, y necesito poder ver cómo las diferentes lecturas del sensor se correlacionan (o no).

¿Cuáles son algunas buenas herramientas de gráficos que son fáciles de interactuar con la automatización del hogar y los sensores IoT o el Asistente del hogar?



3
Me pregunto si sería mejor replantear esta pregunta como pedir soluciones a su problema específico en lugar de solo buscar 'buenas herramientas'; a menudo se consideran un poco amplias, pero centrarse en un caso de uso específico ayuda a dar más información específica. respuestas
Aurora0001

Respuestas:



8

Para Home Assistant específicamente, puede conectarse a la base de datos SQLite y usar su propio software de gráficos (o un script) para generar gráficos personalizados. El blog de Home Assistant demuestra el uso de Python con matplotlib para hacer esto:

# 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')

El esquema de la base de datos está disponible aquí . Lo que nos interesa son los objetos de estado ; debe conocer el entity_iddispositivo que le interesa.

Si está familiarizado con Python, adaptarlo debería ser relativamente fácil, e incluso podría agregar una GUI o una interfaz de línea de comandos más agradable. Sin embargo, cualquier lenguaje que pueda consultar la base de datos SQLite funcionará bien.

Alternativamente, puede considerar exportar a CSV y usar un programa de hoja de cálculo; sin duda, esto será más difícil de automatizar, pero puede ser más fácil de usar si no es un programador.


1
Estoy familiarizado con Python :) Gracias por la sugerencia, no pensé en buscar en la base de datos del asistente de Inicio.
Thomas Jensen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.