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.

Plot

 


 

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)

Cancel or