From 5cbb166526f73023dcc7df0576b83a7e5e568106 Mon Sep 17 00:00:00 2001 From: betateilchen <> Date: Sun, 2 Mar 2014 18:49:49 +0000 Subject: [PATCH] configDB.pm: - updated commandref (EN) - added commandref (DE) git-svn-id: https://svn.fhem.de/fhem/trunk@5102 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/configDB.pm | 226 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 222 insertions(+), 4 deletions(-) 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:
    @@ -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:

        +
          perl fhem.pl configDB

        + 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

        +
          perl fhem.pl fhem.cfg

      • +
        +
      • 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

        +
          perl fhem.pl configDB

      • + 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