Plugin ‚database‘ Konfiguration
Im folgenden sind etwaige Anforderungen und unterstützte Hardware beschrieben. Danach folgt die Beschreibung, wie das Plugin database konfiguriert wird. Außerdem ist im folgenden beschrieben, wie das Plugin in den Item Definitionen genutzt werden kann. [1]
Es handelt sich bei diesem Plugin um ein system Plugin.
Beschreibung
Database plugin, mit Unterstützung für SQLite 3 und MySQL
Anforderungen
Minimum SmartHomeNG Version: 1.9.3.2
Konfiguration
Im folgenden ist beschrieben, wie das Plugin database konfiguriert wird. Außerdem ist im folgenden beschrieben, wie das Plugin in den Item Definitionen genutzt werden kann.
Parameter
Das Plugin verfügt über folgende Parameter, die in der Datei ../etc/plugin.yaml
konfiguriert werden:
connect
Spezifiziert die Verbindungsparameter, welche genutzt werden, um die connect() Funktion des DB API 2 aufzurufen.
Datentyp: list(str)
copy_database
Nur für SQLite3: Auf True setzen, um beim Start von SmartHomeNG eine Kopie der Datenbank Datei zu erzeugen
Datentyp: bool
Standardwert: False
copy_database_name
Nur für SQLite3: Pfad/Name der Datenbank Kopie
Datentyp: str
count_logentries
Auf True setzen, um für das Web Interface die Anzahl der Logeinträge für jedes Item zu zählen und als extra Spalte anzuzeigen
Datentyp: bool
Standardwert: False
cycle
Dump Cycle bestimmt wie oft die Daten auf Platte geschrieben werden (in Sekunden).
Datentyp: int
Standardwert: 60
default_maxage
Falls dieser Parameter einen Wert größer 0 enthält: Standard maxage für Items, die kein maxage gesetzt haben
Datentyp: int
Standardwert: 0
Minimalwert: 0
driver
Spezifiziert das DB-API2 Treiber Modul
Datentyp: str
Standardwert: sqlite3
max_delete_logentries
Maximal auf einmal zu löschende Anzahl an Log Einträgen mit dem database_maxage Attribut, reduziert die Belastung der Datenbank bei alten Datenbeständen
Datentyp: int
Standardwert: 20000
Minimalwert: 1000
max_reassign_logentries
Maximal auf einmal neu zuzuweisende Anzahl an Log Einträgen, reduziert die Belastung der Datenbank bei großen Datenbeständen
Datentyp: int
Standardwert: 20
Minimalwert: 10
precision
Genauigkeit der aus der Datenbank ausgelesenen Werte (Nachkommastellen).
Datentyp: int
Standardwert: 2
prefix
Enthält ein Prefix welches vor die Datenbanktabellen des Plugins geschrieben wird
Datentyp: str
removeold_cycle
Remove old Cycle bestimmt wie oft die Prüfung auf veraltete Daten gestartet werden soll (in Sekunden).
Datentyp: int
Standardwert: 91
Item Attribute
Das Plugin unterstützt folgende Item Attribute, die in den Dateien im Verzeichnis ../items
verwendet werden:
database
Wenn auf ‚yes‘ oder ‚true‘ gesetzt, werden die Werte des Items in die Datenbank geschrieben. Wenn auf ‚init‘ gesetzt, wird zusätzlich beim Start von SmartHomeNG der Wert des Items aus der Datenbank gelesen.
Datentyp: str
database_acl
Muss normalerweise nicht konfiguriert werden, dann wird der Standard ‚rw‘ genutzt. Es kann nützlich sein Werte als ‚ro‘ zu deklarieren, falls die Datenbank Daten aus anderen Quellen enthält, die durch SmartNomeNG nicht verändert werden sollen.
Datentyp: str
Standardwert: rw
database_maxage
Maximales Alter (in Tagen) der Logeinträge, die für dieses Item gespeichert werden sollen. Falls nicht angegeben, werden die Werte unbegrenzt gespeichert.
Datentyp: num
Minimalwert: 0
database_write_on_shutdown
Muss normalerweise nicht konfiguriert werden, dann wird der Standard ‚True‘ genutzt. Das bedeutet, dass das item vor dem Beenden von smarthomeNG nochmal in die DB geschrieben wird (auch wenn keine echte Aenderung statt fand). Wird das Attribut auf ‚False‘ gesetzt, wird das Schreiben beim Beenden unterdrueckt.
Datentyp: bool
Standardwert: True
Logik Parameter
Das Plugin verfügt über folgende Parameter, die in der Datei ../etc/logic.yaml
konfiguriert werden:
Keine Logik Parameter in den Metadaten beschrieben - Bitte in der README nachsehen (siehe Fußnote)
Plugin Functions
Das Plugin verfügt über folgende öffentliche Funktionen, die z.B. in Logiken aufgerufen werden können.
cleanup()
Datenbank aufräumen (löscht ungenutzte Item/Log Einträge aus der Datenbank) Diese Methode entfernt alle Elemente und Logs aus der Datenbank der Elemente, welche derzeit nicht für die Protokollierung in der Datenbank konfiguriert sind. Vorsicht vor dieser Verwendung in einem Setup mit mehreren Plugin Instanzen, da eine Instanz die Items der anderen Instanz nicht kennt!
Die Funktion liefert kein Ergebnis
db()
Liefert das Lowlevel Datenbank-Objekt zurück
Ergebnistyp der Funktion: foo
deleteItem(id)
Löschen eines Item-Datenbankeintrags und von dessen Log Daten
Die Funktion liefert kein Ergebnis
id
Datenbank-ID des Items für das der Eintrag gelöscht werden soll
Datentyp: int
deleteLog(id, time, time_start, time_end, changed, changed_start, changed_end, cur)
Log-Datenbankeinträge für angegebene Datenbank-ID löschen
Die Funktion liefert kein Ergebnis
id
Datenbank-ID für die Einträge gelöscht werden sollen
Datentyp: int
time
Löschen auf angegebene Zeit eingeschränken (optional)
Datentyp: int
time_start
Löschen auf angegebene Startzeit eingeschränken eingeschränken (optional)
Datentyp: int
time_end
Löschen auf angegebene Endzeit eingeschränken eingeschränken (optional)
Datentyp: int
changed
Löschen auf angegebene Änderungszeit eingeschränken (optional)
Datentyp: int
changed_start
Löschen auf angegebene Start der Änderungszeit eingeschränken eingeschränken (optional)
Datentyp: int
changed_end
Löschen auf angegebene Ende der Änderungszeit eingeschränken eingeschränken (optional)
Datentyp: int
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo
dump(dumpfile, id, time, time_start, time_end, changed, changed_start, changed_end, cur)
Erzeugt einen Datenbank-Dump für angegebene Kriterien
Die Funktion liefert kein Ergebnis
dumpfile
Dateiname in die der Dump geschrieben werden soll
Datentyp: str
id
Dump auf angegebene Item-ID eingeschränken (optional)
Datentyp: int
time
Dump auf die angegebene Zeit eingeschränken (optional)
Datentyp: int
time_start
Dump auf die Startzeit eingeschränken (optional)
Datentyp: int
time_end
Dump auf die Endzeit eingeschränken (optional)
Datentyp: int
changed
Dump auf die angegebene Zeit einer Änderung eingeschränken (optional)
Datentyp: int
changed_start
Dump auf die angegebene Startzeit von Änderungen eingeschränken (optional)
Datentyp: int
changed_end
Dump auf die angegebene Endzeit von Änderungen eingeschränken (optional)
Datentyp: int
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo
id(item)
Liefert für das angegebene Item die Datenbank-ID zurück
Ergebnistyp der Funktion: int
item
Das Item-Objekt
Datentyp: foo
insertItem(name, cur)
Item-Datenbankeintrag für angegebene Datenbank-ID anlegen
Ergebnistyp der Funktion: int
name
Name des Items für das ein Eintrag angelegt werden soll
Datentyp: str
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo
insertLog(id, time, duration, val, it, changed, cur)
Log-Datenbankeintrag für angegebene Datenbank-ID anlegen
Die Funktion liefert kein Ergebnis
id
Datenbank-ID des Items für das ein Eintrag angelegt werden soll
Datentyp: int
time
Zeitpunkt an dem der Wert aktiv war
Datentyp: int
duration
Zeitintervall für den der Wert aktiv war
Datentyp: int
val
Der Wert der in die Datenbank geschrieben werden soll
Datentyp: str
it
Der Item-Typ des Wertes (‚str‘, ‚num‘, ‚bool‘)
Datentyp: str
changed
Zeitstempel der Änderung
Datentyp: int
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo
readItem(id, cur)
Item-Datenbankeintrag für angegebene Datenbank-ID auslesen Diese Methode liest die Item-Daten einschließlich aller Felder. Wenn der ID Parameter ein String ist, wird angenommen, dass das Element über den Item Namen ausgewählt werden soll und nicht die Item-ID.
Ergebnistyp der Funktion: foo
id
Datenbank-ID des Items für das der Eintrag ausgelesen werden soll
Datentyp: int/str
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo
readItems(cur)
Alle Item-Datenbankeinträge incl. aller Felder auslesen
Ergebnistyp der Funktion: foo
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo
readLog(id, time)
Log-Datenbankeintrag für angegebene Datenbank-ID auslesen
Ergebnistyp der Funktion: foo
id
Datenbank-ID des Logs für das der Eintrag gelesen werden soll
Datentyp: int
time
Zeitpunkt an dem der Wert aktiv war
Datentyp: int
readLogs(id, time, time_start, time_end, changed, changed_start, changed_end, cur)
Log-Datenbankeinträge für angegebene Datenbank-ID auslesen
Ergebnistyp der Funktion: foo
id
Datenbank-ID des Logs für das der Eintrag aktualisiert werden soll
Datentyp: int
time
Auslesen auf angegebene Zeit eingeschränken (optional)
Datentyp: int
time_start
Auslesen auf angegebene Startzeit eingeschränken eingeschränken (optional)
Datentyp: int
time_end
Auslesen auf angegebene Endzeit eingeschränken eingeschränken (optional)
Datentyp: int
changed
Auslesen auf angegebene Änderungszeit eingeschränken (optional)
Datentyp: int
changed_start
Auslesen auf angegebene Start der Änderungszeit eingeschränken eingeschränken (optional)
Datentyp: int
changed_end
Auslesen auf angegebene Ende der Änderungszeit eingeschränken eingeschränken (optional)
Datentyp: int
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo
updateItem(id, time, duration, val, it, changed, cur)
Item-Datenbankeintrag für angegebene Datenbank-ID aktualisieren
Die Funktion liefert kein Ergebnis
id
Datenbank-ID des Items für das der Eintrag aktualisiert werden soll
Datentyp: int
time
Zeitpunkt an dem der Wert aktiv war
Datentyp: int
duration
Zeitintervall für den der Wert aktiv war
Datentyp: int
val
Der Wert der in die Datenbank geschrieben werden soll
Datentyp: str
it
Der Item-Typ des Wertes (‚str‘, ‚num‘, ‚bool‘)
Datentyp: str
changed
Zeitstempel der Änderung
Datentyp: int
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo
updateLog(id, time, duration, val, it, changed, cur)
Log-Datenbankeintrag für angegebene Datenbank-ID aktualisieren
Die Funktion liefert kein Ergebnis
id
Datenbank-ID des Items für das der Eintrag aktualisiert werden soll
Datentyp: int
time
Zeitpunkt an dem der Wert aktiv war
Datentyp: int
duration
Zeitintervall für den der Wert aktiv war
Datentyp: int
val
Der Wert der in die Datenbank geschrieben werden soll
Datentyp: str
it
Der Item-Typ des Wertes (‚str‘, ‚num‘, ‚bool‘)
Datentyp: str
changed
Zeitstempel der Änderung
Datentyp: int
cur
Ein Datenbankcursor Objekt, falls vorhanden (optional)
Datentyp: foo