Quels sont les bons outils pour représenter graphiquement les valeurs des capteurs?


9

J'utilise Home Assistant pour ma domotique, il a des capacités graphiques de base mais uniquement pour les dernières 24 heures. Je voudrais créer des graphiques à la fois avec une granularité fine et sur de longues périodes.

J'ai un bureau à domicile au sous-sol, où je fume des cigares. J'ai un grand ventilateur d'extraction avec un flux d'air assez sérieux qui aspire la fumée et maintient la pièce en pression négative afin que la fumée et les fumées n'atteignent aucune autre partie de la maison.

Je suis intéressé à voir comment les différentes vitesses de ventilation affectent la température dans d'autres pièces du sous-sol, et comment elle est à nouveau affectée par la température extérieure, par exemple l'été contre l'hiver.

Pour cela, je dois tracer diverses données de température et d'autres capteurs sur de longues périodes, et je dois être en mesure de voir comment les différentes lectures de capteur sont corrélées (ou non).

Quels sont les bons outils graphiques faciles à interfacer avec les capteurs domotiques et IoT ou le Home Assistant?



3
Je me demande s'il serait préférable de recadrer cette question comme demandant des solutions à votre problème spécifique plutôt que de simplement chercher de «bons outils» - ceux-ci sont souvent considérés comme un peu larges, mais se concentrer sur un cas d'utilisation spécifique aide à donner plus de détails réponses.
Aurora0001

Réponses:



8

Pour Home Assistant en particulier, vous pouvez vous connecter à la base de données SQLite et utiliser votre propre logiciel graphique (ou un script) pour générer des graphiques personnalisés. Le blog Home Assistant montre l'utilisation de Python avec matplotlib pour ce faire:

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

Le schéma de la base de données est disponible ici . Ce qui nous intéresse, ce sont les objets d'état ; vous devez connaître le entity_idpériphérique qui vous intéresse.

Si vous êtes familiarisé avec Python, l'adaptation devrait être relativement facile et vous pourriez même ajouter une interface graphique ou une interface de ligne de commande plus agréable. Cependant, tout langage pouvant interroger la base de données SQLite fonctionnera correctement.

Alternativement, vous pourriez envisager d'exporter vers CSV et d'utiliser un tableur - cela sera sans doute plus difficile à automatiser, mais peut être plus convivial si vous n'êtes pas programmeur.


1
Je connais Python :) Merci pour la suggestion, je n'ai pas pensé à chercher dans la base de données de l'assistant d'accueil.
Thomas Jensen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.