DbLog: Unterschied zwischen den Versionen
(→Links: + Ergänzung von Link auf Heizleistung_und_Gasverbrauch als Beispiel für SVG aus DbLog) |
Keine Bearbeitungszusammenfassung |
||
Zeile 22: | Zeile 22: | ||
Unterstützte Datenbanksysteme (Auswahl): | Unterstützte Datenbanksysteme (Auswahl): | ||
* Sqlite | * Sqlite | ||
* | * MySQL | ||
* | * PostGreSql | ||
=== Tabellen === | === Tabellen === | ||
Zeile 38: | Zeile 38: | ||
* VALUE: actual reading extracted from event, e.g. 71 | * VALUE: actual reading extracted from event, e.g. 71 | ||
* UNIT: unit extracted from event, e.g. % | * UNIT: unit extracted from event, e.g. % | ||
Die Vorlagen zum Aufbau von Tabellen und Indices sind für jeden unterstützten Datenbanktyp hier zu finden: [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/dblog/ Link] | |||
== Integration von DBLog in eigene Module == | |||
=== Bereitstellung der UNITS === | |||
Mit der DbLog_SplitFn kann der Modulautor selbst festlegen, wie die Events des Moduls in die Bestandteile Reading/Value/Unit zerlegt werden um ein korrektes Logging per DbLog zu gewährleisten. | |||
Weitere Informationen siehe hier: [[DevelopmentModuleIntro#X_DbLog_splitFn]] | |||
== Links == | == Links == | ||
* [[Heizleistung_und_Gasverbrauch|Beispiel das DbLog-Daten für SVG-Plots verwendet]] | * [[Heizleistung_und_Gasverbrauch|Beispiel das DbLog-Daten für SVG-Plots verwendet]] |
Version vom 14. Januar 2015, 08:26 Uhr
Todo: Diese Seite muss noch vervollständigt werden. Informationen sind bisher verstreut, hauptsächlich über PGM3 dbLog und Neues Charting Frontend. |
DbLog | |
---|---|
Zweck / Funktion | |
Protokolliert Ereignisse in einer Datenbank | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Modulname | 93_DbLog.pm |
Ersteller | Tobias |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
DbLog protokolliert, im Unterschied zu FileLog, Fhem-Ereignisse in einer Datenbank.
Definition
DbLog wird durch 2 verschiedene Einträge aktiviert/definiert. In einer Datei namens db.conf werden in die Parameter für eine Verbindung zur Datenbank (host, username, password, etc.) hinterlegt. Diese Datei kann in einem beliebigen Verzeichnis angelegt werden. Das DbLog Device wird dann in der fhem.cfg definiert mit
define <name> DbLog <configfilename> <regexp>
wobei <configfilename> dem Pfad zur zuvor angelegten db.conf entspricht. Ein Beispiel hierfür wäre:
define logdb DbLog ./db.conf .*:.*
Die Angabe von .*:.* bedeutet, dass sämtliche DeviceMessages (Messwerte, Batteriestatus, KeepAlives, etc.) in die Datenbank geschrieben werden. Dies führt u.U. dazu, dass die Datenbank auch mit vielen teils unrelevanten Werten gefüllt wird. Man kann daher die zu loggenden Werte einschränken, indem man genau angibt welche Werte übertragen werden sollen. Die erste Wildcard, also das erste .* entspricht dem in FHEM verwendeten Device-Namen. Die weite Wildcard dem vom Device ausgegebenen, zu loggenden Wert. Separiert werden beiden Angaben durch einen Doppelpunkt. Ein Beispiel um zwar alle definierten Devices zu erfassen, aber nur die Werte Temperatur, Ventilposition und Luftfeuchte in die Datenbank zu schreiben wäre:
define myDbLog DbLog ./db.conf .*:(temperature|valveposition|humidity).*
Datenbank
Unterstützte Datenbanksysteme (Auswahl):
- Sqlite
- MySQL
- PostGreSql
Tabellen
- current
- history
Tabellenlayout
DbLog ist auf eine feste Tabellenstruktur angewiesen. Man muss daher in seiner Datenbank eine Tabelle mit folgenden Spalten anlegen:
- TIMESTAMP: timestamp of event, e.g. 2007-12-30 21:45:22
- DEVICE: device name, e.g. Wetterstation
- TYPE: device type, e.g. KS300
- EVENT: event specification as full string, e.g. humidity: 71 (%)
- READING: name of reading extracted from event, e.g. humidity
- VALUE: actual reading extracted from event, e.g. 71
- UNIT: unit extracted from event, e.g. %
Die Vorlagen zum Aufbau von Tabellen und Indices sind für jeden unterstützten Datenbanktyp hier zu finden: Link
Integration von DBLog in eigene Module
Bereitstellung der UNITS
Mit der DbLog_SplitFn kann der Modulautor selbst festlegen, wie die Events des Moduls in die Bestandteile Reading/Value/Unit zerlegt werden um ein korrektes Logging per DbLog zu gewährleisten. Weitere Informationen siehe hier: DevelopmentModuleIntro#X_DbLog_splitFn