Một số công cụ tốt để vẽ đồ thị giá trị cảm biến là gì?


9

Tôi đang sử dụng Trợ lý tại nhà cho tự động hóa nhà của tôi, nó có một số khả năng vẽ đồ thị cơ bản nhưng chỉ trong 24 giờ qua. Tôi muốn tạo đồ thị cả với độ chi tiết tốt và trong thời gian dài.

Tôi có một văn phòng tại tầng hầm, nơi tôi hút xì gà. Tôi có một quạt hút gió lớn với luồng không khí khá nghiêm trọng giúp hút khói ra ngoài và giữ cho căn phòng ở áp suất âm để khói và khói không đến bất kỳ phần nào khác trong nhà.

Tôi quan tâm đến việc xem tốc độ quạt khác nhau ảnh hưởng đến nhiệt độ trong các phòng khác trong tầng hầm như thế nào và nó lại bị ảnh hưởng bởi nhiệt độ bên ngoài, ví dụ như mùa hè và mùa đông.

Đối với điều này, tôi cần vẽ biểu đồ nhiệt độ khác nhau và dữ liệu cảm biến khác trong thời gian dài và tôi cần có thể xem cách đọc các cảm biến khác nhau tương quan (hoặc không).

Một số công cụ đồ họa tốt dễ giao tiếp với tự động hóa nhà và cảm biến IoT hoặc Trợ lý gia đình là gì?



3
Tôi tự hỏi liệu có nên tốt hơn để điều chỉnh lại câu hỏi này không khi yêu cầu giải pháp cho vấn đề cụ thể của bạn thay vì chỉ tìm kiếm "công cụ tốt", những thứ này thường được coi là hơi rộng, nhưng tập trung vào một trường hợp sử dụng cụ thể giúp đưa ra cụ thể hơn câu trả lời.
Aurora0001

Câu trả lời:



8

Đối với Trợ lý tại nhà cụ thể, bạn có thể kết nối với cơ sở dữ liệu SQLite và sử dụng phần mềm vẽ đồ thị của riêng bạn (hoặc tập lệnh) để tạo biểu đồ tùy chỉnh. Các chủ Assistant viết blog cho thấy việc sử dụng Python với matplotlib để làm điều này:

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

Các lược đồ cơ sở dữ liệu có sẵn ở đây . Những gì chúng ta quan tâm là các đối tượng nhà nước ; bạn nên biết entity_idthiết bị bạn quan tâm.

Nếu bạn đã quen thuộc với Python, việc điều chỉnh tương đối dễ dàng và thậm chí bạn có thể thêm giao diện dòng lệnh GUI hoặc đẹp hơn. Bất kỳ ngôn ngữ nào có thể truy vấn cơ sở dữ liệu SQLite sẽ hoạt động tốt.

Ngoài ra, bạn có thể xem xét xuất sang CSV và sử dụng chương trình bảng tính. Không nghi ngờ gì nữa, việc này sẽ khó khăn hơn để tự động hóa, nhưng có thể thân thiện với người dùng hơn nếu bạn không phải là lập trình viên.


1
Tôi quen thuộc với Python :) Cảm ơn bạn đã gợi ý, tôi không nghĩ sẽ tìm trong cơ sở dữ liệu trợ lý gia đình.
Thomas Jensen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.