FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Markus Bloch am 20 März 2014, 22:05:13

Titel: configDb - Unknown command UNDEFINED, try help.
Beitrag von: Markus Bloch am 20 März 2014, 22:05:13
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
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: Markus Bloch am 20 März 2014, 22:15:04
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
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: maxritti am 14 April 2014, 12:58:52
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.
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 14 April 2014, 13:43:10
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
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: maxritti am 14 April 2014, 13:59:45
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

Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: dlehmann69 am 14 April 2014, 14:01:58
muss die nicht nur configDB.conf heißen?
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 14 April 2014, 14:04:56
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:


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 ;)
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 14 April 2014, 14:05:47
Zitat von: dlehmann69 am 14 April 2014, 14:01:58
muss die nicht nur configDB.conf heißen?

Jepp. configDB.config ist definitiv falsch.
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: maxritti am 14 April 2014, 14:12:51
Oh Gott wie peinlich.

Ihr habt natürlich recht.
Und damit klappts auf einmal auch.

Danke schön
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 14 April 2014, 14:14:07
kaum macht man's richtig, schon gehts  8)
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 14 April 2014, 14:31:13
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.
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: maxritti am 14 April 2014, 14:41:19
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 $

Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 14 April 2014, 14:50:15
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.
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 14 April 2014, 15:01:01
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 ;)
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: maxritti am 14 April 2014, 15:01:55
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.
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 14 April 2014, 15:08:07
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:

Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: Markus Bloch am 16 April 2014, 11:07:46
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
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 16 April 2014, 11:10:30
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
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 16 April 2014, 11:15:05
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


http://perlmaven.com/how-to-change-inc-to-find-perl-modules-in-non-standard-locations
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: Markus Bloch am 16 April 2014, 11:30:43
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
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: Markus Bloch am 16 April 2014, 11:32:55
/volume1/FHEM Live/ ist ein Symlink auf => /volume1/@appstore/FHEM/
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 16 April 2014, 12:25:02
ä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
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: Markus Bloch am 16 April 2014, 12:39:40
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
Titel: Antw:configDb - Unknown command UNDEFINED, try help.
Beitrag von: betateilchen am 16 April 2014, 13:28:53
ok, wenn Du das gelöst hast, kümmern wir uns darum, dass Dein Startskript auch mit configDB gestartet werden kann.