Які хороші інструменти для графічного значення датчиків?


9

Я використовую програму Home Assistant для домашньої автоматизації, вона має деякі основні можливості графіки, але лише протягом останніх 24 годин. Я хотів би створити графіки як з тонкою деталізацією, так і протягом тривалих періодів часу.

У мене в підвалі домашній офіс, де я палю сигари. У мене є великий вентилятор витяжки з досить серйозним повітряним потоком, який витягує дим і тримає приміщення в негативному тиску, щоб дим і випаровування не потрапляли в інші частини будинку.

Мені цікаво побачити, як різні швидкості вентилятора впливають на температуру в інших приміщеннях підвалу, і як на неї знову впливає зовнішня температура, наприклад, літо проти зими.

Для цього мені потрібно побудувати різні дані про температуру та інші датчики протягом тривалих періодів часу, і я повинен мати можливість бачити, як співвідносяться (чи ні) різні показання датчика.

Які хороші графічні засоби, які легко поєднувати з домашньою автоматикою та датчиками IoT або Home Assistant?



3
Мені цікаво, чи може бути краще переосмислити це питання як прохання вирішити вашу конкретну проблему, а не просто шукати «хороших інструментів» - вони часто вважаються трохи широкими, але фокусування на конкретному випадку використання допомагає дати більш конкретні відповіді.
Aurora0001

Відповіді:



8

Спеціально для «Домашнього помічника» ви можете підключитися до бази даних SQLite і використовувати власне програмне забезпечення для графіки (або сценарій) для створення спеціальних графіків. Блог Home Assistant демонструє використання 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 та використання програми електронних таблиць - без сумніву, це буде складніше для автоматизації, але може бути більш зручним для користувачів, якщо ви не програміст.


1
Я знайомий з Python :) Дякую за пропозицію, я не думав шукати в базі даних Home Assistant.
Томас Дженсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.