Hallo,
eben habe ich ein Update meiner Entwicklungsumgebung durchgeführt.
Aktualisiert wurde folgendes:
2014.04.24 08:35:38 3: update get http://fhem.de/fhemupdate4/svn/controls_fhem.txt
2014.04.24 08:35:38 3: update get http://fhem.de/fhemupdate4/svn/controls_fhem.txt
2014.04.24 08:35:44 3: update get http://fhem.de/fhemupdate4/svn/FHEM/FhemUtils/release.pm
2014.04.24 08:35:44 1: update check Releases => local: Fhem 5.5 (DEVELOPMENT) remote: Fhem 5.5 (DEVELOPMENT)
2014.04.24 08:35:44 3: update get http://fhem.de/fhemupdate4/svn/controls_fhem.txt
2014.04.24 08:35:44 1: update saving statefile
2014.04.24 08:35:44 3: update get http://fhem.de/fhemupdate4/svn/./CHANGED
2014.04.24 08:35:44 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_THZ.pm
2014.04.24 08:35:44 3: update get http://fhem.de/fhemupdate4/svn/FHEM/01_FHEMWEB.pm
2014.04.24 08:35:44 3: update get http://fhem.de/fhemupdate4/svn/FHEM/31_LightScene.pm
2014.04.24 08:35:45 3: update get http://fhem.de/fhemupdate4/svn/FHEM/33_readingsProxy.pm
2014.04.24 08:35:45 3: update get http://fhem.de/fhemupdate4/svn/FHEM/42_SYSMON.pm
2014.04.24 08:35:45 3: update get http://fhem.de/fhemupdate4/svn/FHEM/45_TRX.pm
2014.04.24 08:35:45 3: update get http://fhem.de/fhemupdate4/svn/FHEM/46_TRX_ELSE.pm
2014.04.24 08:35:45 3: update get http://fhem.de/fhemupdate4/svn/FHEM/46_TRX_LIGHT.pm
2014.04.24 08:35:45 3: update get http://fhem.de/fhemupdate4/svn/FHEM/46_TRX_SECURITY.pm
2014.04.24 08:35:45 3: update get http://fhem.de/fhemupdate4/svn/FHEM/46_TRX_WEATHER.pm
2014.04.24 08:35:45 3: update get http://fhem.de/fhemupdate4/svn/FHEM/93_DbLog.pm
2014.04.24 08:35:46 3: update get http://fhem.de/fhemupdate4/svn/FHEM/95_holiday.pm
2014.04.24 08:35:46 3: update get http://fhem.de/fhemupdate4/svn/FHEM/98_SVG.pm
2014.04.24 08:35:46 3: update get http://fhem.de/fhemupdate4/svn/FHEM/98_configdb.pm
2014.04.24 08:35:46 3: update get http://fhem.de/fhemupdate4/svn/FHEM/98_weblink.pm
2014.04.24 08:35:46 3: update get http://fhem.de/fhemupdate4/svn/docs/commandref.html
2014.04.24 08:35:48 3: update get http://fhem.de/fhemupdate4/svn/docs/commandref_DE.html
2014.04.24 08:35:49 1: update 18 file(s) have been updated.
Seit dem bekomme ich beim starten von Fhem diese Meldung:
2014.04.24 08:49:07 1: Cannot open database configuration file /opt/fhem/contrib/dblog/db.conf.
2014.04.24 08:49:07 1: define myDbLog myDbLog DbLog /opt/fhem/contrib/dblog/db.conf .*:.*: Can't connect to database.
Ein version zeigt mir dies:
# $Id: 93_DbLog.pm 5612 2014-04-23 18:12:07Z tobiasfaust $
Diese Datei aus einem Backup verbindet wieder erfolgreich:
# $Id: 93_DbLog.pm 5348 2014-03-28 09:38:23Z tobiasfaust $
Ich vergass zu schreiben:
Ein "configdb filemove ./contrib/dblog/db.conf" habe ich ausgeführt. Danach ist die db.conf auch nicht mehr im Filesystem.
Dennoch die Fehlermeldung.
- ein filemove sollte man nur ausführen, wenn man verstanden hat, was man tut.
- ./contrib/blablabla ist generell kein Pfad, aus dem man produktiv irgendwelche Daten nehmen sollte. Die in contrib vorhandenen Dateien sollte man immer in den fhem Hauptzweig kopieren und dort verwenden.
- die Pfadangaben die Du bei configdb fileimport (bzw. filemove) verwendest müssen mit den Pfadangaben, die Du im define Deines DbLog verwendest, übereinstimmen.
Lösungsweg:
define myDbLog myDbLog DbLog ./contrib/dblog/db.conf .*:.*
Danach prüfen, ob es funktioniert. WENN es funktioniert (und NUR DANN!) ein save config.
Nach Deinem 2. Hinweis habe ich mal ein "delete myDbLog" gemacht, dann die db.conf in den Hauptzweig von Fhem verschoben.
Gebe ich dann deinen Lösungsvorschlag (mit dem Pfad /opt/fhem/db.conf) ein kommt die Meldung:
Unknown module myDbLog
Ist ja eigentlich auch logisch denke ich. Denn 2 x myDbLog in dem define?
Wenn ich nun ein define myDbLog DbLog /opt/fhem/db.conf .*:.* mache, verdoppelt der mir im Log wieder das myDbLog.
2014.04.24 13:23:10 1: Cannot open database configuration file /opt/fhem/db.conf.
2014.04.24 13:23:10 1: define myDbLog myDbLog DbLog /opt/fhem/db.conf .*:.*: Can't connect to database.
Die erste Zeile, dass er die db.conf nicht findet verstehe ich auch nicht ganz, denn die kann vom fhem user gelesen und bearbeitet werden.
fhem@tdfsr178193:~/contrib/dblog$ cat /opt/fhem/db.conf
#
# database configuration file
#
#
## for MySQL
################################################################
%dbconfig= (
connection => "mysql:database=DEV-fhem;host=192.168.178.192;port=3306",
user => "fhemsql",
password => "...",
);
################################################################
#
## for PostgreSQL
################################################################
#%dbconfig= (
# connection => "Pg:database=fhem;host=localhost",
# user => "fhemuser",
# password => "fhempassword"
#);
################################################################
#
## for SQLite (username and password stay empty for SQLite)
################################################################
#%dbconfig= (
# connection => "SQLite:dbname=/opt/fhem/fhem.db",
# user => "",
# password => ""
#);
################################################################
Nehme ich nun das 93_DbLog.pm von 28.03.2014 kann ich mein DbLog wieder ohne Fehler definieren.
Habe ich meine Config DB nun schon unbrauchbar gemacht?
Zitat von: maxritti am 24 April 2014, 13:32:14
Habe ich meine Config DB nun schon unbrauchbar gemacht?
Du hast einfach nur treudoof meinen Lösungsvorschlag per copy&paste übernommen, obwohl Du sogar selbst den Fehler darin schon erkannt hast:
Zitat2 x myDbLog in dem define?
Es muss natürlich heißen:
define myDbLog DbLog ./contrib/dblog/db.conf .*:.*
Und weisst Du auch, woher der Fehler kam?
Aus DEINEM ersten Beitrag hier
Zitat2014.04.24 08:49:07 1: define myDbLog myDbLog DbLog /opt/fhem/contrib/dblog/db.conf .*:.*: Can't connect to database.
aus dem ich die Zeile genauso treudoof kopiert und einfach nur die Pfadangabe geändert habe :P
Du hattest also den Fehler bei Dir schon heute morgen im System.
Na das hilft ja nun ungemeine weiter.
Zumal es ja bis gestern vor dem Update noch lief und dies auch mit der "alten" 93_DbLog.pm noch funktioniert.
Hast Du denn eine Idee, warum das verdoppelt wird?
Denn wie Du siehst, gebe ich es nur einfach ein und es wird dann doppelt im Log angegeben.
Mach mal bitte ein "configdb filelist" und ein "configdb list <dbLogName>" und poste beide Ergebnisse hier.
Zitat von: maxritti am 24 April 2014, 14:14:01
Denn wie Du siehst, gebe ich es nur einfach ein und es wird dann doppelt im Log angegeben.
das sehe ich nirgends, ich muss das glauben, was Du hier schreibst ;)
configdb filelist
Files found in database:
------------------------------------------------------------
configdb list myDblog
search result for device: myDbLog in version: 0
--------------------------------------------------------------------------------
Rührt wohl daher, dass ich sowohl ein
configdb filedelete ./contrib/dblog/db.conf
als auch ein
configdb filedelete ./db.conf
eingegeben habe um eine so wie ich dachte konsistente Konfiguration zu erhalten, wo alles über die im Verzeichnis befindliche db.conf läuft.
Nur noch mal um sicher zu gehen:
# $Id: 93_DbLog.pm 5348 2014-03-28 09:38:23Z tobiasfaust $
ist derzeit im Einsatz, da ich mit der neuen Version ein define myDbLog DbLog .... gar nicht mehr ans fliegen bekomme.
Weißt Du, was mich grade massiv stört?
Du hast ein Problem und erwartest hier Hilfe - die ich Dir gerne geben möchte.
Aber gleichzeitig wurschtelst Du irgenwas bei Dir auf dem System rum, von dem Du hoffst/glaubst/vermutest, dass es irgendwas nützen könnte.
So geht das nicht - so kommen wir nicht weiter!
Einfache Regel:
Du fragst - dann wartest Du auf meine Antwort und tust solange NICHTS.
Ich frage - dann warte ich auf Deine Antwort.
Zitatconfigdb list myDblog
Code:
search result for device: myDbLog in version: 0
--------------------------------------------------------------------------------
Rührt wohl daher, dass ich
Das rührt daher, dass Du irgenwann mal ein "save config" gemacht hast, obwohl das DbLog Device überhaupt nicht vorhanden war. Ein nicht vorhandenes Device kann auch nicht gespeichert werden.
- Aktualisiere die Datei 93_DbLog.pm auf den aktuellen Stand von gestern abend.
- Lege Dir in ./FHEM eine Konfigurationsdatei mit den richtigen Verbindungsdaten zu Deiner Datenbank an
- Importiere diese Datei in die Datenbank mit "configdb fileimport <datenbankdatei>"
- Starte Dein fhem jetzt neu.
- Definiere das DbLog Device unter Angabe der Konfigurationsdatei einschließlich der gleichen Pfadangabe, die Du beim fileimport verwendet hast
- Halte Dich exakt an die angegebene Reihenfolge der vorgenannten fünf Schritte.
Und dann mach nochmal ein "configdb filelist" und ein "configdb list <dbLogName>" und poste beide Ergebnisse hier - sofern der Fehler dann immer noch besteht.
Zitat von: betateilchen am 24 April 2014, 14:42:57
Weißt Du, was mich grade massiv stört?
Du hast ein Problem und erwartest hier Hilfe - die ich Dir gerne geben möchte.
Aber gleichzeitig wurschtelst Du irgenwas bei Dir auf dem System rum, von dem Du hoffst/glaubst/vermutest, dass es irgendwas nützen könnte.
So geht das nicht - so kommen wir nicht weiter!
Einfache Regel:
Du fragst - dann wartest Du auf meine Antwort und tust solange NICHTS.
Ich frage - dann warte ich auf Deine Antwort.
Okay.
So manches Gewitter reinigt mal die Luft :)
Allerdings erwarten tue ich hier gar nichts. Hoffen, dass jemand ein offenes Ohr für die Probleme hat, wäre da treffender.
Ich weiss, dass hier viele die Freizeit opfern um FHEM weiter zu entwickeln und anderen zu helfen.
Dafür mal ganz herzlichen Dank an dieser Stelle.
Nun aber back to topic:1. Aktualisiere die Datei 93_DbLog.pm auf den aktuellen Stand von gestern abend.
Das ist dann diese
# $Id: 93_DbLog.pm 5348 2014-03-28 09:38:23Z tobiasfaust $
2. Lege Dir in ./FHEM eine Konfigurationsdatei mit den richtigen Verbindungsdaten zu Deiner Datenbank an
Nur um sicherzugehen, damit wir das gleiche meinen.
./FHEM ist dann dein
fhem Hauptzweig also /opt/fhem/FHEM?
Weil die urspünglich existierende fhem.cfg und configDB.conf liegen nicht dort sondern unter /opt/fhem/
Zitat von: maxritti am 24 April 2014, 17:07:02
# $Id: 93_DbLog.pm 5348 2014-03-28 09:38:23Z tobiasfaust $
Nein. Die aktuelle Version, ist die von gestern abend - wie schon mehrfach gesagt.
# $Id: 93_DbLog.pm 5612 2014-04-23 18:12:07Z tobiasfaust $
Das ist genau die Version, die auch schon den ganzen Tag in Deinem Thread-Titel stehen hast.
2. Lege Dir in ./FHEM eine Konfigurationsdatei mit den richtigen Verbindungsdaten zu Deiner Datenbank an
Zitat von: maxritti am 24 April 2014, 17:07:02
Nur um sicherzugehen, damit wir das gleiche meinen.
./FHEM ist dann dein fhem Hauptzweig also /opt/fhem/FHEM?
Ja.
Zitat von: maxritti am 24 April 2014, 17:07:02
Weil die urspünglich existierende fhem.cfg und configDB.conf liegen nicht dort sondern unter /opt/fhem/
mach doch bitte einfach EINMAL was man Dir hier als Hilfe anbietet. Es geht ausschließlich darum, dass ICH eine Basis habe, von der ich weiterhin ausgehen, wenn wir hier weiterdiskutieren. Ich kann doch nicht auf Deinen Monitor schauen, um zu sehen, was Du wirklich tust - deshalb muss ich ich darauf verlassen, dass Du genau DAS getan hast, was ich Dir empfohlen habe.
1. Aktualisiere die Datei 93_DbLog.pm auf den aktuellen Stand von gestern abend.
Erledigt.
2. Lege Dir in ./FHEM eine Konfigurationsdatei mit den richtigen Verbindungsdaten zu Deiner Datenbank an
Erledigt.
#
# database configuration file
#
#
## for MySQL
################################################################
%dbconfig= (
connection => "mysql:database=DEV-fhem;host=192.168.178.192;port=3306",
user => "fhemuser",
password => "...",
);
################################################################
#
## for PostgreSQL
################################################################
#%dbconfig= (
# connection => "Pg:database=fhem;host=localhost",
# user => "fhemuser",
# password => "fhempassword"
#);
################################################################
#
## for SQLite (username and password stay empty for SQLite)
################################################################
#%dbconfig= (
# connection => "SQLite:dbname=/opt/fhem/fhem.db",
# user => "",
# password => ""
#);
################################################################
3. Importiere diese Datei in die Datenbank mit "configdb fileimport <datenbankdatei>"
Als Ergebnis sagt FHEM mir dies:
30 lines written from file ./FHEM/db.conf to database
4. Starte Dein fhem jetzt neu.
Erledigt.
5. Definiere das DbLog Device unter Angabe der Konfigurationsdatei einschließlich der gleichen Pfadangabe, die Du beim fileimport verwendet hast
Liefert mir dies im Logfile von FHEM und FHEM ist nicht mehr erreichbar.
2014.04.24 19:59:30 3: Unknown dbmodel type in configuration file ./FHEM/db.conf.
2014.04.24 19:59:30 3: Only Mysql, Postgresql, Oracle, SQLite are fully supported.
2014.04.24 19:59:30 3: It may cause SQL-Erros during generating plots.
2014.04.24 19:59:30 3: Connecting to database with user
6. Halte Dich exakt an die angegebene Reihenfolge der vorgenannten fünf Schritte.
Habe ich hoffentlich gemacht.
nix vergessen?
Zitat von: betateilchen am 24 April 2014, 14:49:23
Und dann mach nochmal ein "configdb filelist" und ein "configdb list <dbLogName>" und poste beide Ergebnisse hier - sofern der Fehler dann immer noch besteht.
configdb filelist
Files found in database:
------------------------------------------------------------
./FHEM/db.conf
configdb list myDbLog
search result for device: myDbLog in version: 0
--------------------------------------------------------------------------------
Ich hab gerade keine Ahnung, was Du da falschmachst. Und ich habe auch keine Ahnung, was man da falschmachen KÖNNTE.
*grübel*
Dann sind wir immerhin schon mal zu Zweit :D
Irgendwo müsste man doch einen Ansatz finden, warum der den dbmodel type nun nicht mehr aus der in der Config DB befindlichen Teil raus bekommt sobald ich das myDbLog definieren will?
Sagen Dir denn die folgenden Zeilen der 93_DbLog.pm etwas, wo was von Use of unitialized value... auftaucht, bevor FHEM abschmiert?
Use of uninitialized value $dbconn in pattern match (m//) at ./FHEM/93_DbLog.pm line 611.
Use of uninitialized value $dbconn in pattern match (m//) at ./FHEM/93_DbLog.pm line 613.
Use of uninitialized value $dbconn in pattern match (m//) at ./FHEM/93_DbLog.pm line 615.
Use of uninitialized value $dbconn in pattern match (m//) at ./FHEM/93_DbLog.pm line 617.
2014.04.24 20:41:32 3: Unknown dbmodel type in configuration file ./FHEM/db.conf.
Probier mal, ob es mit der Angabe von kompletten Pfadnamen funktioniert.
also zuerst:
configdb fileimport /opt/fhem/FHEM/db.conf
und dann
define myDbLog DbLog /opt/fhem/FHEM/db.conf .*:.*
vergiss das mit den kompletten Pfadnamen, das funktioniert auch mit ./FHEM/db.conf
Editiere die db.conf und schmeiße alle Zeilen raus, bis auf die fünf mit den Konfigurationsdaten.
Achte aber darauf, die Datei danach wieder in die Datenbank zu importieren!
%dbconfig= (
connection => "mysql:database=fhemLog;host=rasp-nas;port=3306",
user => "fhem-dev",
password => "fhem-dev",
);
Datei bearbeitet und neu importiert:
5 lines written from file ./FHEM/db.conf to database
define myDbLog DbLog ./FHEM/db.conf .*:.*
Schau mal einer an...
2014.04.24 20:54:50 3: Connecting to database mysql:database=DEV-fhem;host=192.168.178.192;port=3306 with user fhemuser
2014.04.24 20:54:50 3: Connection to db mysql:database=DEV-fhem;host=192.168.178.192;port=3306 established for pid 29438
2014.04.24 20:54:50 3: Connection to db mysql:database=DEV-fhem;host=192.168.178.192;port=3306 established
Ich habs fast befürchtet...
Danke für Deine Geduld. Da muss ich in 93_DbLog noch eine Änderung beim Lesen der Konfigurationsdaten einbauen. Ich weiss ja nun, was ich testen muss ;)
Zitat von: betateilchen am 24 April 2014, 21:16:34
Danke für Deine Geduld. Da muss ich in 93_DbLog noch eine Änderung beim Lesen der Konfigurationsdaten einbauen.
Kein Problem gerne wieder.
ne, lieber nicht nochmal.
???
Nicht wegen Dir, sondern wegen so einem doofen Problem.
Ich hab übrigens schon die Lösung gefunden, sodass es nun auch mit Kommentarzeilen in der Konfigurationsdatei funktioniert.