Какие есть хорошие инструменты для построения графиков значений датчиков?


9

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

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

Мне интересно посмотреть, как различные скорости вентилятора влияют на температуру в других комнатах в подвале, и как это снова влияет на температуру снаружи, например, лето против зимы.

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

Какие хорошие графические инструменты легко интегрируются с домашней автоматизацией и датчиками IoT или Home Assistant?



3
Интересно, может быть, лучше перефразировать этот вопрос как поиск решений вашей конкретной проблемы, а не просто поиск «хороших инструментов» - их часто считают немного более широкими, но сосредоточение на конкретном сценарии использования помогает дать более конкретный ответы.
Aurora0001

Ответы:



8

В частности, для Home Assistant вы можете подключиться к базе данных 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, адаптация должна быть относительно простой, и вы даже можете добавить графический интерфейс или более приятный интерфейс командной строки. Любой язык, который может запрашивать базу данных SQLite, будет работать нормально.

В качестве альтернативы вы можете рассмотреть возможность экспорта в CSV и использования программы для работы с электронными таблицами - без сомнения, это будет более сложной задачей для автоматизации, но может быть более удобным для пользователя, если вы не программист.


1
Я знаком с Python :) Спасибо за предложение, я не думал заглядывать в базу данных Home assistant.
Томас Дженсен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.