Quali sono alcuni buoni strumenti per rappresentare graficamente i valori dei sensori?


9

Sto usando Home Assistant per la mia domotica, ha alcune funzionalità grafiche di base ma solo nelle ultime 24 ore. Vorrei creare grafici sia con granularità fine che per lunghi periodi di tempo.

Ho un ufficio a casa nel seminterrato, dove fumo sigari. Ho una grande ventola di estrazione con un flusso d'aria piuttosto grave che estrae il fumo e mantiene la stanza in pressione negativa in modo che il fumo e i fumi non raggiungano altre parti della casa.

Sono interessato a vedere come le diverse velocità della ventola influenzano la temperatura in altre stanze nel seminterrato e come sia di nuovo influenzata dalla temperatura esterna, ad esempio estate vs inverno.

Per questo ho bisogno di tracciare vari dati di temperatura e altri sensori per lunghi periodi di tempo, e devo essere in grado di vedere come le diverse letture dei sensori sono correlate (o meno).

Quali sono alcuni buoni strumenti grafici che sono facili da interfacciare con l'automazione domestica e i sensori IoT o Home Assistant?



3
Mi chiedo se potrebbe essere meglio riformulare questa domanda come chiedere soluzioni al tuo problema specifico piuttosto che cercare "buoni strumenti" - questi sono spesso considerati un po 'ampi, ma concentrarsi su un caso d'uso specifico aiuta a dare più specifici risposte.
Aurora0001

Risposte:



8

In particolare per Home Assistant, è possibile connettersi al database SQLite e utilizzare il proprio software di rappresentazione grafica (o uno script) per generare grafici personalizzati. Il blog di Home Assistant mostra l'uso di Python con matplotlib per fare questo:

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

Lo schema del database è disponibile qui . Ciò a cui siamo interessati sono gli oggetti di stato ; dovresti conoscere il entity_iddispositivo a cui sei interessato.

Se hai familiarità con Python, adattarlo dovrebbe essere relativamente semplice e potresti persino aggiungere una GUI o un'interfaccia a riga di comando più gradevole. Tuttavia, qualsiasi linguaggio in grado di eseguire query sul database SQLite funzionerà correttamente.

In alternativa, potresti prendere in considerazione l'esportazione in CSV e l'utilizzo di un programma per fogli di calcolo, senza dubbio questo sarà più difficile da automatizzare, ma potrebbe essere più intuitivo se non sei un programmatore.


1
Conosco Python :) Grazie per il suggerimento, non ho pensato di cercare nel database dell'assistente Home.
Thomas Jensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.