(Gelöst) DbLog und "Create SVG" ...

Begonnen von cw, 08 Januar 2017, 12:14:29

Vorheriges Thema - Nächstes Thema

cw

Hallo zusammen,

ich habe heute bei einem Bekannten ein neue Installation gemacht und lasse alles in die mysql Daten bank hineinlaufen. Mit einem "select * from ....." sehe ich auch die gesicherten Werte.
Nun wollten wir ein "Create SVG plot from DbLog" machen aber es lassen sich keine Thermostate oder Sensoren aus dem "Device:Reading" auswählen, siehe Screenshot.
Bei meiner eigenen Installation kann ich diese auswählen, allerdings ist mein letztes Update auch schon gut drei Wochen her.

Hat jmd. einen Tipp für uns?

Besten Dank und Grüße aus dem verschneiten Berlin
Carsten

[EDIT] Wenn ich das ins File laufen lassen werden die Werte aufgezeichnet und man diese im Plot verwenden, nur aus der Datenbank nicht. :-(


[EDIt2] => https://forum.fhem.de/index.php/topic,62998.msg556260.html#msg556260
Grüße ...Carsten

Kaufe

Hallo @CW,

genau das selbige Problem ist bei mir auch. So wie es aussieht ist der SQL Befehl falsch der die Werte für den SVGPlot holen will:

Diesen MYSQL setzt der
2017.02.12 14:46:22 4: WEB_172.16.254.148_54771 GET /fhem/SVG_showLog?dev=SVG_DbLog_FHEM_1&logdev=DbLog_FHEM&gplotfile=SVG_DbLog_FHEM_1&logfile=HISTORY&pos=; BUFLEN:0
2017.02.12 14:46:22 5: plotcommand: get DbLog_FHEM HISTORY INT 2017-02-12_00:00:00 2017-02-13_00:00:01  device:reading::
2017.02.12 14:46:22 5: Cmd: >get DbLog_FHEM HISTORY INT 2017-02-12_00:00:00 2017-02-13_00:00:01 device:reading::<
2017.02.12 14:46:22 4: Processing Statement: SELECT
                  DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%i:%s'),
                  DEVICE,
                  READING,
                  VALUE
                   FROM history WHERE 1=1 AND DEVICE  = 'device' AND READING = 'reading' AND TIMESTAMP >= STR_TO_DATE('2017-02-12 00:00:00', '%Y-%m-%d %H:%i:%s') AND TIMESTAMP < STR_TO_DATE('2017-02-13 00:00:01', '%Y-%m-%d %H:%i:%s') ORDER BY TIMESTAMP
2017.02.12 14:46:22 5: Cmd: >{ "HISTORY" }<


mysql> SELECT DATE_FORMAT(TIMESTAMP,'%Y-%m-%d %H:%i:%s'),DEVICE,READING,VALUE FROM history WHERE 1=1 AND DEVICE  = 'device' AND READING = 'reading' AND TIMESTAMP >= STR_TO_DATE('2017-02-12 00:00:00', '%Y-%m-%d %H:%i:%s') AND TIMESTAMP < STR_TO_DATE('2017-02-13 00:00:01', '%Y-%m-%d %H:%i:%s') ORDER BY TIMESTAMP;
Empty set (0.00 sec)


Die Datenbank ist aber so aufgebaut, (DEVICE  = 'device' AND READING = 'reading' ist zuviel, oder wird falsch abgefragt) :
mysql> SELECT DATE_FORMAT(TIMESTAMP,'%Y-%m-%d %H:%i:%s'),DEVICE,READING,VALUE FROM history WHERE 1=1 AND TIMESTAMP >= STR_TO_DATE('2017-02-12 14:55:00', '%Y-%m-%d %H:%i:%s') AND TIMESTAMP < STR_TO_DATE('2017-02-12 14:55:20', '%Y-%m-%d %H:%i:%s') ORDER BY TIMESTAMP;
+--------------------------------------------+----------------------------------+---------------+-------+
| DATE_FORMAT(TIMESTAMP,'%Y-%m-%d %H:%i:%s') | DEVICE                           | READING       | VALUE |
+--------------------------------------------+----------------------------------+---------------+-------+
| 2017-02-12 14:55:03                        | KE_Wohnzimmer_Heizkoerper        | desired-temp  | 19.0  |
| 2017-02-12 14:55:03                        | KE_Wohnzimmer_Heizkoerper        | measured-temp | 22.6  |
| 2017-02-12 14:55:03                        | KE_Wohnzimmer_Heizkoerper_Clima  | desired-temp  | 19.0  |
| 2017-02-12 14:55:03                        | KE_Wohnzimmer_Heizkoerper_Clima  | measured-temp | 22.6  |
| 2017-02-12 14:55:03                        | KE_Wohnzimmer_Heizkoerper_Weathe | measured-temp | 22.6  |
| 2017-02-12 14:55:12                        | WandThermostat_Climate           | measured-temp | 19.0  |
| 2017-02-12 14:55:12                        | WandThermostat_Climate           | humidity      | 40    |
| 2017-02-12 14:55:12                        | WandThermostat_Climate           | desired-temp  | 18.0  |
| 2017-02-12 14:55:17                        | EG_Bad                           | desired-temp  | 19.0  |
| 2017-02-12 14:55:17                        | EG_Bad                           | measured-temp | 19.5  |
| 2017-02-12 14:55:17                        | EG_Bad_Clima                     | desired-temp  | 19.0  |
| 2017-02-12 14:55:17                        | EG_Bad_Clima                     | measured-temp | 19.5  |
| 2017-02-12 14:55:17                        | EG_Bad_Weather                   | measured-temp | 19.5  |
+--------------------------------------------+----------------------------------+---------------+-------+
13 rows in set (0.02 sec)


Das neue DBLOG db_create_mysql.sql ist zwar etwas anders, als dieses, das ich verwendete. Aber mit dem sollte es nichts zu tun haben. https://svn.fhem.de/trac/browser/trunk/fhem/contrib/dblog/db_create_mysql.sql

Mein Verwendete db_create_mysql.sql
root@fhem:/opt/fhem/contrib# cat /opt/fhem/contrib/dblog/db_create_mysql.sql
CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword';
CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));
CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';
CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP);


