FHEM mit einem MySQL-Server verbinden.
Nach der Installation des MySQL-Servers kann auf diesem eine FHEM-Datenbank angelegt werden.
Anlegen der FHEM-Datenbankstruktur auf dem MySQL-Server
Um die FHEM-Funktion DbLog nutzen zu können müssen die Tabellen und Felder der Datenbank den DbLog-Spezifikationen entsprechen.
Daher ist es am einfachten die fertigen Spezifikationen einfach zu kopieren und in der MySQL-Konsole einzufügen.
CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword';
CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));
CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';
CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP);
mysql -p -u root
mysql> Copy & Paste der o.g. Spezifikationen
Die Datenbank sollte jetzt vollständig angelegt sein.
Kontrolle der angelegten Datenbankstruktur
Die nachfolgenden Befehle können direkt hinter dem mysql-Prompt eingegben werden.
Neue Datenbank create database MyDatabase;
Lösche Datenbank DROP DATABASE fhem;
Zeige alle Datenbanken: show databases;
Zeige Tabellen SHOW TABLES FROM fhem;
Datenbank auswählen USE fhem;
Zeige Datensätze SELECT * FROM current;
Zeige Verbindungen SHOW FULL PROCESSLIST;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| fhem |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
mysql> use fhem;
Database changed
mysql> show tables;
+----------------+
| Tables_in_fhem |
+----------------+
| current |
| history |
+----------------+
2 rows in set (0.00 sec)
Die beiden für FHEM benötigten Tabellen wurden angelegt.
Die MySQL-Datenbank ist nun für die Nutzung mir FHEM bereit!!
Erstellen der FHEM DbLog Konfigurationsdatei
nano /opt/fhem/db.conf
%dbconfig= (
connection => "mysql:database=fhem;host=xxx.xxx.xxx.xxx;port=3306",
user => "fhemuser",
password => "fhempassword", );
Jetzt kann das FHEM-DbLog Modul mit der MySQL-Datenbank verbunden werden.
Verbindern der FHEM-Instanz mit der MySQL-Datenbank
Erzeugen des DbLog-Devices in der FHEM-Kommandozeile
define myDbLog DbLog /opt/fhem/db.conf .*:.*
Mit ".*:.*" werden alle Ereignisser der gesamten FHEM Instanz automatisch in der Datenbank geloggt.
Es können aber natürlich auch Filter gesetzt werden.
define myDbLog DbLog /opt/fhem/db.conf .*:(temperature).*
Jetzt werden von allen Devices jeweils nur die "temperature" Events geloggt.
Wenn alles geklappt hat sollter der Device sich mit der Datenbank verbunden haben.
Kontrolle der geloggten Daten
Um zu sehen ob sich der FHEM-Device mit der Datenbank verbunden hat gehen wir wieder in die MySQL-Konsole
mysql -p -u root
mysql>
mysql> SHOW FULL PROCESSLIST;
+-----+----------+--------------------------------+------+---------+------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+----------+--------------------------------+------+---------+------+-------+-----------------------+
| 99 | fhemuser | Raspberry203.fritz.box:57353 | fhem | Sleep | 6 | | NULL |
| 100 | fhemuser | Raspberry201.fritz.box:37222 | fhem | Sleep | 9 | | NULL |
| 101 | fhemuser | PFANNE-NET-NAS.fritz.box:49137 | fhem | Sleep | 1032 | | NULL |
| 102 | root | localhost | fhem | Query | 0 | NULL | SHOW FULL PROCESSLIST |
+-----+----------+--------------------------------+------+---------+------+-------+-----------------------+
4 rows in set (0.00 sec)
mysql> select * from current;
+---------------------+------------------------------+---------+----------------------+-------------+---------+-------+
| TIMESTAMP | DEVICE | TYPE | EVENT | READING | VALUE | UNIT |
+---------------------+------------------------------+---------+----------------------+-------------+---------+-------+
| 2015-09-26 16:10:55 | Abstellraum_72F1F9010800 | OWTHERM | temperature: 20.625 | temperature | 20.625 | °C |
| 2015-09-26 16:13:55 | Arbeitszimmer_527F5D050000 | OWTHERM | temperature: 21.0625 | temperature | 21.0625 | °C |
| 2015-09-26 16:11:57 | Badezimmer_DA415D050000 | OWTHERM | temperature: 24.75 | temperature | 24.75 | °C |
| 2015-09-26 16:10:45 | Frischwasser_000006899e42 | GPIO4 | temperature: 16.75 | temperature | 16.75 | °C |
| 2015-09-26 16:10:50 | WP_Ruecklauf_00000689e447 | GPIO4 | temperature: 36.625 | temperature | 36.625 | °C |
| 2015-09-26 16:10:54 | WW_Austritt_0000068a0335 | GPIO4 | temperature: 34.125 | temperature | 34.125 | °C |
| 2015-09-26 16:10:58 | Speicher_Zulauf_0000068aed1d | GPIO4 | temperature: 37.312 | temperature | 37.312 | °C |
| 2015-09-26 16:10:59 | WW_Zirkulation_0000068a5327 | GPIO4 | temperature: 38.25 | temperature | 38.25 | °C |
| 2015-09-26 16:11:09 | Speicher135_0000068ac6ca | GPIO4 | temperature: 38.5 | temperature | 38.5 | °C |
| 2015-09-26 16:06:13 | Speicher180_0000068a933e | GPIO4 | temperature: 45.562 | temperature | 45.562 | °C |
| 2015-09-26 16:14:44 | WP_Vorlauf_00000689d882 | GPIO4 | temperature: 62.562 | temperature | 62.562 | °C |
| 2015-09-26 15:48:58 | Schlafzimmer_250C5D050000 | OWTHERM | temperature: 21.375 | temperature | 21.375 | °C |
| 2015-09-26 15:45:56 | Speicher000_0000068b06cd | GPIO4 | temperature: 27.437 | temperature | 27.437 | °C |
| 2015-09-26 16:06:02 | Speicher090_0000068ac91c | GPIO4 | temperature: 33.562 | temperature | 33.562 | °C |
| 2015-09-26 16:13:57 | Robin_69F1F9010800 | OWTHERM | temperature: 22.6875 | temperature | 22.6875 | °C |
| 2015-09-26 16:09:57 | Jamie_WZ_DA97FF010800 | OWTHERM | temperature: 22.375 | temperature | 22.375 | °C |
| 2015-09-26 16:11:02 | Wohnzimmer_2D795D050000 | OWTHERM | temperature: 23 | temperature | 23 | °C |
| 2015-09-26 16:13:57 | Jamie_SZ_0A125D050000 | OWTHERM | temperature: 22.6875 | temperature | 22.6875 | °C |
+---------------------+------------------------------+---------+----------------------+-------------+---------+-------+
18 rows in set (0.00 sec)
Erzeugen eines Plots mit Datenbankzugriff
Natürlich kann man jetzt auch mit einem Plot auf die Datenbankverbindung zugreifen um die geloggten Daten zu visualisieren.
define SVG_MyDbLog SVG LogDB:SVG_MyDbLog:HISTORY
Alle Datensätze aus der Tabelle "HISTORY" stehen jetzt im Plot zur Verfügung.
Wenn alles geklappt hat können jetzt alle Daten, Messwerte und Ereignisse komfortabel in einer eigenen MySQL-Datenbank gespeichert, sortiert, gefiltert und wieder angezeigt werden.
Kommentare (0)