rrd
Das RRDTool ist ein weitverbreitetes Tool um Zeitreihen von Messdaten aufzuzeichnen. Dieses Plugin stellt die Möglichkeit bereit Itemwerte an das RRDTool weiterzugeben.
Anforderungen
Notwendige Software
Das Python Paket rrdtool und die entsprechenden Libraries für das Betriebssystem müssen installiert sein.
Letzteres muss manuell erfolgen:
sudo apt-get install librrd-dev libpython3-dev
Das Python Paket wird über die requirements.txt automatisch beim Start installiert.
Vergleich zwischen Datenbank-Plugin, InfluxDB und rrdtool:
RRD + ein stabiles, zuverlässiges Werkzeug + wird in vielen Datenprotokollierungs- und Grafiktools verwendet - zähe Weiterentwicklung in den letzten Jahren - Werte werden nur in bestimmten Abständen aufgezeichnet und nicht dann, wenn eine Änderung eintritt
Datenbank-Plugin + Unterstützung für viele verschiedene Datenbanken wie SQLite, MySQL/MariaDB usw. + genaue Protokollierung der Änderungszeiten + mehr Analysefunktionalität + im SmartHomeNG Kern gut integriert - keine einstellbare Datenreduktion, nur Zeitbegrenzung der Aufzeichnung
InfluxDB-Plugin + Unterstützung für Influx Datenbank + speziell entwickelt für Zeitreihen + genaue Protokollierung der Änderungszeiten + unter Verwendung von Grafana sehr gute Analysefunktionalität + Datenreduktion voreinstellbar
Das RRD-Plugin und das Datenbank-Plugin können nur dann zusammen für ein Item verwendet werden, wenn beim RRD Plugin die Bereitstellung der Series Funktion unterdrückt wird.
Konfiguration
Die Plugin Parameter und die Informationen zur Item-spezifischen Konfiguration des Plugins sind unter Plugin ‚rrd‘ Konfiguration beschrieben.
Der Plugin Parameter step bestimmt den Zyklus mit dem alle Itemwerte aufgezeichnet werden.
Werteänderungen von Items zwischen den step werden nicht berücksichtigt.
Wichtig
Änderung gewünscht? Soll das noch geänderte werden das die Items auf jeden Fall aufgezeichnet und im Zeitbereich eines Step in die Datenbank geschrieben werden? Funktioniert das mit der lib.rrdtool?
Funktionen
Das Plugin stellt für jedes Item das für die Verwendung mit dem Plugin konfiguriert wurde eine Datenbankfunktion bereit.
sh.item.db(function, start, end='now')
Diese Funktion liefert Werte unter Berücksichtigung der nachfolgend erläuterten Funktion und dem Zeitrahmen start und end.
Derzeit unterstützte Funktionen für die Datenaufbereitung sind:
avg: Durchschnittswert
‚raw‘: wie Durchschnittswert, aufgenommen um den Parameter
rawbei der SmartVISU nicht ändern zu müssenmax: Maximalwert
min: Minimalwert
last: Letzter eingetragener Wert
Für das Zeitintervall müssen relative Anfangs- und Endzeitpunkte zum aktuellen Zeitpunkt angegeben werde.
Der Vorgabewert für das Ende ist now was einer relativen Verschiebung um 0 entspricht.
Die relativen Start- und Endzeitpunkte werden definiert durch <Nummer><Intervalleinheit>
Für die Intervalleinheit können folgende Kennzeichnungen verwendet werden:
i: minute
h: hour
d: day
w: week
m: month
y: year
Beispiele
Aussen:
name: Aussen
Temperatur:
type: num
rrd: init
rrd_min: 'yes'
rrd_max: 'yes'
Wohnzimmer:
Temperatur:
type: num
rrd: 'yes'
Versorgung:
Wasser:
type: num
rrd_type: counter
Um das Minimum der letzten 24 Stunden zu ermitteln:
sh.Aussen.Temperatur.db('min', '1d')
Um die Durchschnittstemperatur einer Woche zu ermitteln die vor genau 7 Tagen endete:
sh.Aussen.Temperatur.db('avg', '2w', '1w')
Web Interface
Aktuell hat das Plugin ein Webinterface zur Anzeige der Konfiguration der Items und des aktuellen Wertes.