Anbei noch ein Screenshot wie der GPlot dieses dann darstellt.

Wird an diesem "Bug" noch gearbeitet, oder weiß zufällig jemand an was das Problem liegt?
FHEM 6.0 Raspberry PI-3B-Bullseye| HauptFHEM Server (Graphana,MariaDB)
FHEM 6.0 Raspberry PI-3B-Bullseye| FHEM2FHEM, 1-Wire (Ds9490R  + 50 DS18B20)
FHEM 6.0 Raspberry PI-3B-Bullseye| FHEM2FHEM, 1-Wire (Ds9490R  + 5 DS18B20)
RaspberrMatic 3.61.7.20211218 (ca 65 HM Devices)

Kaufe

Ahh, fehler gefunden,

der Link https://forum.fhem.de/index.php/topic,62998.msg556260.html#msg556260 war der Richtige.

Habe gesehen das auch meine Tabelle etwas zu klein war für die readings und device.
mysql> ALTER TABLE current MODIFY DEVICE VARCHAR(64);
mysql> ALTER TABLE history MODIFY DEVICE VARCHAR(64);
mysql> ALTER TABLE history MODIFY READING VARCHAR(64);
mysql> ALTER TABLE current MODIFY READING VARCHAR(64);
mysql> ALTER TABLE current MODIFY TYPE VARCHAR(64);
mysql> ALTER TABLE history MODIFY TYPE VARCHAR(64);


Aber die Lösung des Problemes war dieser Befehl:
attr DbLog_FHEM DbLogType Current/History

So wie es aussieht braucht man diese Setting Current/History damit er beide Tabellen befüllt.
FHEM 6.0 Raspberry PI-3B-Bullseye| HauptFHEM Server (Graphana,MariaDB)
FHEM 6.0 Raspberry PI-3B-Bullseye| FHEM2FHEM, 1-Wire (Ds9490R  + 50 DS18B20)
FHEM 6.0 Raspberry PI-3B-Bullseye| FHEM2FHEM, 1-Wire (Ds9490R  + 5 DS18B20)
RaspberrMatic 3.61.7.20211218 (ca 65 HM Devices)