Hallo!
Ich habe nach der Anleitung http://www.fhemwiki.de/wiki/DbLog das Logging in Dateien auf eine MySQL-Datenbank umgestellt. Soweit so gut. Die Verbindung zur Datenbank steht auch. Mit define MySQLDB DbLog /opt/fhem/db.conf .*:.*
gebe ich an, dass alles ohne Einschränkungen in die Datenbank wandern soll - zumindest habe ich das so verstanden. Nach einem Neustart von fhem, wandert auch erst einmal einiges in Datenbank, aber dann kommt eigentlich nichts mehr. Ich hatte jetzt erwartet, dass wenn ich z.B. das Licht (Philips hue) ein und aus schalte, dass das auch einen entsprechenden Eintrag in die Datenbank liefert. Oder z.B. die Raumtemperatur. Im Filelog wird sie eingetragen, aber nicht in die Datenbank. Habe ich da irgendetwas falsch verstanden? Muss ich den einzelnen Geräten/Sensoren noch irgendwie mitteilen, dass sie ihre Werte in der Datenbank ablegen sollen? Ich hatte das so verstanden, dass die Code-Zeile von oben generell alles in die Datenbank loggt.
Viele Grüße
Das hast du schon richtig verstanden, so in der Form steht das auch in meiner config und jedes Geräte schreibt fleissig in die DB ohne einen weiteren Eintrag am jeweiligen Gerät.
Was sagt denn "list MySQLDB" ?
Ist der state noch connected ?
Wenn nein, versuchs mal mit "set MySQLDB repopen"
Hallo!
list MySQLDB
liefert mir folgende Ausgabe:
ZitatInternals:
CFGFN /opt/fhem/config/10_Database.cfg
CONFIGURATION /opt/fhem/db.conf
DBMODEL MYSQL
DEF /opt/fhem/db.conf .*:.*
NAME MySQLDB
NR 49
NTFY_ORDER 50-MySQLDB
PID 25034
REGEXP .*:.*
STATE connected
TYPE DbLog
dbconn mysql:database=fhemdb;host=localhost;port=3306
dbuser fhem
Readings:
2015-08-13 12:25:41 state connected
Attributes:
Status ist also "connected", aber geloggt wird irgendwie nichts.
Und von dem Rechner, auf dem FHEM läuft kommst Du auch mit den Daten, welche in der /opt/fhem/db.conf stehen auf den MySQL Server?
Du schreibst zwar, dass mal geloggt wurde, aber den Test oben mittels "mysql" o.ä. Befehl würde ich mal testen.
Zitat von: fhem:user am 13 August 2015, 19:25:31
dbconn mysql:database=fhemdb;host=localhost;port=3306
Da du fhem und Mysql auf dem gleichen System laufen hast , ändere doch mal in deiner db.conf das localhost ab zu 127.0.0.1
Ich hatte bei mir mal den Fall das localhost auch nicht wollte, seit dem steht da halt die IP drin und setze mal verbose hoch und schau ins log
Also die Verbindung zur Datenbank steht:
ZitatConnecting to database mysql:database=fhemdb;host=127.0.0.1;port=3306 with user fhem
Connection to db mysql:database=fhemdb;host=127.0.0.1;port=3306 established for pid 18557
Connection to db mysql:database=fhemdb;host=127.0.0.1;port=3306 established
Unmittelbar nach dem Neustart wird auch allerhand in die Datenbank geschrieben. Quasi zu allen Geräten (Heizungsthermostate, Wandthermostate, Fenster, Licht ...) die aktuellen Werte und Einstellungen. Dann kommt aber irgendwie nichts mehr. Eigentlich sollte wenn ich ein Fenster öffne oder das Licht einschalte dieses ja auch einen Log-Eintrag in der Datenbank erzeugen, aber da kommt nichts.
Stop! Doch es klappt nun. Er loggt jetzt halt wirklich permanent alles. Lag also wohl doch tatsächlich an der Sache mit dem "localhost". Mit 127.0.0.1 kommen nun wirklich permanent Daten ins Log.
Dann sollte ja auch jetzt eigentlich mein Plot, den ich schon auf die Datenbank umgestellt habe (testweise nur eine Anzeige) funktionieren. Mal ein bisschen warten, ob da was kommt ...
So sieht mein Plog-File aus:
Zitatset terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Schlafzimmer Temperatur'
set ytics
set y2tics
set grid y2tics
set ylabel "Ventilstellung (%)"
set y2label "Temperatur in °C"
set yrange [0:100]
set y2range [0:35]
#DbLog_OG_Schlafen_Wandthermostat OG_Schlafen_Wandthermostat.desiredTemperature::
#DbLog_OG_Schlafen_Wandthermostat OG_Schlafen_Wandthermostat.temperature::
#DbLog_OG_Schlafen_Heizung OG_Schlafen_Heizung.valveposition::
plot "<IN>" using 1:2 axes x1y2 title 'Soll-Temperatur' ls l0 lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Ist-Temperatur' ls l1 lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Heizungsventil' ls l2fill lw 1 with lines
Im Diagramm wird aber leider nichts dargestellt (siehe Bild).
Hast du bestehende .gplot Dateien von Hand geändert ?
Zitat von: fhem:user am 13 August 2015, 21:31:28
#DbLog_OG_Schlafen_Wandthermostat OG_Schlafen_Wandthermostat.desiredTemperature::
Tipp : Klick dir mal einen neuen Plot im Ploteditor zusammen, bei mir schaut dann dein Bsp so aus :
#MySQLDB OG_Schlafen_Wandthermostat:desiredTemperature
Ich liebe es zwar die fhem.cfg von Hand zu editieren , aber bei den .gplots lasse ich die Arbeit immer den Editor machen :)
Danke, der Tipp war sehr gut!
Ich hatte wohl das Beispiel in der Doku etwas falsch verstanden. Jetzt ist es aber klar und auf Nummer sicher geht man tatsächlich eben mit dem Ploteditor.
Vielen Dank für deine Hilfe!!
Jetzt werde ich mich mal darum kümmern die geloggten Daten zu analysieren und zu schauen, was davon ich wirklich brauche und was ich vom Logging ausschließen kann.
schön, DbLogExlude ist dein Freund, sonst hast wirklich haufenweise Furz und Feuerstein in der DB.
Wenn sich die plots sehr langsam aufbauen, achte darauf ggf. in der Tabelle history einen Index auf DEVICE , TIMESTAMP und READING zu haben.