diff --git a/fhem/configDB.pm b/fhem/configDB.pm
index 15722ed0d..5b0a02e1b 100644
--- a/fhem/configDB.pm
+++ b/fhem/configDB.pm
@@ -1,4 +1,45 @@
# $Id$
+##############################################################################
+#
+# configDB.pm
+#
+# A fhem library to enable configuration from sql database
+# instead of plain text file, e.g. fhem.cfg
+#
+# READ COMMANDREF DOCUMENTATION FOR CORRECT USE!
+#
+# Copyright: betateilchen ®
+# e-mail: fhem.development@betateilchen.de
+#
+# This file is part of fhem.
+#
+# Fhem is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# Fhem is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with fhem. If not, see .
+#
+##############################################################################
+#
+# ChangeLog
+#
+# 2014-03-01 - SVN 5080 - initial release of interface inside fhem.pl
+# - initial release of configDB.pm
+#
+# 2014-03-02 - added template files for sqlite in contrib/configDB
+# - updated commandref (EN) documentation
+# - added commandref (DE) documentation
+#
+##############################################################################
+#
+
use DBI;
##################################################
@@ -391,7 +432,6 @@ sub cfgDB_Migrate {
1;
=pod
-not to be translated
=begin html
@@ -422,10 +462,10 @@ not to be translated
The database tables will be created automatically.
Create a configuration file containing the connection string to access database.
- IMPORTANT:
+ IMPORTANT:
This file must be named "configDB.conf"
- This file must be located in your fhem main directory, e.g. /opt/fhem
+ This file must be named "configDB.conf"
+ This file must be located in your fhem main directory, e.g. /opt/fhem
@@ -544,6 +584,9 @@ Ver 0 always indicates the currently running configuration.
Author's notes
+ - You can find two template files for datebase and configfile (sqlite only!) for easy installation.
+ Just copy them to your fhem installation directory (/opt/fhem) and have fun.
+
- The frontend option "Edit files"->"config file" will be removed when running configDB.
- Please be patient when issuing a "save" command
@@ -560,3 +603,178 @@ Ver 0 always indicates the currently running configuration.
=end html
+
+=begin html_DE
+
+
+configDB
+
+ Seit version 5079 unterstützt fhem die Verwendung einer SQL Datenbank zum Abspeichern der kompletten Konfiguration
+ Dadurch kann man auf alle cfg Dateien, includes usw. verzichten und die daraus immer wieder resultierenden Probleme vermeiden.
+ Desweiteren gibt es damit eine Versionierung von Konfigurationen und die Möglichkeit,
+ jederzeit eine ältere Version wiederherstellen zu können.
+ Der Zugriff auf die Datenbank erfolgt über die perl-eigene Datenbankschnittstelle DBI.
+
+ Voraussetzungen / Installation
+
+ - Es muss eine SQL Datenbank verfügbar sein, untsrstützt werden SQLITE, MYSQL und POSTGRESQLL.
+ - Das zum Datenbanktype gehörende DBD Modul muss in perl installiert sein,
+ für sqlite3 auf einem Debian System z.B. das Paket libdbd-sqlite3-perl
+ - Eine leere Datenbank muss angelegt werden, z.B. in sqlite3:
+
+ mba:fhem udo$ sqlite3 configDB.db
+
+ SQLite version 3.7.13 2012-07-17 17:46:21
+ Enter ".help" for instructions
+ Enter SQL statements terminated with a ";"
+ sqlite> pragma auto_vacuum=2;
+ sqlite> .quit
+
+ mba:fhem udo$
+
+ - Die benötigten Datenbanktabellen werden automatisch angelegt.
+ - Eine Konfigurationsdatei für die Verbindung zur Datenbank muss angelegt werden.
+
+ WICHTIG:
+
+ - Diese Datei muss den Namen "configDB.conf" haben
+ - Diese Datei muss im fhem Verzeichnis liegen, z.B. /opt/fhem
+
+
+
+## für MySQL
+################################################################
+#%dbconfig= (
+# connection => "mysql:database=configDB;host=db;port=3306",
+# user => "fhemuser",
+# password => "fhempassword",
+#);
+################################################################
+#
+## für PostgreSQL
+################################################################
+#%dbconfig= (
+# connection => "Pg:database=configDB;host=localhost",
+# user => "fhemuser",
+# password => "fhempassword"
+#);
+################################################################
+#
+## für SQLite (username and password bleiben bei SQLite leer)
+################################################################
+#%dbconfig= (
+# connection => "SQLite:dbname=/opt/fhem/configDB.db",
+# user => "",
+# password => ""
+#);
+################################################################
+
+
+
+ Aufruf mit einer vollständig neuen fhem Installation
+
+ Sehr einfach... fhem muss lediglich folgendermassen gestartet werden:
+
+ configDB ist das Schlüsselwort, an dem fhem erkennt,
+ dass eine Datenbank für die Konfiguration verwendet werden soll.
+
+ Das war es schon. Alle Befehle (save, rereadcfg etc) arbeiten wie gewohnt.
+
+
+
+ oder:
+
+
+ übertragen einer bestehenden fhem Konfiguration in die Datenbank
+
+ Auch sehr einfach...
+
+ - fhem wird zum letzten Mal mit der fhem.cfg gestartet
+
+
+ - Bestehende Konfiguration in die Datenbank übertragen
+ {cfgDB_Migrate}
in die Befehlszeile der fhem-Oberfläche eingeben
+ Nicht die Geduld verlieren! Die Migration eine Weile dauern, speziell bei Mini-Systemen wie
+ RaspberryPi or Beaglebone.
+ Das Ende der Migration wird durch die Meldung "Migration finished." bestätigt.
+ Die ursprüngliche Konfigurationsdatei wird bei diesem Vorgang nicht angetastet.
+ - fhem beenden.
+ - fhem mit dem Schlüsselwort configDB starten
+
+ configDB ist das Schlüsselwort, an dem fhem erkennt,
+ dass eine Datenbank für die Konfiguration verwendet werden soll.
+
+ Das war es schon. Alle Befehle (save, rereadcfg etc) arbeiten wie gewohnt.
+
+
+
+ Zusätzliche Funktionen
+
+ Alle Funktionen werden in der Befehelszeile aufgerufen!
+
+ {cfgDB_Info}
+ Liefert eine Datenbankstatistik
+
+--------------------------------------------------------------------------------
+ configDB Database Information
+--------------------------------------------------------------------------------
+ dbconn: SQLite:dbname=/opt/fhem/configDB.db
+ dbuser:
+ dbpass:
+ dbtype: SQLITE
+--------------------------------------------------------------------------------
+ fhemconfig: 7707 entries
+
+ Ver 0 saved: Sat Mar 1 11:37:00 2014 def: 293 attr: 1248
+ Ver 1 saved: Fri Feb 28 23:55:13 2014 def: 293 attr: 1248
+ Ver 2 saved: Fri Feb 28 23:49:01 2014 def: 293 attr: 1248
+ Ver 3 saved: Fri Feb 28 22:24:40 2014 def: 293 attr: 1247
+ Ver 4 saved: Fri Feb 28 22:14:03 2014 def: 293 attr: 1246
+--------------------------------------------------------------------------------
+ fhemstate: 1890 entries saved: Sat Mar 1 12:05:00 2014
+--------------------------------------------------------------------------------
+
+Ver 0 bezeichnet immer die aktuell geladene Konfiguration.
+
+
+ {cfgDB_Reorg [keep]}
+ Löscht alle gespeicherten Versionen mit Versionsnummer > [keep].
+ Standardwert für den optionalen Parameter keep = 3.
+ Im obigen Beispiel würde {cfgDB_Reorg 2}
die Versionen #3 und #4 löschen.
+ Diese Funktion kann z.B. verwendet werden, um eine regelmäßige nächtliche
+ Datenbankreorganisation mit Hilfe einer at-Definition einzuplanen.
+
+
+ {cfgDB_Recover <version>}
+ Stellt eine ältere Version aus dem Datenbankarchiv wieder her.
+ {cfgDB_Recover 3}
kopiert die Version #3 aus der Datenbank
+ zur Version #0.
+ Die ursprüngliche Version #0 wird dabei gelöscht.
+ Wichtig!
+ Die zurückgeholte Version wird NICHT automatisch aktiviert!
+ Ein rereadcfg
oder - besser - shutdown restart
muss manuell erfolgen.
+
+
+
+ Hinweise
+
+
+ - Im Verzeichnis contrib/configDB befinden sich zwei Vorlagen für Datenbank und Konfiguration,
+ die durch einfaches Kopieren in das fhem Verzeichnis sofort verwendet werden können (Nur für sqlite!).
+
+ - Der Menüpunkt "Edit files"->"config file" wird bei Verwendung von configDB nicht mehr angezeigt.
+
+ - Beim Speichern einer Konfiguration nicht ungeduldig werden (egal ob manuell oder durch Klicken auf "save config")
+ Durch das Schreiben der Versionsinformationen dauert das ein paar Sekunden.
+ Der Abschluss des Speichern wird durch eine entsprechende Meldung angezeigt.
+
+ - Diese Erweiterung wird laufend weiterentwickelt. Speziell an der Verbesserung der Performance wird gearbeitet.
+
+ - Viel Spass!
+
+
+
+
+=end html_DE
+
+=cut