Hallo zusammen,
da ich den Ansatz von configDb sehr interessant finde, wollte ich es bei mir einrichten. Ich bin nach commandref vorgegangen.
1. Konfigfile configDb.conf erzeugt mit meinen Zugangsdaten
2. FHEM neugestartet
3. "configdb migrate" in der FHEM Befehlszeile eingegeben.
Dann erscheint aber bei mir:
Unknown command UNDEFINED, try help.
Muss ich configDb noch irgendwie nachladen? Ich dachte es steht sofort zur Verfügung?
Was mache ich falsch?
Vielen Dank
Gruß
Markus
Ich glaube es liegt an der Ordnerstruktur, bin mir aber nicht sicher.
Hier mal exemplarisch die wichtigsten Pfade auf meinem Synology NAS
/volume1/FHEM Live/bin
/volume1/FHEM Live/bin/fhem.pl
/volume1/FHEM Live/etc
/volume1/FHEM Live/etc/fhem.cfg
/volume1/FHEM Live/etc/configDB.conf
/volume1/FHEM Live/share/fhem/configDB.pm
/volume1/FHEM Live/share/fhem/FHEM
/volume1/FHEM Live/share/fhem/FHEM/18_CUL_HOERMANN.pm
/volume1/FHEM Live/share/fhem/FHEM/10_IT.pm
/volume1/FHEM Live/share/fhem/FHEM/36_PCA301.pm
/volume1/FHEM Live/share/fhem/FHEM/70_EFR.pm
.....
Gruß
Markus
Hallo zusammen,
gerade eben wollte ich auch mal den Schritt wagen und meine fhem.cfg in den Ruhestand bringen.
Um das ganze zu testen wie immer in der Entwicklungsumgebung das Vorgehen der command ref durchgeführt.
Da klappt alles wunderbar. Keine fhem.cfg mehr per Fhemweb editiertbar.
Nur leider kommt bei meinem produktiven System genau die gleiche Meldung wie bei Markus.
Nach "configdb migrate" eben auch diese Meldung:
Unknown command UNDEFINED, try help.
Ich habe keine NAS im Einsatz. Sowohl die Entwicklungsumgebung als auch produktive Umgebung auf jeweils einem Debian Linux.
betateilchen hat bestimmt einen Tip oder? :)
Edit:
Ich sehe gerade das hier noch im fhem-log:
reload: Error:Modul 98_configdb deactivated:
configDB.pm did not return a true value at ./FHEM/98_configdb.pm line 8.
BEGIN failed--compilation aborted at ./FHEM/98_configdb.pm line 8.
2014.04.14 13:00:19 0: configDB.pm did not return a true value at ./FHEM/98_configdb.pm line 8.
Als version ist die hier im Einsatz:
# $Id: configDB.pm 5423 2014-04-03 15:43:17Z betateilchen $
Sowohl produktiv, als auch Entwicklung.
Und dieser Thread hier war mir irgendwie völlig entgangen, ich sehe ihn eben zum ersten Mal - sorry. Das beschriebene Problem muss ich mir heute abend zu Hause anschauen.
Wichtig ist: die configDB.conf muss im gleichen Verzeichnis liegen wie die fhem.pl!
Das ist zumindest bei Markus nicht der Fall, wenn er schreibt:
Zitat
/volume1/FHEM Live/bin/fhem.pl
/volume1/FHEM Live/etc/configDB.conf
Hi,
das wäre prima, wenn Du da etwas findest.
So ein halber Vorruhrestand ist nichts für die fhem.cfg ;-)
Zumindest bei mir liegt die im gleichen Verzeichnis wie fhem.pl
muss die nicht nur configDB.conf heißen?
OK - ich hab grade mal meine VM angeworfen.
Den Fehler kann ich reproduzieren, wenn ich die configDB.conf woanders hinlege, als in das Verzeichnis fhem.pl.
Vor dem "reload: Error" sollte es in Deinem Log aber noch eine weitere Fehlerzeile geben, die die Ursache ziemlich gut beschreibt:
Zitat
2014.04.14 13:55:12 1: Cannot open database configuration file configDB.conf
2014.04.14 13:55:12 1: reload: Error:Modul 98_configdb deactivated:
configDB.pm did not return a true value at ./FHEM/98_configdb.pm line 8.
BEGIN failed--compilation aborted at ./FHEM/98_configdb.pm line 8.
2014.04.14 13:55:12 0: configDB.pm did not return a true value at ./FHEM/98_configdb.pm line 8.
BEGIN failed--compilation aborted at ./FHEM/98_configdb.pm line 8.
Also nochmal - folgende Dateien müssen in einem gemeinsamen Verzeichnis liegen und vorzugsweise sollte fhem auch
aus diesem Verzeichnis gestartet werden:
- fhem.pl
- configDB.pm
- configDB.conf
Im nächsten Update werde ich das in der commandref nochmal ausdrücklich hervorheben. Mit solchen Sonderfällen wie bunt verteilten fhem-Dateien hatte ich es bisher noch nie zu tun ;)
Zitat von: dlehmann69 am 14 April 2014, 14:01:58
muss die nicht nur configDB.conf heißen?
Jepp. configDB.config ist definitiv falsch.
Oh Gott wie peinlich.
Ihr habt natürlich recht.
Und damit klappts auf einmal auch.
Danke schön
kaum macht man's richtig, schon gehts 8)
Zitat von: maxritti am 14 April 2014, 12:58:52
Als version ist die hier im Einsatz:
# $Id: configDB.pm 5423 2014-04-03 15:43:17Z betateilchen $
Dazu gehört immer noch ein Versionseintrag 98_configdb.pm:
# $Id: configDB.pm 5423 2014-04-03 15:43:17Z betateilchen $
# $Id: 98_configdb.pm 5409 2014-04-02 04:38:10Z betateilchen $
Der Versionseintrag steht allerdings erst dann zur Verfügung, wenn vom Anwender der erste configdb Befehl ausgeführt und dadurch das Modul auch tatsächlich geladen wurde.
98_configdb.pm ist quasi das Frontend, das die configdb-Befehle in einfacher Form bereitstellt. Für die fhem-interne Funktion der Konfigurationsverwaltung wird es grundsätzlich nicht benötigt, deshalb sind die beiden Teile voneinander getrennt.
Das begründet auch, warum unterschiedliche Versionsnummern bei diesen beiden Dateien kein Problem darstellen, denn es kann durchaus Optimierungen/Bugfixes im "Backend" geben, ohne dass sich an der Bedienung durch den Anwender irgendwas ändert.
Zitat von: betateilchen am 14 April 2014, 14:31:13
Dazu gehört immer noch ein Versionseintrag 98_configdb.pm:
# $Id: configDB.pm 5423 2014-04-03 15:43:17Z betateilchen $
# $Id: 98_configdb.pm 5409 2014-04-02 04:38:10Z betateilchen $
Der Versionseintrag steht allerdings erst dann zur Verfügung, wenn der erste configdb Befehl ausgeführt und dadurch das Modul auch tatsächlich geladen wurde.
Damit meinst Du den 98_configdb.pm?
Der taucht bei mir (noch) nicht auf.
Ich habe mal einen Dummy angelegt und auf "Save config" geklickt.
Daraufhin wird auch oben links "configDB saved." angezeigt.
Nach einem fehm neustart ist der dummy auch noch da. Hat also augenscheinlich geklappt mit configDB.
Nur wie gesagt. Ein "version" liefert mir die 98_configdb.pm nicht.
# $Id: fhem.pl 5503 2014-04-10 07:50:19Z rudolfkoenig $
# $Id: configDB.pm 5423 2014-04-03 15:43:17Z betateilchen $
# $Id: 10_CUL_HM.pm 5520 2014-04-14 05:06:46Z martinp876 $
# $Id: 93_DbLog.pm 5348 2014-03-28 09:38:23Z tobiasfaust $
# $Id: 01_FHEMWEB.pm 5475 2014-04-07 16:07:58Z rudolfkoenig $
# $Id: 92_FileLog.pm 5452 2014-04-06 06:24:47Z rudolfkoenig $
# $Id: 00_HMLAN.pm 5449 2014-04-05 14:36:30Z martinp876 $
# $Id: 98_HMinfo.pm 5518 2014-04-13 15:22:34Z martinp876 $
# $Id: 98_RandomTimer.pm 4968 2014-02-17 18:48:38Z dietmar63 $
# $Id: 99_SUNRISE_EL.pm 4537 2014-01-03 08:28:59Z rudolfkoenig $
# $Id: 98_SVG.pm 5076 2014-03-01 06:30:23Z rudolfkoenig $
# $Id: 99_Utils.pm 5488 2014-04-08 11:32:17Z rudolfkoenig $
# $Id: 90_at.pm 5319 2014-03-25 10:11:47Z rudolfkoenig $
# $Id: 98_autocreate.pm 5268 2014-03-20 20:46:00Z rudolfkoenig $
# $Id: 98_dummy.pm 4934 2014-02-15 08:23:12Z rudolfkoenig $
# $Id: 91_eventTypes.pm 2982 2013-03-24 17:47:28Z rudolfkoenig $
# $Id: 91_notify.pm 5470 2014-04-07 08:32:35Z rudolfkoenig $
# $Id: 33_readingsGroup.pm 5414 2014-04-02 11:55:24Z justme1968 $
# $Id: 98_structure.pm 5050 2014-02-26 08:29:44Z rudolfkoenig $
# $Id: 98_telnet.pm 4844 2014-02-08 07:54:03Z rudolfkoenig $
# $Id: 98_weblink.pm 3770 2013-08-23 13:29:58Z rudolfkoenig $
Du solltest lernen, aufmerksamer zu lesen!
Zitat von: betateilchen am 14 April 2014, 14:31:13
Der Versionseintrag steht allerdings erst dann zur Verfügung, wenn der erste configdb Befehl ausgeführt und dadurch das Modul auch tatsächlich geladen wurde.
Mach mal ein "configdb info" und danach nochmal "version" ;)
Ok, ich habe oben einen für BILD Leser vermutlich wichtigen Zusatz in rot hinzugefügt 8)
Und nochwas: "configDB.pm" != "98_configdb.pm" - deshalb gibt es auch ZWEI Einträge in der commandref.
Zitat von: maxritti am 14 April 2014, 14:41:19
Ich habe mal einen Dummy angelegt
Dazu hast Du den Befehl define ausgeführt
Zitat von: maxritti am 14 April 2014, 14:41:19
und auf "Save config" geklickt.
Damit hast Du den Befehl save ausgeführt.
Zitat von: maxritti am 14 April 2014, 14:41:19
Nach einem fehm neustart ist der dummy auch noch da.
Nur wie gesagt. Ein "version" liefert mir die 98_configdb.pm nicht.
Logisch, Du hast auch noch nirgends den Befehl configdb ausgeführt. Und fhem selbst führt keine configdb Befehle aus, wie schon geschrieben:
ZitatFür die fhem-interne Funktion der Konfigurationsverwaltung wird es grundsätzlich nicht benötigt, deshalb sind die beiden Teile voneinander getrennt.
es heißt übrigens fhem und nicht fehm ;)
Zitat von: betateilchen am 14 April 2014, 14:50:15
Du solltest lernen, aufmerksamer zu lesen!
Okay, da bin ich gerne zu bereit. :D
Ich hatte die Aussage halt so verstanden, dass das Modul configdb quasi einen Befehl zum speichern der Config bekommt und dadurch das Modul geladen wird.
War dann wohl mal ein kleines Missverständnis meinerseits.
Dann ziehe ich mich hier mal zurück, es sieht ja jetzt ganz gut aus.
Zitat von: maxritti am 14 April 2014, 15:01:55
dass das Modul configdb quasi einen Befehl zum speichern der Config bekommt und dadurch das Modul geladen wird.
War dann wohl mal ein kleines Missverständnis meinerseits.
Nein, kein Missverständnis. Du hast immer noch nicht richtig gelesen ;)
Nicht configdb bekommt den Befehl zum Speichern, sondern configDB bekommt ihn. Und es bekommt den Befehl nicht von Dir, sondern von fhem. Du kannst und sollst doch als Anwender überhaupt nicht darüber nachdenken müssen, ob ein Klick auf "save config" nun in die Datenbank oder in die fhem.cfg speichert - das wird völlig autark von fhem verwaltet und ist für Dich absolut transparent. Genau das war meine wichtigste Zielsetzung bei der Entwicklung: Keinerlei Änderung in der Frontend-Bedienung für den Anwender.
Es gibt genau zwei Stellen, an denen Du im fhem-Frontend optisch erkennen kannst, dass Du mit der Datenbank anstatt der Konfigurationsdatei arbeitest:
- An der Meldung "configDB saved" nach dem Klick auf "save config"
- Daran, dass unter "Edit files" der Eintrag bzw. die "Gruppe" fhem.cfg verschwunden ist.
so, ich habe mich nochmal ran gewagt.
Neue Ausgangssituation (aktuellstes Update von heute):
/volume1/FHEM Live/share/fhem/FHEM/98_configdb.pm
/volume1/FHEM Live/share/fhem/FHEM/98_configDBwrap.pm
/volume1/FHEM Live/bin/fhem.pl
/volume1/FHEM Live/bin/configDB.pm
/volume1/FHEM Live/bin/configDB.conf
/volume1/FHEM Live/etc/fhem.cfg
die configDB.conf ist mit meinen Daten korrekt befüllt. Dennoch erscheint im Logfile:
2014.04.16 11:03:04.869 1: reload: Error:Modul 98_configdb deactivated:
Can't locate configDB.pm in @INC (@INC contains: /usr/local/perl/lib/5.16.0/armv5tel-linux /usr/local/perl/lib/5.16.0 /usr/local/perl/lib/site_perl/5.16.0/armv5tel-linux /usr/local/perl/lib/site_perl/5.16.0 /usr/local/perl/lib/site_perl/5.16.0/armv5tel-linux /usr/local/perl/lib/site_perl/5.16.0 /usr/local/perl/lib/5.16.0/armv5tel-linux /usr/local/perl/lib/5.16.0 . /usr/local/FHEM/share/fhem/FHEM) at /usr/local/FHEM/share/fhem/FHEM/98_configdb.pm line 8.
BEGIN failed--compilation aborted at /usr/local/FHEM/share/fhem/FHEM/98_configdb.pm line 8.
2014.04.16 11:03:04.870 0: Can't locate configDB.pm in @INC (@INC contains: /usr/local/perl/lib/5.16.0/armv5tel-linux /usr/local/perl/lib/5.16.0 /usr/local/perl/lib/site_perl/5.16.0/armv5tel-linux /usr/local/perl/lib/site_perl/5.16.0 /usr/local/perl/lib/site_perl/5.16.0/armv5tel-linux /usr/local/perl/lib/site_perl/5.16.0 /usr/local/perl/lib/5.16.0/armv5tel-linux /usr/local/perl/lib/5.16.0 . /usr/local/FHEM/share/fhem/FHEM) at /usr/local/FHEM/share/fhem/FHEM/98_configdb.pm line 8.
BEGIN failed--compilation aborted at /usr/local/FHEM/share/fhem/FHEM/98_configdb.pm line 8.
Wenn ich nun die configDB.pm zusätzlich in den Module-Ordner kopiere:
/volume1/FHEM Live/share/fhem/FHEM/98_configdb.pm
/volume1/FHEM Live/share/fhem/FHEM/98_configDBwrap.pm
/volume1/FHEM Live/share/fhem/FHEM/configDB.pm <<<<<<<<<<<<
/volume1/FHEM Live/bin/fhem.pl
/volume1/FHEM Live/bin/configDB.pm
/volume1/FHEM Live/bin/configDB.conf
/volume1/FHEM Live/etc/fhem.cfg
dann erscheint folgende Meldung:
2014.04.16 11:06:41.842 1: Cannot open database configuration file configDB.conf
2014.04.16 11:06:41.946 1: reload: Error:Modul 98_configdb deactivated:
configDB.pm did not return a true value at /usr/local/FHEM/share/fhem/FHEM/98_configdb.pm line 8.
BEGIN failed--compilation aborted at /usr/local/FHEM/share/fhem/FHEM/98_configdb.pm line 8.
2014.04.16 11:06:41.946 0: configDB.pm did not return a true value at /usr/local/FHEM/share/fhem/FHEM/98_configdb.pm line 8.
BEGIN failed--compilation aborted at /usr/local/FHEM/share/fhem/FHEM/98_configdb.pm line 8.
Dummerweise sehe ich aber garnicht, wo er die configDB.conf genau sucht, also in welchem Ordner genau.
Kannst du hier helfen, betateilchen?
Danke
Gruß
Markus
Wie um alles in der Welt startest Du Dein fhem?
Bitte zeige mir das Startskript.
Das hier:
/volume1/FHEM Live/share/fhem/FHEM/98_configdb.pm
widerspricht irgendwie komplett dem hier:
/usr/local/FHEM/share/fhem/FHEM/98_configdb.pm
Die in @INC hinterlegte Liste der Verzeichnisse, in denen perl nach Modulen sucht, kennt Deine fhem Installation nicht. Der aktuelle Pfad ist allerdings immer enthalten. Du musst dafür sorgen, dass
- der Pfad Deiner fhem-Installation zu @INC hinzugefügt wird
- fhem vorzugsweise aus seinem eigenen Verzeichnis gestartet wird, damit fhem.pl die configDB.pm finden kann, die im gleichen (also dem dann aktuellen) Pfad liegt.
http://perlmaven.com/how-to-change-inc-to-find-perl-modules-in-non-standard-locations
Ich verwende die Synology-Pakete von Martin Fischer: http://fischer-net.de/hausautomation/fhem/55-fhem-5-3-pakete-fuer-synology.html
Das entsprechende Start-Skript habe ich angehangen.
Danke
Gruß
Markus
/volume1/FHEM Live/ ist ein Symlink auf => /volume1/@appstore/FHEM/
ähm... mit dem Startskript kannst Du aber Dein fhem überhaupt nicht mit Datenbank starten, selbst wenn Dir die Migration gelingen würde.
Um die Migration zu testen, füge mal bitte die rot markierte Zeile in das Startskript ein:
Zitat
#
cd ${HOME}/bin
case "$1" in
start)
Ausserdem bitte noch diese Änderung:
Zitat
perl_BIN=${PERL}/bin/perl
if [ -x ${perl_BIN} ]; then
export PERL5LIB="${PERL}/lib/5.16.0:${PERL}/lib/site_perl/5.16.0:${HOME}/bin"
else
perl_BIN=`which perl`
fi
okay, funktioniert, jetzt scheitert es am fehlenden DBD::mysql Modul in Perl, aber das ist eine andere Baustelle.
Vielen Dank für deine Hilfe.
Gruß
Markus
ok, wenn Du das gelöst hast, kümmern wir uns darum, dass Dein Startskript auch mit configDB gestartet werden kann.