Sensör değerlerini grafiklendirmek için iyi araçlar nelerdir?


9

Ev otomasyonu için Ev Asistanı kullanıyorum, bazı temel grafik yetenekleri var, ancak sadece son 24 saat. Hem ince ayrıntı düzeyinde hem de uzun süreler boyunca grafikler oluşturmak istiyorum.

Bodrum katında puro içtiğim bir ev ofisim var. Dumanı çeken ve odayı negatif basınçta tutan oldukça ciddi bir hava akışına sahip büyük bir emiş fanım var, böylece duman ve dumanlar evin diğer kısımlarına ulaşmıyor.

Farklı fan hızlarının bodrumdaki diğer odalardaki sıcaklığı nasıl etkilediğini ve dışarıdaki sıcaklıktan nasıl etkilendiğini görmekle ilgileniyorum, örneğin yaz vs kış.

Bunun için uzun süre boyunca çeşitli sıcaklık ve diğer sensör verilerini çizmem gerekiyor ve farklı sensör okumalarının nasıl ilişkili olduğunu (veya değil) görebilmeliyim.

Ev otomasyonu ve IoT sensörleri veya Ev Asistanı ile arayüzlenmesi kolay olan bazı iyi grafik araçları nelerdir?



3
Acaba bu soruyu sadece 'iyi araçlar' aramaktan ziyade özel probleminize çözüm istemek için yeniden yapılandırmanın daha iyi olup olmayacağını merak ediyorum - bunlar genellikle biraz geniş kabul edilir, ancak belirli bir kullanım senaryosuna odaklanmak daha spesifik olmaya yardımcı olur Yanıtlar.
Aurora0001

Yanıtlar:



8

Home Assistant için özel olarak SQLite veritabanına bağlanabilir ve özel grafikler oluşturmak için kendi grafik yazılımınızı (veya bir komut dosyasını) kullanabilirsiniz. Ev Yardımcısı günlüğü ile Python kullanımını gösteren matplotlib bunu yapmak için:

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

Veritabanı şemasına buradan ulaşabilirsiniz . İlgilendiğimiz şey devlet nesneleri ; entity_idilgilendiğiniz cihazı bilmelisiniz .

Python'u biliyorsanız, uyarlamak nispeten kolay olmalıdır ve hatta bir GUI veya daha güzel komut satırı arayüzü bile ekleyebilirsiniz. Yine de SQLite veritabanını sorgulayabilecek herhangi bir dil iyi çalışır.

Alternatif olarak, CSV'ye dışa aktarmayı ve bir e-tablo programı kullanmayı düşünebilirsiniz - şüphesiz bu otomatikleştirmek için daha zor olacaktır, ancak bir programcı değilseniz daha kullanıcı dostu olabilir.


1
Python'a aşinayım :) Öneri için teşekkürler, Home asistan veritabanına bakmayı düşünmedim.
Thomas Jensen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.