mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
configDB.pm:
- updated commandref (EN) - added commandref (DE) git-svn-id: https://svn.fhem.de/fhem/trunk@5102 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
ba083fbfd6
commit
5cbb166526
226
fhem/configDB.pm
226
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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
#
|
||||
# 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
|
||||
|
||||
<a name="configDB"></a>
|
||||
@ -422,10 +462,10 @@ not to be translated
|
||||
<li>The database tables will be created automatically.</li><br/>
|
||||
<li>Create a configuration file containing the connection string to access database.<br/>
|
||||
<br/>
|
||||
<b>IMPORTANT:
|
||||
<b>IMPORTANT:</b>
|
||||
<ul><br/>
|
||||
</b><li>This file <b>must</b> be named "configDB.conf"</li>
|
||||
</b><li>This file <b>must</b> be located in your fhem main directory, e.g. /opt/fhem</li>
|
||||
<li>This file <b>must</b> be named "configDB.conf"</li>
|
||||
<li>This file <b>must</b> be located in your fhem main directory, e.g. /opt/fhem</li>
|
||||
</ul>
|
||||
<br/>
|
||||
<pre>
|
||||
@ -544,6 +584,9 @@ Ver 0 always indicates the currently running configuration.<br/>
|
||||
<b>Author's notes</b><br/>
|
||||
<br/>
|
||||
<ul>
|
||||
<li>You can find two template files for datebase and configfile (sqlite only!) for easy installation.<br/>
|
||||
Just copy them to your fhem installation directory (/opt/fhem) and have fun.</li>
|
||||
<br/>
|
||||
<li>The frontend option "Edit files"->"config file" will be removed when running configDB.</li>
|
||||
<br/>
|
||||
<li>Please be patient when issuing a "save" command
|
||||
@ -560,3 +603,178 @@ Ver 0 always indicates the currently running configuration.<br/>
|
||||
</ul>
|
||||
|
||||
=end html
|
||||
|
||||
=begin html_DE
|
||||
|
||||
<a name="configDB"></a>
|
||||
<h3>configDB</h3>
|
||||
<ul>
|
||||
Seit version 5079 unterstützt fhem die Verwendung einer SQL Datenbank zum Abspeichern der kompletten Konfiguration<br/>
|
||||
Dadurch kann man auf alle cfg Dateien, includes usw. verzichten und die daraus immer wieder resultierenden Probleme vermeiden.<br/>
|
||||
Desweiteren gibt es damit eine Versionierung von Konfigurationen und die Möglichkeit,
|
||||
jederzeit eine ältere Version wiederherstellen zu können.<br/>
|
||||
Der Zugriff auf die Datenbank erfolgt über die perl-eigene Datenbankschnittstelle DBI.<br/>
|
||||
<br/>
|
||||
<b>Voraussetzungen / Installation</b><br/>
|
||||
<ul><br/>
|
||||
<li>Es muss eine SQL Datenbank verfügbar sein, untsrstützt werden SQLITE, MYSQL und POSTGRESQLL.</li><br/>
|
||||
<li>Das zum Datenbanktype gehörende DBD Modul muss in perl installiert sein,<br/>
|
||||
für sqlite3 auf einem Debian System z.B. das Paket libdbd-sqlite3-perl</li><br/>
|
||||
<li>Eine leere Datenbank muss angelegt werden, z.B. in sqlite3:<br/>
|
||||
<pre>
|
||||
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$
|
||||
</pre></li>
|
||||
<li>Die benötigten Datenbanktabellen werden automatisch angelegt.</li><br/>
|
||||
<li>Eine Konfigurationsdatei für die Verbindung zur Datenbank muss angelegt werden.<br/>
|
||||
<br/>
|
||||
<b>WICHTIG:</b>
|
||||
<ul><br/>
|
||||
<li>Diese Datei <b>muss</b> den Namen "configDB.conf" haben</li>
|
||||
<li>Diese Datei <b>muss</b> im fhem Verzeichnis liegen, z.B. /opt/fhem</li>
|
||||
</ul>
|
||||
<br/>
|
||||
<pre>
|
||||
## 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 => ""
|
||||
#);
|
||||
################################################################
|
||||
</pre></li><br/>
|
||||
</ul>
|
||||
|
||||
<b>Aufruf mit einer vollständig neuen fhem Installation</b><br/>
|
||||
<ul><br/>
|
||||
Sehr einfach... fhem muss lediglich folgendermassen gestartet werden:<br/><br/>
|
||||
<ul><code>perl fhem.pl configDB</code></ul><br/>
|
||||
<b>configDB</b> ist das Schlüsselwort, an dem fhem erkennt, <br/>
|
||||
dass eine Datenbank für die Konfiguration verwendet werden soll.<br/>
|
||||
<br/>
|
||||
<b>Das war es schon.</b> Alle Befehle (save, rereadcfg etc) arbeiten wie gewohnt.
|
||||
</ul>
|
||||
|
||||
<br/>
|
||||
<b>oder:</b><br/>
|
||||
<br/>
|
||||
|
||||
<b>übertragen einer bestehenden fhem Konfiguration in die Datenbank</b><br/>
|
||||
<ul><br/>
|
||||
Auch sehr einfach... <br/>
|
||||
<br/>
|
||||
<li>fhem wird zum letzten Mal mit der fhem.cfg gestartet<br/><br/>
|
||||
<ul><code>perl fhem.pl fhem.cfg</code></ul></li><br/>
|
||||
<br/>
|
||||
<li>Bestehende Konfiguration in die Datenbank übertragen<br/><br/>
|
||||
<ul><code>{cfgDB_Migrate}</code> in die Befehlszeile der fhem-Oberfläche eingeben</ul><br/></br>
|
||||
Nicht die Geduld verlieren! Die Migration eine Weile dauern, speziell bei Mini-Systemen wie<br/>
|
||||
RaspberryPi or Beaglebone.<br/>
|
||||
Das Ende der Migration wird durch die Meldung "Migration finished." bestätigt.<br/>
|
||||
Die ursprüngliche Konfigurationsdatei wird bei diesem Vorgang nicht angetastet.</li><br/>
|
||||
<li>fhem beenden.</li><br/>
|
||||
<li>fhem mit dem Schlüsselwort configDB starten<br/><br/>
|
||||
<ul><code>perl fhem.pl configDB</code></ul></li><br/>
|
||||
<b>configDB</b> ist das Schlüsselwort, an dem fhem erkennt, <br/>
|
||||
dass eine Datenbank für die Konfiguration verwendet werden soll.<br/>
|
||||
<br/>
|
||||
<b>Das war es schon.</b> Alle Befehle (save, rereadcfg etc) arbeiten wie gewohnt.
|
||||
</ul>
|
||||
<br/><br/>
|
||||
|
||||
<b>Zusätzliche Funktionen</b><br/>
|
||||
<ul><br/>
|
||||
Alle Funktionen werden in der Befehelszeile aufgerufen!<br/>
|
||||
<br/>
|
||||
<li><code>{cfgDB_Info}</code></li><br/>
|
||||
Liefert eine Datenbankstatistik<br/>
|
||||
<pre>
|
||||
--------------------------------------------------------------------------------
|
||||
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
|
||||
--------------------------------------------------------------------------------
|
||||
</pre>
|
||||
Ver 0 bezeichnet immer die aktuell geladene Konfiguration.<br/>
|
||||
<br/>
|
||||
|
||||
<li><code>{cfgDB_Reorg [keep]}</code></li><br/>
|
||||
Löscht alle gespeicherten Versionen mit Versionsnummer > [keep].<br/>
|
||||
Standardwert für den optionalen Parameter keep = 3.<br/>
|
||||
Im obigen Beispiel würde <code>{cfgDB_Reorg 2}</code> die Versionen #3 und #4 löschen.<br/>
|
||||
Diese Funktion kann z.B. verwendet werden, um eine regelmäßige nächtliche<br/>
|
||||
Datenbankreorganisation mit Hilfe einer at-Definition einzuplanen.<br/>
|
||||
<br/>
|
||||
|
||||
<li><code>{cfgDB_Recover <version>}</code></li><br/>
|
||||
Stellt eine ältere Version aus dem Datenbankarchiv wieder her.<br/>
|
||||
<code>{cfgDB_Recover 3}</code> <b>kopiert</b> die Version #3 aus der Datenbank
|
||||
zur Version #0.<br/>
|
||||
Die ursprüngliche Version #0 wird dabei gelöscht.<br/><br/>
|
||||
<b>Wichtig!</b><br/>
|
||||
Die zurückgeholte Version wird <b>NICHT</b> automatisch aktiviert!<br/>
|
||||
Ein <code>rereadcfg</code> oder - besser - <code>shutdown restart</code> muss manuell erfolgen.<br/>
|
||||
</ul>
|
||||
<br/>
|
||||
<br/>
|
||||
<b>Hinweise</b><br/>
|
||||
<br/>
|
||||
<ul>
|
||||
<li>Im Verzeichnis contrib/configDB befinden sich zwei Vorlagen für Datenbank und Konfiguration,<br/>
|
||||
die durch einfaches Kopieren in das fhem Verzeichnis sofort verwendet werden können (Nur für sqlite!).</li>
|
||||
<br/>
|
||||
<li>Der Menüpunkt "Edit files"->"config file" wird bei Verwendung von configDB nicht mehr angezeigt.</li>
|
||||
<br/>
|
||||
<li>Beim Speichern einer Konfiguration nicht ungeduldig werden (egal ob manuell oder durch Klicken auf "save config")<br/>
|
||||
Durch das Schreiben der Versionsinformationen dauert das ein paar Sekunden.<br/>
|
||||
Der Abschluss des Speichern wird durch eine entsprechende Meldung angezeigt.</li>
|
||||
<br/>
|
||||
<li>Diese Erweiterung wird laufend weiterentwickelt. Speziell an der Verbesserung der Performance wird gearbeitet.</li>
|
||||
<br/>
|
||||
<li>Viel Spass!</li>
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
|
||||
=end html_DE
|
||||
|
||||
=cut
|
||||
|
Loading…
x
Reference in New Issue
Block a user