db_addon
Das Plugin bietet eine Funktionserweiterung zum Database Plugin und ermöglicht die einfache Auswertung von Messdaten. Basierend auf den Daten in der Datenbank können bspw. Auswertungen zu Verbrauch (heute, gestern, …) oder zu Minimal- und Maximalwerten gefahren werden. Diese Auswertungen werden zyklisch zum Tageswechsel, Wochenwechsel, Monatswechsel oder Jahreswechsel, in Abhängigkeit der Funktion erzeugt. Um die Zugriffe auf die Datenbank zu minimieren, werden diverse Daten zwischengespeichert.
Sind Items mit einem DatabaseAddon-Attribut im gleichen Pfad, wie das Item, für das das Database Attribut konfiguriert ist, wird dieses Item automatisch ermittelt. Bedeutet: Sind die Items mit dem DatabaseAddon-Attribute Kinder oder Kindeskinder oder Kindeskinderkinder des Items, für das das Database Attribut konfiguriert ist, wird dieses automatisch ermittelt.
Alternativ kann mit dem Attribute „db_addon_database_item“ auch der absolute Pfad des Items angegeben werden, für das das Database Attribut konfiguriert ist.
temperatur:
type: bool
database: yes
auswertung:
type: foo
heute_min:
type: num
db_addon_fct: heute_min
gestern_max:
type: num
db_addon_fct: heute_minus1_max
tagesmitteltemperatur_gestern:
type: num
db_addon_fct: heute_minus1_avg
db_addon_database_item: 'temperatur'
Anforderungen
Es muss das Database Plugin konfiguriert und aktiv sein. In den Plugin Parametern ist der Name der Konfiguration des Database-Plugins anzugeben. Damit ist auch eine etwaig definierte Instanz des Database-Plugins definiert. Die Konfiguration des DatabaseAddon-Plugin erfolgt automatisch bei Start.
Hinweis: Das Plugin selbst ist aktuell nicht multi-instance fähig. Das bedeutet, dass das Plugin aktuell nur eine Instanz des Database-Plugin abgebunden werden kann.
Hinweise
Das Plugin startet die Berechnungen der Werte nach einer gewissen (konfigurierbaren) Zeit (Attribut startup_run_delay) nach dem Start von shNG, um den Startvorgang nicht zu beeinflussen.
Bei Start werden automatisch nur die Items berechnet, für das das Attribute db_addon_startup gesetzt wurde. Alle anderen Items werden erst zur konfigurierten Zeit berechnet. Das Attribute db_addon_startup kann auch direkt am Database-Item gesetzt werden. Dabei wird das Attribut auf alle darunter liegenden db_addon-Items (bspw. bei Verwendung von structs) vererbt. Über das WebIF kann die Berechnung aller definierten Items ausgelöst werden.
Für sogenannte on_change Items, also Items, deren Berechnung bis zum Jetzt (bspw. verbrauch-heute) gehen, wird die Berechnung immer bei eintreffen eines neuen Wertes gestartet. Zu Reduktion der Belastung auf die Datenbank werden die Werte für das Ende der letzten Periode gecached.
Berechnungen werden nur ausgeführt, wenn für den kompletten abgefragten Zeitraum Werte in der Datenbank vorliegen. Wird bspw. der Verbrauch des letzten Monats abgefragt wobei erst Werte ab dem 3. des Monats in der Datenbank sind, wird die Berechnung abgebrochen.
Mit dem Attribut use_oldest_entry kann dieses Verhalten verändert werden. Ist das Attribut gesetzt, wird, wenn für den Beginn der Abfragezeitraums keinen Werte vorliegen, der älteste Eintrag der Datenbank genutzt.
Für die Auswertung kann es nützlich sein, bestimmte Werte aus der Datenbank bei der Berechnung auszublenden. Hierfür stehen 2 Möglichkeiten zur Verfügung:
Plugin-Attribut ignore_0: (list of strings) Bei Items, bei denen ein String aus der Liste im Pfadnamen vorkommt, werden 0-Werte (val_num = 0) bei Datenbankauswertungen ignoriert. Hat also das Attribut den Wert [‚temp‘] werden bei allen Items mit ‚temp‘ im Pfadnamen die 0-Werte bei der Auswertung ignoriert.
Item-Attribut db_addon_ignore_value: (num) Dieser Wert wird bei der Abfrage bzw. Auswertung der Datenbank für dieses Item ignoriert.
Das Plugin enthält sehr ausführliche Logginginformation. Bei unerwartetem Verhalten, den LogLevel entsprechend anpassen, um mehr information zu erhalten.
Berechnungen des Plugins können im WebIF unterbrochen werden. Auch das gesamte Plugin kann pausiert werden. Dies kann bei starker Systembelastung nützlich sein.
mysql Datenbank
Bei Verwendung von mysql sollten einige Variablen der Datenbank angepasst werden, so dass die komplexeren Anfragen ohne Fehler bearbeitet werden.
Dazu folgenden Block am Ende der Datei /etc/mysql/my.cnf einfügen bzw den existierenden ergänzen.
[mysqld]
connect_timeout = 60
net_read_timeout = 60
wait_timeout = 28800
interactive_timeout = 28800
Konfiguration
Diese Plugin Parameter und die Informationen zur Item-spezifischen Konfiguration des Plugins sind unter Plugin ‚db_addon‘ Konfiguration beschrieben.
Die folgenden Kapitel wurde automatisch durch Ausführen des Skripts in der Datei ‚item_attributes_master.py‘ erstellt.
Nachfolgend eine Auflistung der möglichen Attribute für das Plugin im Format: Attribute: Beschreibung | Berechnungszyklus | Item-Type
db_addon_fct
verbrauch_heute: Verbrauch am heutigen Tag (Differenz zwischen aktuellem Wert und den Wert am Ende des vorherigen Tages) | Berechnung: onchange | Item-Type: num
verbrauch_tag: Verbrauch am heutigen Tag (Differenz zwischen aktuellem Wert und den Wert am Ende des vorherigen Tages) | Berechnung: onchange | Item-Type: num
verbrauch_woche: Verbrauch in der aktuellen Woche | Berechnung: onchange | Item-Type: num
verbrauch_monat: Verbrauch im aktuellen Monat | Berechnung: onchange | Item-Type: num
verbrauch_jahr: Verbrauch im aktuellen Jahr | Berechnung: onchange | Item-Type: num
verbrauch_last_24h: Verbrauch innerhalb letzten 24h | Berechnung: hourly | Item-Type: num
verbrauch_last_7d: Verbrauch innerhalb letzten 7 Tage | Berechnung: hourly | Item-Type: num
verbrauch_heute_minus1: Verbrauch gestern (heute -1 Tag) (Differenz zwischen Wert am Ende des gestrigen Tages und dem Wert am Ende des Tages davor) | Berechnung: daily | Item-Type: num
verbrauch_heute_minus2: Verbrauch vorgestern (heute -2 Tage) | Berechnung: daily | Item-Type: num
verbrauch_heute_minus3: Verbrauch heute -3 Tage | Berechnung: daily | Item-Type: num
verbrauch_heute_minus4: Verbrauch heute -4 Tage | Berechnung: daily | Item-Type: num
verbrauch_heute_minus5: Verbrauch heute -5 Tage | Berechnung: daily | Item-Type: num
verbrauch_heute_minus6: Verbrauch heute -6 Tage | Berechnung: daily | Item-Type: num
verbrauch_heute_minus7: Verbrauch heute -7 Tage | Berechnung: daily | Item-Type: num
verbrauch_heute_minus8: Verbrauch heute -8 Tage | Berechnung: daily | Item-Type: num
verbrauch_tag_minus1: Verbrauch gestern (heute -1 Tag) (Differenz zwischen Wert am Ende des gestrigen Tages und dem Wert am Ende des Tages davor) | Berechnung: daily | Item-Type: num
verbrauch_tag_minus2: Verbrauch vorgestern (heute -2 Tage) | Berechnung: daily | Item-Type: num
verbrauch_tag_minus3: Verbrauch heute -3 Tage | Berechnung: daily | Item-Type: num
verbrauch_tag_minus4: Verbrauch heute -4 Tage | Berechnung: daily | Item-Type: num
verbrauch_tag_minus5: Verbrauch heute -5 Tage | Berechnung: daily | Item-Type: num
verbrauch_tag_minus6: Verbrauch heute -6 Tage | Berechnung: daily | Item-Type: num
verbrauch_tag_minus7: Verbrauch heute -7 Tage | Berechnung: daily | Item-Type: num
verbrauch_tag_minus8: Verbrauch heute -8 Tage | Berechnung: daily | Item-Type: num
verbrauch_woche_minus1: Verbrauch Vorwoche (aktuelle Woche -1) | Berechnung: weekly | Item-Type: num
verbrauch_woche_minus2: Verbrauch aktuelle Woche -2 Wochen | Berechnung: weekly | Item-Type: num
verbrauch_woche_minus3: Verbrauch aktuelle Woche -3 Wochen | Berechnung: weekly | Item-Type: num
verbrauch_woche_minus4: Verbrauch aktuelle Woche -4 Wochen | Berechnung: weekly | Item-Type: num
verbrauch_monat_minus1: Verbrauch Vormonat (aktueller Monat -1) | Berechnung: monthly | Item-Type: num
verbrauch_monat_minus2: Verbrauch aktueller Monat -2 Monate | Berechnung: monthly | Item-Type: num
verbrauch_monat_minus3: Verbrauch aktueller Monat -3 Monate | Berechnung: monthly | Item-Type: num
verbrauch_monat_minus4: Verbrauch aktueller Monat -4 Monate | Berechnung: monthly | Item-Type: num
verbrauch_monat_minus12: Verbrauch aktueller Monat -12 Monate | Berechnung: monthly | Item-Type: num
verbrauch_jahr_minus1: Verbrauch Vorjahr (aktuelles Jahr -1 Jahr) | Berechnung: yearly | Item-Type: num
verbrauch_jahr_minus2: Verbrauch aktuelles Jahr -2 Jahre | Berechnung: yearly | Item-Type: num
verbrauch_rolling_12m_heute_minus1: Verbrauch der letzten 12 Monate ausgehend im Ende des letzten Tages | Berechnung: daily | Item-Type: num
verbrauch_rolling_12m_tag_minus1: Verbrauch der letzten 12 Monate ausgehend im Ende des letzten Tages | Berechnung: daily | Item-Type: num
verbrauch_rolling_12m_woche_minus1: Verbrauch der letzten 12 Monate ausgehend im Ende der letzten Woche | Berechnung: weekly | Item-Type: num
verbrauch_rolling_12m_monat_minus1: Verbrauch der letzten 12 Monate ausgehend im Ende des letzten Monats | Berechnung: monthly | Item-Type: num
verbrauch_rolling_12m_jahr_minus1: Verbrauch der letzten 12 Monate ausgehend im Ende des letzten Jahres | Berechnung: yearly | Item-Type: num
verbrauch_jahreszeitraum_minus1: Verbrauch seit dem 1.1. bis zum heutigen Tag des Vorjahres | Berechnung: daily | Item-Type: num
verbrauch_jahreszeitraum_minus2: Verbrauch seit dem 1.1. bis zum heutigen Tag vor 2 Jahren | Berechnung: daily | Item-Type: num
verbrauch_jahreszeitraum_minus3: Verbrauch seit dem 1.1. bis zum heutigen Tag vor 3 Jahren | Berechnung: daily | Item-Type: num
zaehlerstand_heute_minus1: Zählerstand / Wert am Ende des letzten Tages (heute -1 Tag) | Berechnung: daily | Item-Type: num
zaehlerstand_heute_minus2: Zählerstand / Wert am Ende des vorletzten Tages (heute -2 Tag) | Berechnung: daily | Item-Type: num
zaehlerstand_heute_minus3: Zählerstand / Wert am Ende des vorvorletzten Tages (heute -3 Tag) | Berechnung: daily | Item-Type: num
zaehlerstand_tag_minus1: Zählerstand / Wert am Ende des letzten Tages (heute -1 Tag) | Berechnung: daily | Item-Type: num
zaehlerstand_tag_minus2: Zählerstand / Wert am Ende des vorletzten Tages (heute -2 Tag) | Berechnung: daily | Item-Type: num
zaehlerstand_tag_minus3: Zählerstand / Wert am Ende des vorvorletzten Tages (heute -3 Tag) | Berechnung: daily | Item-Type: num
zaehlerstand_woche_minus1: Zählerstand / Wert am Ende der vorvorletzten Woche (aktuelle Woche -1 Woche) | Berechnung: weekly | Item-Type: num
zaehlerstand_woche_minus2: Zählerstand / Wert am Ende der vorletzten Woche (aktuelle Woche -2 Wochen) | Berechnung: weekly | Item-Type: num
zaehlerstand_woche_minus3: Zählerstand / Wert am Ende der aktuellen Woche -3 Wochen | Berechnung: weekly | Item-Type: num
zaehlerstand_monat_minus1: Zählerstand / Wert am Ende des letzten Monates (aktueller Monat -1 Monat) | Berechnung: monthly | Item-Type: num
zaehlerstand_monat_minus2: Zählerstand / Wert am Ende des vorletzten Monates (aktueller Monat -2 Monate) | Berechnung: monthly | Item-Type: num
zaehlerstand_monat_minus3: Zählerstand / Wert am Ende des aktuellen Monats -3 Monate | Berechnung: monthly | Item-Type: num
zaehlerstand_jahr_minus1: Zählerstand / Wert am Ende des letzten Jahres (aktuelles Jahr -1 Jahr) | Berechnung: yearly | Item-Type: num
zaehlerstand_jahr_minus2: Zählerstand / Wert am Ende des vorletzten Jahres (aktuelles Jahr -2 Jahre) | Berechnung: yearly | Item-Type: num
zaehlerstand_jahr_minus3: Zählerstand / Wert am Ende des aktuellen Jahres -3 Jahre | Berechnung: yearly | Item-Type: num
minmax_last_24h_min: minimaler Wert der letzten 24h | Berechnung: daily | Item-Type: num
minmax_last_24h_max: maximaler Wert der letzten 24h | Berechnung: daily | Item-Type: num
minmax_last_24h_avg: durchschnittlicher Wert der letzten 24h | Berechnung: daily | Item-Type: num
minmax_last_7d_min: minimaler Wert der letzten 7 Tage | Berechnung: daily | Item-Type: num
minmax_last_7d_max: maximaler Wert der letzten 7 Tage | Berechnung: daily | Item-Type: num
minmax_last_7d_avg: durchschnittlicher Wert der letzten 7 Tage | Berechnung: daily | Item-Type: num
minmax_heute_min: Minimalwert seit Tagesbeginn | Berechnung: onchange | Item-Type: num
minmax_heute_max: Maximalwert seit Tagesbeginn | Berechnung: onchange | Item-Type: num
minmax_heute_avg: Durschnittswert seit Tagesbeginn | Berechnung: onchange | Item-Type: num
minmax_heute_minus1_min: Minimalwert gestern (heute -1 Tag) | Berechnung: daily | Item-Type: num
minmax_heute_minus1_max: Maximalwert gestern (heute -1 Tag) | Berechnung: daily | Item-Type: num
minmax_heute_minus1_avg: Durchschnittswert gestern (heute -1 Tag) | Berechnung: daily | Item-Type: num
minmax_heute_minus2_min: Minimalwert vorgestern (heute -2 Tage) | Berechnung: daily | Item-Type: num
minmax_heute_minus2_max: Maximalwert vorgestern (heute -2 Tage) | Berechnung: daily | Item-Type: num
minmax_heute_minus2_avg: Durchschnittswert vorgestern (heute -2 Tage) | Berechnung: daily | Item-Type: num
minmax_heute_minus3_min: Minimalwert heute vor 3 Tagen | Berechnung: daily | Item-Type: num
minmax_heute_minus3_max: Maximalwert heute vor 3 Tagen | Berechnung: daily | Item-Type: num
minmax_heute_minus3_avg: Durchschnittswert heute vor 3 Tagen | Berechnung: daily | Item-Type: num
minmax_tag_min: Minimalwert seit Tagesbeginn | Berechnung: onchange | Item-Type: num
minmax_tag_max: Maximalwert seit Tagesbeginn | Berechnung: onchange | Item-Type: num
minmax_tag_avg: Durschnittswert seit Tagesbeginn | Berechnung: onchange | Item-Type: num
minmax_tag_minus1_min: Minimalwert gestern (heute -1 Tag) | Berechnung: daily | Item-Type: num
minmax_tag_minus1_max: Maximalwert gestern (heute -1 Tag) | Berechnung: daily | Item-Type: num
minmax_tag_minus1_avg: Durchschnittswert gestern (heute -1 Tag) | Berechnung: daily | Item-Type: num
minmax_tag_minus2_min: Minimalwert vorgestern (heute -2 Tage) | Berechnung: daily | Item-Type: num
minmax_tag_minus2_max: Maximalwert vorgestern (heute -2 Tage) | Berechnung: daily | Item-Type: num
minmax_tag_minus2_avg: Durchschnittswert vorgestern (heute -2 Tage) | Berechnung: daily | Item-Type: num
minmax_tag_minus3_min: Minimalwert heute vor 3 Tagen | Berechnung: daily | Item-Type: num
minmax_tag_minus3_max: Maximalwert heute vor 3 Tagen | Berechnung: daily | Item-Type: num
minmax_tag_minus3_avg: Durchschnittswert heute vor 3 Tagen | Berechnung: daily | Item-Type: num
minmax_woche_min: Minimalwert seit Wochenbeginn | Berechnung: onchange | Item-Type: num
minmax_woche_max: Maximalwert seit Wochenbeginn | Berechnung: onchange | Item-Type: num
minmax_woche_minus1_min: Minimalwert Vorwoche (aktuelle Woche -1) | Berechnung: weekly | Item-Type: num
minmax_woche_minus1_max: Maximalwert Vorwoche (aktuelle Woche -1) | Berechnung: weekly | Item-Type: num
minmax_woche_minus1_avg: Durchschnittswert Vorwoche (aktuelle Woche -1) | Berechnung: weekly | Item-Type: num
minmax_woche_minus2_min: Minimalwert aktuelle Woche -2 Wochen | Berechnung: weekly | Item-Type: num
minmax_woche_minus2_max: Maximalwert aktuelle Woche -2 Wochen | Berechnung: weekly | Item-Type: num
minmax_woche_minus2_avg: Durchschnittswert aktuelle Woche -2 Wochen | Berechnung: weekly | Item-Type: num
minmax_monat_min: Minimalwert seit Monatsbeginn | Berechnung: onchange | Item-Type: num
minmax_monat_max: Maximalwert seit Monatsbeginn | Berechnung: onchange | Item-Type: num
minmax_monat_minus1_min: Minimalwert Vormonat (aktueller Monat -1) | Berechnung: monthly | Item-Type: num
minmax_monat_minus1_max: Maximalwert Vormonat (aktueller Monat -1) | Berechnung: monthly | Item-Type: num
minmax_monat_minus1_avg: Durchschnittswert Vormonat (aktueller Monat -1) | Berechnung: monthly | Item-Type: num
minmax_monat_minus2_min: Minimalwert aktueller Monat -2 Monate | Berechnung: monthly | Item-Type: num
minmax_monat_minus2_max: Maximalwert aktueller Monat -2 Monate | Berechnung: monthly | Item-Type: num
minmax_monat_minus2_avg: Durchschnittswert aktueller Monat -2 Monate | Berechnung: monthly | Item-Type: num
minmax_jahr_min: Minimalwert seit Jahresbeginn | Berechnung: onchange | Item-Type: num
minmax_jahr_max: Maximalwert seit Jahresbeginn | Berechnung: onchange | Item-Type: num
minmax_jahr_minus1_min: Minimalwert Vorjahr (aktuelles Jahr -1 Jahr) | Berechnung: yearly | Item-Type: num
minmax_jahr_minus1_max: Maximalwert Vorjahr (aktuelles Jahr -1 Jahr) | Berechnung: yearly | Item-Type: num
minmax_jahr_minus1_avg: Durchschnittswert Vorjahr (aktuelles Jahr -1 Jahr) | Berechnung: yearly | Item-Type: num
tagesmitteltemperatur_heute: Tagesmitteltemperatur heute | Berechnung: onchange | Item-Type: num
tagesmitteltemperatur_heute_minus1: Tagesmitteltemperatur des letzten Tages (heute -1 Tag) | Berechnung: daily | Item-Type: num
tagesmitteltemperatur_heute_minus2: Tagesmitteltemperatur des vorletzten Tages (heute -2 Tag) | Berechnung: daily | Item-Type: num
tagesmitteltemperatur_heute_minus3: Tagesmitteltemperatur des vorvorletzten Tages (heute -3 Tag) | Berechnung: daily | Item-Type: num
tagesmitteltemperatur_tag: Tagesmitteltemperatur heute | Berechnung: onchange | Item-Type: num
tagesmitteltemperatur_tag_minus1: Tagesmitteltemperatur des letzten Tages (heute -1 Tag) | Berechnung: daily | Item-Type: num
tagesmitteltemperatur_tag_minus2: Tagesmitteltemperatur des vorletzten Tages (heute -2 Tag) | Berechnung: daily | Item-Type: num
tagesmitteltemperatur_tag_minus3: Tagesmitteltemperatur des vorvorletzten Tages (heute -3 Tag) | Berechnung: daily | Item-Type: num
serie_minmax_monat_min_15m: monatlicher Minimalwert der letzten 15 Monate (gleitend) | Berechnung: monthly | Item-Type: list
serie_minmax_monat_max_15m: monatlicher Maximalwert der letzten 15 Monate (gleitend) | Berechnung: monthly | Item-Type: list
serie_minmax_monat_avg_15m: monatlicher Mittelwert der letzten 15 Monate (gleitend) | Berechnung: monthly | Item-Type: list
serie_minmax_woche_min_30w: wöchentlicher Minimalwert der letzten 30 Wochen (gleitend) | Berechnung: weekly | Item-Type: list
serie_minmax_woche_max_30w: wöchentlicher Maximalwert der letzten 30 Wochen (gleitend) | Berechnung: weekly | Item-Type: list
serie_minmax_woche_avg_30w: wöchentlicher Mittelwert der letzten 30 Wochen (gleitend) | Berechnung: weekly | Item-Type: list
serie_minmax_tag_min_30d: täglicher Minimalwert der letzten 30 Tage (gleitend) | Berechnung: daily | Item-Type: list
serie_minmax_tag_max_30d: täglicher Maximalwert der letzten 30 Tage (gleitend) | Berechnung: daily | Item-Type: list
serie_minmax_tag_avg_30d: täglicher Mittelwert der letzten 30 Tage (gleitend) | Berechnung: daily | Item-Type: list
serie_verbrauch_tag_30d: Verbrauch pro Tag der letzten 30 Tage | Berechnung: daily | Item-Type: list
serie_verbrauch_woche_30w: Verbrauch pro Woche der letzten 30 Wochen | Berechnung: weekly | Item-Type: list
serie_verbrauch_monat_18m: Verbrauch pro Monat der letzten 18 Monate | Berechnung: monthly | Item-Type: list
serie_zaehlerstand_tag_30d: Zählerstand am Tagesende der letzten 30 Tage | Berechnung: daily | Item-Type: list
serie_zaehlerstand_woche_30w: Zählerstand am Wochenende der letzten 30 Wochen | Berechnung: weekly | Item-Type: list
serie_zaehlerstand_monat_18m: Zählerstand am Monatsende der letzten 18 Monate | Berechnung: monthly | Item-Type: list
serie_waermesumme_monat_24m: monatliche Wärmesumme der letzten 24 Monate | Berechnung: monthly | Item-Type: list
serie_kaeltesumme_monat_24m: monatliche Kältesumme der letzten 24 Monate | Berechnung: monthly | Item-Type: list
serie_tagesmittelwert_0d: Tagesmittelwert für den aktuellen Tag | Berechnung: daily | Item-Type: list
serie_tagesmittelwert_stunde_0d: Stundenmittelwert für den aktuellen Tag | Berechnung: daily | Item-Type: list
serie_tagesmittelwert_stunde_30_0d: Stundenmittelwert für den aktuellen Tag | Berechnung: daily | Item-Type: list
serie_tagesmittelwert_tag_stunde_30d: Stundenmittelwert pro Tag der letzten 30 Tage (bspw. zur Berechnung der Tagesmitteltemperatur basierend auf den Mittelwert der Temperatur pro Stunde | Berechnung: daily | Item-Type: list
general_oldest_value: Ausgabe des ältesten Wertes des entsprechenden „Parent-Items“ mit database Attribut | Berechnung: no | Item-Type: num
general_oldest_log: Ausgabe des Timestamp des ältesten Eintrages des entsprechenden „Parent-Items“ mit database Attribut | Berechnung: no | Item-Type: list
kaeltesumme: Berechnet die Kältesumme für einen Zeitraum, db_addon_params: (year=optional, month=optional) | Berechnung: daily | Item-Type: num
waermesumme: Berechnet die Wärmesumme für einen Zeitraum, db_addon_params: (year=optional, month=optional) | Berechnung: daily | Item-Type: num
gruenlandtempsumme: Berechnet die Grünlandtemperatursumme für einen Zeitraum, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
wachstumsgradtage: Berechnet die Wachstumsgradtage auf Basis der stündlichen Durchschnittswerte eines Tages für das laufende Jahr mit an Angabe des Temperaturschwellenwertes (threshold=Schwellentemperatur) | Berechnung: daily | Item-Type: num
wuestentage: Berechnet die Anzahl der Wüstentage des Jahres, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
heisse_tage: Berechnet die Anzahl der heissen Tage des Jahres, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
tropennaechte: Berechnet die Anzahl der Tropennächte des Jahres, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
sommertage: Berechnet die Anzahl der Sommertage des Jahres, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
heiztage: Berechnet die Anzahl der Heiztage des Jahres, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
vegetationstage: Berechnet die Anzahl der Vegatationstage des Jahres, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
frosttage: Berechnet die Anzahl der Frosttage des Jahres, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
eistage: Berechnet die Anzahl der Eistage des Jahres, db_addon_params: (year=optional) | Berechnung: daily | Item-Type: num
tagesmitteltemperatur: Berechnet die Tagesmitteltemperatur auf Basis der stündlichen Durchschnittswerte eines Tages für die angegebene Anzahl von Tagen (timeframe=day, count=integer) | Berechnung: daily | Item-Type: list
db_request: Abfrage der DB: db_addon_params: (func=mandatory, item=mandatory, timespan=mandatory, start=optional, end=optional, count=optional, group=optional, group2=optional) | Berechnung: group | Item-Type: list
minmax: Berechnet einen min/max/avg Wert für einen bestimmen Zeitraum: db_addon_params: (func=mandatory, timeframe=mandatory, start=mandatory) | Berechnung: timeframe | Item-Type: num
minmax_last: Berechnet einen min/max/avg Wert für ein bestimmtes Zeitfenster von jetzt zurück: db_addon_params: (func=mandatory, timeframe=mandatory, start=mandatory, end=mandatory) | Berechnung: timeframe | Item-Type: num
verbrauch: Berechnet einen Verbrauchswert für einen bestimmen Zeitraum: db_addon_params: (timeframe=mandatory, start=mandatory end=mandatory) | Berechnung: timeframe | Item-Type: num
zaehlerstand: Berechnet einen Zählerstand für einen bestimmen Zeitpunkt: db_addon_params: (timeframe=mandatory, start=mandatory) | Berechnung: timeframe | Item-Type: num
db_addon_info
db_version: Version der verbundenen Datenbank | Berechnung: no | Item-Type: str
db_addon_admin
suspend: Unterbricht die Aktivitäten des Plugin | Berechnung: no | Item-Type: bool
recalc_all: Startet einen Neuberechnungslauf aller on-demand Items | Berechnung: no | Item-Type: bool
clean_cache_values: Löscht Plugin-Cache und damit alle im Plugin zwischengespeicherten Werte | Berechnung: no | Item-Type: bool
Beispiele
Verbrauch
Soll bspw. der Verbrauch von Wasser ausgewertet werden, so ist dies wie folgt möglich:
wasserzaehler:
zaehlerstand:
type: num
knx_dpt: 12
knx_cache: 5/3/4
eval: round(value/1000, 1)
database: init
struct:
- db_addon.verbrauch_1
- db_addon.verbrauch_2
- db_addon.zaehlerstand_1
Die Werte des Wasserzählerstandes werden in die Datenbank geschrieben und darauf basierend ausgewertet. Die structs ‚db_addon.verbrauch_1‘ und ‚db_addon.verbrauch_2‘ stellen entsprechende Items für die Verbrauchsauswerten zur Verfügung.
minmax
Soll bspw. die minimalen und maximalen Temperaturen ausgewertet werden, kann dies so umgesetzt werden:
temperature:
aussen:
nord:
name: Außentemp Nordseite
type: num
visu_acl: ro
knx_dpt: 9
knx_cache: 6/5/1
database: init
struct:
- db_addon.minmax_1
- db_addon.minmax_2
Die Temperaturwerte werden in die Datenbank geschrieben und darauf basierend ausgewertet. Die structs ‚db_addon.minmax_1‘ und ‚db_addon.minmax_2‘ stellen entsprechende Items für die min/max Auswertung zur Verfügung.
Verwendung von eigenen Zeiträumen
Die Verwendung vorgefertigter Attribute wie bspw „minmax_tag_minus1“ bieten eine gute und einfache Möglichkeit, entsprechende Werte ermitteln zu lassen. Mehr Möglichkeiten bieten die Attribute „minmax“, „minmax_last“, „zaehlerstand“ und „verbrauch“. Hier müssen die weiteren Parameterwerte über das Attribut „db_addon_params_dict“ oder „db_addon_params“ definiert werden.
Bei Verwendung von „db_addon_params“ müssen die Parameter im Format ‚kwargs‘ eingerahmt von Quotes angegeben werden: ‚func=min, timeframe=day‘ Bei Verwendung von „db_addon_params_dict“ müssen die Parameter im Format ‚dicht‘ eingerahmt von Quotes angegeben werden: „{‚func‘: ‚min‘, ‚timeframe‘: ‚day‘, ‚start‘: 1}“
Hier ein Beispiel:
temperature:
type: num
minmax_test_min_gestern:
name: Minimaler Wert gestern
type: num
db_addon_fct: minmax
db_addon_params_dict: "{'func': 'min', 'timeframe': 'day', 'start': 1}"
db_addon_startup: yes
minmax
Berechnet einen min/max/avg Wert für einen bestimmen Zeitraum. In den db_addon_params müssen folgenden Parameter definiert sein:
func: min/max/avg
timeframe: day/week/month/year
start: integer wert
Hier ein Beispiel:
minmax_min_gestern:
name: Minimaler Wert gestern
type: num
db_addon_fct: minmax
db_addon_params_dict: "{'func': 'min', 'timeframe': 'day', 'start': 1}"
minmax_last
‚Berechnet einen min/max/avg Wert für ein bestimmtes Zeitfenster von jetzt zurück. In den db_addon_params müssen folgenden Parameter definiert sein:
func: min/max/avg
timeframe: day/week/month/year
start: integer wert
end: integer wert
minmax_last_21:
type: num
db_addon_fct: minmax_last
db_addon_params_dict: "{'func': 'min', 'timeframe': 'day', 'start': 2, 'end': 1}"
verbrauch
Berechnet einen Verbrauchswert für einen bestimmen Zeitraum:
timeframe: day/week/month/year
start: integer wert
end: integer wert
verbrauch_gestern:
type: num
db_addon_fct: verbrauch
db_addon_params_dict: "{'timeframe': 'day', 'start': 2, 'end': 1}"
zaehlerstand
Berechnet einen Zählerstand für einen bestimmen Zeitpunkt:
timeframe: day/week/month/year
start: integer wert
zaehlerstand_gestern:
type: num
db_addon_fct: zaehlerstand
db_addon_params_dict: "{'timeframe': 'day', 'start': 1}"
Web Interface
Das WebIF stellt neben der Ansicht verbundener Items und deren Parameter und Werte auch Funktionen für die Administration des Plugins bereit.
Es stehen Button für:
Neuberechnung aller Items
Abbruch eines aktiven Berechnungslaufes
Pausieren des Plugins
Wiederaufnahme des Plugins
bereit.
Warnung
Das Auslösen einer kompletten Neuberechnung aller Items kann zu einer starken Belastung der Datenbank aufgrund vieler Leseanfragen führen.
db_addon Items
Dieser Reiter des Webinterface zeigt die Items an, für die ein DatabaseAddon Attribut konfiguriert ist.
db_addon Maintenance
Das Webinterface zeigt detaillierte Informationen über die im Plugin verfügbaren Daten an. Dies dient der Maintenance bzw. Fehlersuche. Dieser Tab ist nur bei Log-Level „Debug“ verfügbar.
Erläuterungen zu Temperatursummen
Grünlandtemperatursumme
Beim Grünland wird die Wärmesumme nach Ernst und Loeper benutzt, um den Vegetationsbeginn und somit den Termin von Düngungsmaßnahmen zu bestimmen. Dabei erfolgt die Aufsummierung der Tagesmitteltemperaturen über 0 °C, wobei der Januar mit 0.5 und der Februar mit 0.75 gewichtet wird. Bei einer Wärmesumme von 200 Grad ist eine Düngung angesagt.
Siehe: Wikipedia Grünlandtemperatursumme
Folgende Parameter sind möglich / notwendig:
db_addon_params: "year=current"
year: Jahreszahl (str oder int), für das die Berechnung ausgeführt werden soll oder „current“ für aktuelles Jahr (default: ‚current‘)
Wachstumsgradtage
Der Begriff Wachstumsgradtage (WGT) ist ein Überbegriff für verschiedene Größen. Gemeinsam ist ihnen, daß zur Berechnung eine Lufttemperatur von einem Schwellenwert subtrahiert wird. Je nach Fragestellung und Pflanzenart werden der Schwellenwert unterschiedlich gewählt und die Temperatur unterschiedlich bestimmt. Verfügbar sind die Berechnung über die Methoden:
„einfachen Durchschnitt der Tagestemperaturen“: Vergleich des Durchschnitts der täglichen Minimal- und Maximaltemperatur mit Schwellenwert. Die Maximaltemperaturen werden bei 30 °C gekappt.
„modifizierten Durchschnitt der Tagestemperaturen“: Vergleich des Durchschnitts der täglichen Minimal- und Maximaltemperatur mit Schwellenwert. Vor der Berechnung des Durchschnittes wird jede Temperatur, die den Schwellenwert unterschreitet, auf den Schwellenwert geändert. Maximaltemperaturen werden bei 30 °C gekappt.
siehe Wikipedia Wachstumsgradtag
Folgende Parameter sind möglich / notwendig:
db_addon_params: "year=current, variant=1, threshold=10"
year: Jahreszahl (str oder int), für das die Berechnung ausgeführt werden soll oder „current“ für aktuelles Jahr (default: ‚current‘)
variant: 0-Berechnung über „einfachen Durchschnitt der Tagestemperaturen“, 1-Berechnung über „modifizierten Durchschnitt (default: 0) der Tagestemperaturen“ // 10, 11 Ausgabe aus Zeitserie (default: 0)
threshold: Schwellentemperatur in °C (int) (default: 10)
Wärmesumme
Die Wärmesumme soll eine Aussage über den Sommer und die Pflanzenreife liefern. Es gibt keine eindeutige Definition der Größe „Wärmesumme“. Berechnet wird die Wärmesumme als Summe aller Tagesmitteltemperaturen über einem Schwellenwert ab dem 1.1. des Jahres.
siehe Wikipedia Wärmesumme
Folgende Parameter sind möglich / notwendig:
db_addon_params: "year=current, month=1, threshold=10"
year: Jahreszahl (str oder int), für das die Berechnung ausgeführt werden soll oder „current“ für aktuelles Jahr (default: ‚current‘)
month: Monat (int) des Jahres, für das die Berechnung ausgeführt werden soll (optional) (default: None)
threshold: Schwellentemperatur in °C (int) (default: 10)
Kältesumme
Die Kältesumme soll eine Aussage über die Härte des Winters liefern. Berechnet wird die Kältesumme als Summe aller negativen Tagesmitteltemperaturen ab dem 21.9. des Jahres bis 31.3. des Folgejahres.
siehe Wikipedia Kältesumme
Folgende Parameter sind möglich / notwendig:
db_addon_params: "year=current, month=1"
year: Jahreszahl (str oder int), für das die Berechnung ausgeführt werden soll oder „current“ für aktuelles Jahr (default: ‚current‘)
month: Monat (int) des Jahres, für das die Berechnung ausgeführt werden soll (optional) (default: None)
Tagesmitteltemperatur
Die Tagesmitteltemperatur wird auf Basis der stündlichen Durchschnittswerte eines Tages (aller in der DB enthaltenen Datensätze) für die angegebene Anzahl von Tagen (days=optional) berechnet.
Vorgehen bei Funktionserweiterung des Plugins bzw. Ergänzung weiterer Werte für Item-Attribute
Aufgrund der Vielzahl der möglichen Werte der Itemattribute, insbesondere des Itemattributes db_addon_fct, wurde die Erstellung/Update der entsprechenden Teile der plugin.yam sowie die Erstellung der Datei item_attributes.py, die vom Plugin verwendet wird, automatisiert.
Die Masterinformationen für alle Itemattribute sowie die Skripte zum Erstellen/Update der beiden Dateien sind in der Datei item_attributes_master.py enthalten.
Wichtig
Korrekturen, Erweiterungen etc. der Itemattribute sollten nur in der Datei item_attributes_master.py im Dict der Variable ITEM_ATTRIBUTS vorgenommen werden. Das Ausführen der Datei item_attributes_master.py (main) erstellt die item_attributes.py und aktualisiert die plugin.yaml entsprechend.