Jakie są dobre narzędzia do wykresów wartości czujników?


9

Korzystam z Home Assistant do mojej automatyki domowej, ma ona pewne podstawowe funkcje graficzne, ale tylko przez ostatnie 24 godziny. Chciałbym tworzyć wykresy zarówno o drobnej ziarnistości, jak i przez długi czas.

W piwnicy mam domowe biuro, w którym palę cygara. Mam duży wentylator wyciągowy z dość poważnym przepływem powietrza, który wyciąga dym i utrzymuje pomieszczenie pod ujemnym ciśnieniem, dzięki czemu dym i opary nie docierają do innych części domu.

Interesuje mnie, jak różne prędkości wentylatora wpływają na temperaturę w innych pomieszczeniach w piwnicy i jak na nią wpływa temperatura zewnętrzna, np. Lato w porównaniu z zimą.

W tym celu muszę wykreślić różne dane dotyczące temperatury i innych czujników w długim okresie czasu i muszę być w stanie zobaczyć, jak korelują (lub nie) różne odczyty czujnika.

Jakie są dobre narzędzia do tworzenia wykresów, które można łatwo łączyć z automatyką domową i czujnikami IoT lub Home Assistant?



3
Zastanawiam się, czy lepiej byłoby przeformułować to pytanie, prosząc o rozwiązanie konkretnego problemu, a nie tylko szukając „dobrych narzędzi” - często są one uważane za nieco szerokie, ale skupienie się na konkretnym przypadku użycia pomaga podać bardziej szczegółowe odpowiedzi
Aurora0001

Odpowiedzi:



8

W przypadku Home Assistant możesz połączyć się z bazą danych SQLite i użyć własnego oprogramowania graficznego (lub skryptu) do generowania własnych wykresów. Home Asystent blog demonstruje użycie Python z matplotlib , aby to zrobić:

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

Schemat bazy danych jest dostępny tutaj . Interesują nas obiekty państwowe ; powinieneś znać entity_idurządzenie, które Cię interesuje.

Jeśli znasz język Python, dostosowanie powinno być stosunkowo łatwe, a nawet możesz dodać GUI lub ładniejszy interfejs wiersza poleceń. Jednak każdy język, który może wysłać zapytanie do bazy danych SQLite, będzie działał dobrze.

Alternatywnie, możesz rozważyć eksport do CSV i użycie programu do obsługi arkuszy kalkulacyjnych - bez wątpienia automatyzacja będzie trudniejsza, ale może być bardziej przyjazna dla użytkownika, jeśli nie jesteś programistą.


1
Znam Python :) Dzięki za sugestię, nie pomyślałem, aby zajrzeć do bazy danych asystenta domowego.
Thomas Jensen,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.