เครื่องมือที่ดีสำหรับการทำกราฟค่าเซ็นเซอร์มีอะไรบ้าง


9

ฉันใช้ Home Assistant สำหรับระบบอัตโนมัติที่บ้านของฉันมันมีความสามารถในการสร้างกราฟพื้นฐาน แต่มีเพียง 24 ชั่วโมงที่ผ่านมา ฉันต้องการสร้างกราฟด้วยความละเอียดและในระยะเวลานาน

ฉันมีสำนักงานที่บ้านในห้องใต้ดินที่ฉันสูบบุหรี่ซิการ์ ฉันมีพัดลมสกัดขนาดใหญ่ที่มีการไหลของอากาศที่รุนแรงซึ่งดึงควันออกมาและทำให้ห้องอยู่ในแรงดันลบดังนั้นควันและควันไม่ถึงส่วนอื่น ๆ ของบ้าน

ฉันสนใจที่จะเห็นว่าความเร็วพัดลมที่แตกต่างกันมีผลต่ออุณหภูมิในห้องอื่น ๆ ในชั้นใต้ดินอย่างไรและมันได้รับผลกระทบจากอุณหภูมิภายนอกอย่างไรเช่นในฤดูร้อนและฤดูหนาว

สำหรับเรื่องนี้ฉันต้องพล็อตอุณหภูมิและข้อมูลเซ็นเซอร์อื่น ๆ เป็นระยะเวลานานและฉันต้องสามารถดูว่าการอ่านเซ็นเซอร์ที่แตกต่างกันมีความสัมพันธ์กันอย่างไร (หรือไม่)

มีเครื่องมือสร้างกราฟที่ดีอะไรบ้างที่ง่ายต่อการเชื่อมต่อกับระบบอัตโนมัติภายในบ้านและเซ็นเซอร์ IoT หรือ Home Assistant?


2
ที่เกี่ยวข้อง: iot.stackexchange.com/questions/168/…
Helmar

3
ฉันสงสัยว่ามันอาจจะดีกว่าที่จะวางกรอบคำถามนี้ใหม่เพื่อขอคำตอบสำหรับปัญหาเฉพาะของคุณแทนที่จะแค่มองหา 'เครื่องมือที่ดี' - สิ่งเหล่านี้มักจะพิจารณาในวงกว้างเล็กน้อย แต่การมุ่งเน้นไปที่กรณีการใช้งานเฉพาะเจาะจง คำตอบ
Aurora0001

คำตอบ:


9

InfluxDB ใน Domoticz

นี่คือฐานข้อมูลที่ให้มาพร้อมกับการติดตั้ง Domoticz บน Raspberry Pi จะช่วยให้การใช้ข้อมูลที่มีอนุกรมเวลา

Domoticz ใช้สิ่งนี้เพื่อจำลองข้อมูลของเซ็นเซอร์

ป้อนคำอธิบายรูปภาพที่นี่


1
ว้าวนี่ดูเท่!
โทมัสเซ่น

8

สำหรับผู้ช่วยที่บ้านโดยเฉพาะคุณสามารถเชื่อมต่อกับฐานข้อมูล SQLite และใช้ซอฟต์แวร์สร้างกราฟของคุณเอง (หรือสคริปต์) เพื่อสร้างกราฟที่กำหนดเอง บ้านช่วยบล็อกสาธิตการใช้งานของงูใหญ่ที่มี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
โทมัสเซ่น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.