MySQL-Datenbank loggt keine Werte ...

Begonnen von fhem:user, 13 August 2015, 15:21:08

Vorheriges Thema - Nächstes Thema

fhem:user

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

Wzut

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"
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

fhem:user

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.

maxritti

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.

Wzut

#4
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
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

fhem:user

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.

fhem:user

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 ...

fhem:user

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).

Wzut

#8
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 :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

fhem:user

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.

Wzut

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.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher