Neues Modul 98_FileLogConvert.pm - FileLog Import in DbLog und mehr

Begonnen von DeeSPe, 04 Februar 2017, 12:20:07

Vorheriges Thema - Nächstes Thema

DeeSPe

Das Modul ist nun im SVN unter contrib/98_FileLogConvert.pm zu finden.

Zu diesem neuen Modul gibt es bereits einen Beitrag unter Codeschnipsel.

Da ich das Modul gern offiziell in's SVN einchecken möchte, hoffe ich somit auf mehr Tester und Feedback.

Mit diesem Modul ist es möglich FileLog Dateien in die DbLog zu importieren oder die FileLog Dateien in CSV oder SQL Dateien zu konvertieren.

Das Modul ist komplett non-blocking und ich habe mittlerweile damit alle meine FileLog Dateien erfolgreich in meine DbLog importiert.

Features:


  • Modul ist non-blocking und kann problemlos auf Produktivsystemem eingesetzt werden
  • Analyse der vorhandenen Events in den FileLog Dateien
  • Import/Konvertierung nur von bestimmten Events
  • es kann nur ein Import/Konvertierung/Analyse Job auf einmal gestartet werden, falls man einen neuen Job starten will und der vorherige noch nicht beendet ist, so wird eine Fehlermeldung ausgegeben
  • falls das Device im Log mit selben Namen im bestehenden FHEM existiert, so wird auch dessen TYPE in die DB geschrieben, andernfalls bleibt TYPE in der DB leer
  • falls vorhanden wird auch UNIT in der DB befüllt
  • im Attribut logdir kann ein alternativer Ordner für die FileLog Dateien angegeben werden - dieser Ordner muss sich auch unter ".../fhem/" befinden
  • in state wird der aktuelle Status (analysing/imorting/converting) dargestellt
  • Eingaben bei Set und Attribut werden validiert und ggf. eine Fehlermeldung zurück gegeben
  • Fehlerausgabe wenn Log Datei nicht vorhanden ist

Einrichtung

Nach dem Herunterladen der Datei "98_FileLogConvert.pm", diese in den Ordner "..../fhem/FHEM/" ablegen und mit "reload 98_FileLogConvert" in FHEM verfügbar machen.
Wenn man nur ein DbLog Device hat, so wird dieses beim Definieren des FileLogConvert Device automatisch gefunden. Andernfalls muss der Name des bestimmten DbLog Device beim Definieren mit angegeben werden.
Zitatdefine <name> FileLogConvert [DbLog-device]
Beispiel:
define LogConvert FileLogConvert dblog

Das Analysieren und Konvertieren der Dateien dauert mit unter sehr lange (abhängig von der Größe).
Der Import in die DbLog dauert noch mal wesentlich länger!
Also entspannt zurücklehnen und abwarten!!!

Man kann und sollte erst einmal die vorhandenen FileLog Datei(en) analysieren:
get <name> fileEvents FileLog-Datei.log

Es werden sämtliche vorhandenen Events im Reading events aufgelistet.
Zusätzlich werden aus den gefunden Events Vorschläge zu möglichen set Kommandos in den Readings command-csv, command-db und command-sql erstellt. Mit diesen Kommandos ist es möglich nur bestimmte vorkommende Events zu konvertieren/importieren (einfach die nicht zu importierenden/konvertierenden Events weglassen).
Die Anzahl der analysierten Zeilen wird im Reading lines-analysed angezeigt.

Sobald eine Datei konvertiert/importiert wurde, ist es nicht mehr möglich diese erneut zu konvertieren/importieren! ;)
Damit das auch beim Import nach DbLog klappt wird eine (Mini)Datei geschrieben die genau so heißt wie die FileLog Datei, aber sie trägt die Endung mit dem Namen des jeweiligen DbLog Device. Das ist darum, damit man bei mehreren vorhandenen DbLog Devices weiß wo schon importiert wurde.

Probiert es einfach mal aus.
Mir hat es schon einiges an Zeit erspart beim Importieren der Alt-Daten.

Eine komplette englische commandref ist schon enthalten.

Bitte gebt mir Feedback ob das Modul so arbeitet wie beworben und ob es bei Euch Schwierigkeiten gibt/gab.
Was sagt Ihr zu dem Namen des Moduls? Ist daraus ersichtlich was es macht? Oder sollte ich noch einmal über einen anderen Namen nachdenken?

Falls Fragen sind, immer her damit!

Viel Spaß.

Gruß
Dan

Hier mal ein Auszug aus meinem Import-Log nach DbLog, damit Ihr mal sehen könnt wie lange der Import so ca. dauern kann.
Der Import lief auf meinem Produktiv-System auf einem Brix GB-BACE-3000 mit 4 GB RAM und SSD.

2017-02-02 21:43:09 FileLogConvert LogConvert state: importing fl_Sensor-2017.log
2017-02-02 21:43:38 FileLogConvert LogConvert state: import done
2017-02-02 21:43:38 FileLogConvert LogConvert file-source: fl_Sensor-2017.log
2017-02-02 21:43:38 FileLogConvert LogConvert destination: logdb
2017-02-02 21:43:38 FileLogConvert LogConvert lines-analysed: 10123
2017-02-02 21:43:38 FileLogConvert LogConvert lines-imported: 10123

2017-02-02 21:47:14 FileLogConvert LogConvert state: importing fl_Tuer-2016.log
2017-02-02 21:47:23 FileLogConvert LogConvert state: import done
2017-02-02 21:47:23 FileLogConvert LogConvert file-source: fl_Tuer-2016.log
2017-02-02 21:47:23 FileLogConvert LogConvert destination: logdb
2017-02-02 21:47:23 FileLogConvert LogConvert lines-analysed: 6478
2017-02-02 21:47:23 FileLogConvert LogConvert lines-imported: 3170

2017-02-02 21:50:01 FileLogConvert LogConvert state: importing ku_Fenster-2016.log
2017-02-02 21:50:10 FileLogConvert LogConvert state: import done
2017-02-02 21:50:10 FileLogConvert LogConvert file-source: ku_Fenster-2016.log
2017-02-02 21:50:10 FileLogConvert LogConvert destination: logdb
2017-02-02 21:50:10 FileLogConvert LogConvert lines-analysed: 9215
2017-02-02 21:50:10 FileLogConvert LogConvert lines-imported: 2849

2017-02-02 21:53:24 FileLogConvert LogConvert state: importing ku_Heizung-2017.log
2017-02-02 21:54:06 FileLogConvert LogConvert state: import done
2017-02-02 21:54:06 FileLogConvert LogConvert file-source: ku_Heizung-2017.log
2017-02-02 21:54:06 FileLogConvert LogConvert destination: logdb
2017-02-02 21:54:06 FileLogConvert LogConvert lines-analysed: 14741
2017-02-02 21:54:06 FileLogConvert LogConvert lines-imported: 14741

2017-02-02 21:56:20 FileLogConvert LogConvert state: importing ku_Heizung-2016.log
2017-02-02 22:26:33 FileLogConvert LogConvert state: import done
2017-02-02 22:26:33 FileLogConvert LogConvert file-source: ku_Heizung-2016.log
2017-02-02 22:26:33 FileLogConvert LogConvert destination: logdb
2017-02-02 22:26:33 FileLogConvert LogConvert lines-analysed: 910771
2017-02-02 22:26:33 FileLogConvert LogConvert lines-imported: 614305

2017-02-02 23:14:09 FileLogConvert LogConvert state: importing ku_SD1-2016.log power|energy
2017-02-02 23:17:13 FileLogConvert LogConvert state: import done
2017-02-02 23:17:13 FileLogConvert LogConvert file-source: ku_SD1-2016.log
2017-02-02 23:17:13 FileLogConvert LogConvert destination: logdb
2017-02-02 23:17:13 FileLogConvert LogConvert lines-analysed: 66352
2017-02-02 23:17:13 FileLogConvert LogConvert lines-imported: 64006

2017-02-02 23:23:50 FileLogConvert LogConvert state: importing ku_SD1-2017.log
2017-02-02 23:24:01 FileLogConvert LogConvert state: import done
2017-02-02 23:24:01 FileLogConvert LogConvert file-source: ku_SD1-2017.log
2017-02-02 23:24:01 FileLogConvert LogConvert destination: logdb
2017-02-02 23:24:01 FileLogConvert LogConvert lines-analysed: 3859
2017-02-02 23:24:01 FileLogConvert LogConvert lines-imported: 3859

2017-02-02 23:24:34 FileLogConvert LogConvert state: importing ku_SD2-2017.log power|energy
2017-02-02 23:25:51 FileLogConvert LogConvert state: import done
2017-02-02 23:25:51 FileLogConvert LogConvert file-source: ku_SD2-2017.log
2017-02-02 23:25:51 FileLogConvert LogConvert destination: logdb
2017-02-02 23:25:51 FileLogConvert LogConvert lines-analysed: 26855
2017-02-02 23:25:51 FileLogConvert LogConvert lines-imported: 26855

2017-02-02 23:26:01 FileLogConvert LogConvert state: importing ku_SD2-2016.log power|energy
2017-02-02 23:27:23 FileLogConvert LogConvert state: import done
2017-02-02 23:27:23 FileLogConvert LogConvert file-source: ku_SD2-2016.log
2017-02-02 23:27:23 FileLogConvert LogConvert destination: logdb
2017-02-02 23:27:23 FileLogConvert LogConvert lines-analysed: 32346
2017-02-02 23:27:23 FileLogConvert LogConvert lines-imported: 27804

2017-02-02 23:27:56 FileLogConvert LogConvert state: importing ku_SD3-2016.log power|energy
2017-02-02 23:34:07 FileLogConvert LogConvert state: import done
2017-02-02 23:34:07 FileLogConvert LogConvert file-source: ku_SD3-2016.log
2017-02-02 23:34:07 FileLogConvert LogConvert destination: logdb
2017-02-02 23:34:07 FileLogConvert LogConvert lines-analysed: 317687
2017-02-02 23:34:07 FileLogConvert LogConvert lines-imported: 123009

2017-02-02 23:34:51 FileLogConvert LogConvert state: importing ku_SD3-2017.log power|energy
2017-02-02 23:35:06 FileLogConvert LogConvert state: import done
2017-02-02 23:35:06 FileLogConvert LogConvert file-source: ku_SD3-2017.log
2017-02-02 23:35:06 FileLogConvert LogConvert destination: logdb
2017-02-02 23:35:06 FileLogConvert LogConvert lines-analysed: 5348
2017-02-02 23:35:06 FileLogConvert LogConvert lines-imported: 5031

2017-02-02 23:35:37 FileLogConvert LogConvert state: importing ku_SD4-2016.log power|energy
2017-02-02 23:36:19 FileLogConvert LogConvert state: import done
2017-02-02 23:36:19 FileLogConvert LogConvert file-source: ku_SD4-2016.log
2017-02-02 23:36:19 FileLogConvert LogConvert destination: logdb
2017-02-02 23:36:19 FileLogConvert LogConvert lines-analysed: 25379
2017-02-02 23:36:19 FileLogConvert LogConvert lines-imported: 14688

2017-02-02 23:36:39 FileLogConvert LogConvert state: importing ku_SD4-2017.log power|energy
2017-02-02 23:36:46 FileLogConvert LogConvert state: import done
2017-02-02 23:36:46 FileLogConvert LogConvert file-source: ku_SD4-2017.log
2017-02-02 23:36:46 FileLogConvert LogConvert destination: logdb
2017-02-02 23:36:46 FileLogConvert LogConvert lines-analysed: 2624
2017-02-02 23:36:46 FileLogConvert LogConvert lines-imported: 2499

2017-02-02 23:37:12 FileLogConvert LogConvert state: importing ku_SD5-2016.log power|energy
2017-02-02 23:37:44 FileLogConvert LogConvert state: import done
2017-02-02 23:37:44 FileLogConvert LogConvert file-source: ku_SD5-2016.log
2017-02-02 23:37:44 FileLogConvert LogConvert destination: logdb
2017-02-02 23:37:44 FileLogConvert LogConvert lines-analysed: 22570
2017-02-02 23:37:44 FileLogConvert LogConvert lines-imported: 11069

2017-02-02 23:41:14 FileLogConvert LogConvert state: importing ku_SD5-2017.log power|energy
2017-02-02 23:41:31 FileLogConvert LogConvert state: import done
2017-02-02 23:41:31 FileLogConvert LogConvert file-source: ku_SD5-2017.log
2017-02-02 23:41:31 FileLogConvert LogConvert destination: logdb
2017-02-02 23:41:31 FileLogConvert LogConvert lines-analysed: 8005
2017-02-02 23:41:31 FileLogConvert LogConvert lines-imported: 5974

2017-02-02 23:41:36 FileLogConvert LogConvert state: importing ku_SD6-2016.log power|energy
2017-02-02 23:42:10 FileLogConvert LogConvert state: import done
2017-02-02 23:42:10 FileLogConvert LogConvert file-source: ku_SD6-2016.log
2017-02-02 23:42:10 FileLogConvert LogConvert destination: logdb
2017-02-02 23:42:10 FileLogConvert LogConvert lines-analysed: 23351
2017-02-02 23:42:10 FileLogConvert LogConvert lines-imported: 11427

2017-02-02 23:42:38 FileLogConvert LogConvert state: importing ku_SD6-2017.log power|energy
2017-02-02 23:44:21 FileLogConvert LogConvert state: import done
2017-02-02 23:44:21 FileLogConvert LogConvert file-source: ku_SD6-2017.log
2017-02-02 23:44:21 FileLogConvert LogConvert destination: logdb
2017-02-02 23:44:21 FileLogConvert LogConvert lines-analysed: 37672
2017-02-02 23:44:21 FileLogConvert LogConvert lines-imported: 35628

2017-02-02 23:48:01 FileLogConvert LogConvert state: importing ku_Sensor-2016.log luminance|temperature|battery
2017-02-02 23:53:14 FileLogConvert LogConvert state: import done
2017-02-02 23:53:14 FileLogConvert LogConvert file-source: ku_Sensor-2016.log
2017-02-02 23:53:14 FileLogConvert LogConvert destination: logdb
2017-02-02 23:53:14 FileLogConvert LogConvert lines-analysed: 106463
2017-02-02 23:53:14 FileLogConvert LogConvert lines-imported: 105127

2017-02-02 23:58:30 FileLogConvert LogConvert state: importing ku_Sensor-2017.log
2017-02-02 23:59:04 FileLogConvert LogConvert state: import done
2017-02-02 23:59:04 FileLogConvert LogConvert file-source: ku_Sensor-2017.log
2017-02-02 23:59:04 FileLogConvert LogConvert destination: logdb
2017-02-02 23:59:04 FileLogConvert LogConvert lines-analysed: 9282
2017-02-02 23:59:04 FileLogConvert LogConvert lines-imported: 9282

2017-02-03 00:16:19 FileLogConvert LogConvert state: importing ku_Sensor_TH1-2016.log temperature|humidity|dewpoint
2017-02-03 00:48:30 FileLogConvert LogConvert state: import done
2017-02-03 00:48:30 FileLogConvert LogConvert file-source: ku_Sensor_TH1-2016.log
2017-02-03 00:48:30 FileLogConvert LogConvert destination: logdb
2017-02-03 00:48:30 FileLogConvert LogConvert lines-analysed: 909457
2017-02-03 00:48:30 FileLogConvert LogConvert lines-imported: 645164

2017-02-03 00:56:03 FileLogConvert LogConvert state: importing ku_Sensor_TH1-2017.log dewpoint|temperature|humidity
2017-02-03 00:59:31 FileLogConvert LogConvert state: import done
2017-02-03 00:59:31 FileLogConvert LogConvert file-source: ku_Sensor_TH1-2017.log
2017-02-03 00:59:31 FileLogConvert LogConvert destination: logdb
2017-02-03 00:59:31 FileLogConvert LogConvert lines-analysed: 71498
2017-02-03 00:59:31 FileLogConvert LogConvert lines-imported: 70800

2017-02-03 01:02:07 FileLogConvert LogConvert state: importing ku_Sensor_TH2-2017.log dewpoint|humidity|temperature
2017-02-03 01:07:04 FileLogConvert LogConvert state: import done
2017-02-03 01:07:04 FileLogConvert LogConvert file-source: ku_Sensor_TH2-2017.log
2017-02-03 01:07:04 FileLogConvert LogConvert destination: logdb
2017-02-03 01:07:04 FileLogConvert LogConvert lines-analysed: 95190
2017-02-03 01:07:04 FileLogConvert LogConvert lines-imported: 94446

2017-02-03 01:09:03 FileLogConvert LogConvert state: importing ku_Sensor_TH2-2016.log dewpoint|humidity|temperature
2017-02-03 01:48:37 FileLogConvert LogConvert state: import done
2017-02-03 01:48:37 FileLogConvert LogConvert file-source: ku_Sensor_TH2-2016.log
2017-02-03 01:48:37 FileLogConvert LogConvert destination: logdb
2017-02-03 01:48:37 FileLogConvert LogConvert lines-analysed: 962558
2017-02-03 01:48:37 FileLogConvert LogConvert lines-imported: 698800

2017-02-03 01:51:28 FileLogConvert LogConvert state: importing sz_Fenster-2016.log contact|trigger_cnt|sabotageError
2017-02-03 01:51:40 FileLogConvert LogConvert state: import done
2017-02-03 01:51:40 FileLogConvert LogConvert file-source: sz_Fenster-2016.log
2017-02-03 01:51:40 FileLogConvert LogConvert destination: logdb
2017-02-03 01:51:40 FileLogConvert LogConvert lines-analysed: 10776
2017-02-03 01:51:40 FileLogConvert LogConvert lines-imported: 3705

2017-02-03 01:52:57 FileLogConvert LogConvert state: importing ku_Sensor_TK-2016.log temperature
2017-02-03 02:01:42 FileLogConvert LogConvert state: import done
2017-02-03 02:01:42 FileLogConvert LogConvert file-source: ku_Sensor_TK-2016.log
2017-02-03 02:01:42 FileLogConvert LogConvert destination: logdb
2017-02-03 02:01:42 FileLogConvert LogConvert lines-analysed: 181408
2017-02-03 02:01:42 FileLogConvert LogConvert lines-imported: 180961

2017-02-03 02:03:41 FileLogConvert LogConvert state: importing wz_Heizung-2016.log actuator|batteryLevel|desired-temp|measured-temp
2017-02-03 02:35:00 FileLogConvert LogConvert state: import done
2017-02-03 02:35:00 FileLogConvert LogConvert file-source: wz_Heizung-2016.log
2017-02-03 02:35:00 FileLogConvert LogConvert destination: logdb
2017-02-03 02:35:00 FileLogConvert LogConvert lines-analysed: 908731
2017-02-03 02:35:00 FileLogConvert LogConvert lines-imported: 614675

2017-02-03 02:38:33 FileLogConvert LogConvert state: importing wz_Heizung-2017.log
2017-02-03 02:39:14 FileLogConvert LogConvert state: import done
2017-02-03 02:39:14 FileLogConvert LogConvert file-source: wz_Heizung-2017.log
2017-02-03 02:39:14 FileLogConvert LogConvert destination: logdb
2017-02-03 02:39:14 FileLogConvert LogConvert lines-analysed: 14747
2017-02-03 02:39:14 FileLogConvert LogConvert lines-imported: 14747

2017-02-03 02:39:48 FileLogConvert LogConvert state: importing sz_Heizung-2017.log actuator|batteryLevel|desired-temp|measured-temp
2017-02-03 02:40:40 FileLogConvert LogConvert state: import done
2017-02-03 02:40:40 FileLogConvert LogConvert file-source: sz_Heizung-2017.log
2017-02-03 02:40:40 FileLogConvert LogConvert destination: logdb
2017-02-03 02:40:40 FileLogConvert LogConvert lines-analysed: 18150
2017-02-03 02:40:40 FileLogConvert LogConvert lines-imported: 18150

2017-02-03 11:02:29 FileLogConvert LogConvert state: importing ku_Sensor_TK-2017.log
2017-02-03 11:03:29 FileLogConvert LogConvert state: import done
2017-02-03 11:03:29 FileLogConvert LogConvert file-source: ku_Sensor_TK-2017.log
2017-02-03 11:03:29 FileLogConvert LogConvert destination: logdb
2017-02-03 11:03:29 FileLogConvert LogConvert lines-analysed: 21293
2017-02-03 11:03:29 FileLogConvert LogConvert lines-imported: 21293

2017-02-03 11:07:52 FileLogConvert LogConvert state: importing sz_SD1-2017.log power|energy
2017-02-03 11:08:03 FileLogConvert LogConvert state: import done
2017-02-03 11:08:03 FileLogConvert LogConvert file-source: sz_SD1-2017.log
2017-02-03 11:08:03 FileLogConvert LogConvert destination: logdb
2017-02-03 11:08:03 FileLogConvert LogConvert lines-analysed: 3481
2017-02-03 11:08:03 FileLogConvert LogConvert lines-imported: 3457

2017-02-03 11:08:29 FileLogConvert LogConvert state: importing sz_SD2-2017.log power|energy
2017-02-03 11:08:40 FileLogConvert LogConvert state: import done
2017-02-03 11:08:40 FileLogConvert LogConvert file-source: sz_SD2-2017.log
2017-02-03 11:08:40 FileLogConvert LogConvert destination: logdb
2017-02-03 11:08:40 FileLogConvert LogConvert lines-analysed: 4162
2017-02-03 11:08:40 FileLogConvert LogConvert lines-imported: 4150

2017-02-03 11:09:14 FileLogConvert LogConvert state: importing sz_Sensor-2017.log
2017-02-03 11:09:35 FileLogConvert LogConvert state: import done
2017-02-03 11:09:35 FileLogConvert LogConvert file-source: sz_Sensor-2017.log
2017-02-03 11:09:35 FileLogConvert LogConvert destination: logdb
2017-02-03 11:09:35 FileLogConvert LogConvert lines-analysed: 7378
2017-02-03 11:09:35 FileLogConvert LogConvert lines-imported: 7378

2017-02-03 11:10:36 FileLogConvert LogConvert state: importing sz_Sensor-2016.log temperature|luminance|battery
2017-02-03 11:17:07 FileLogConvert LogConvert state: import done
2017-02-03 11:17:07 FileLogConvert LogConvert file-source: sz_Sensor-2016.log
2017-02-03 11:17:07 FileLogConvert LogConvert destination: logdb
2017-02-03 11:17:07 FileLogConvert LogConvert lines-analysed: 134520
2017-02-03 11:17:07 FileLogConvert LogConvert lines-imported: 134326

2017-02-03 12:37:30 FileLogConvert LogConvert state: importing wz_CO20-2016.log voc
2017-02-03 12:41:19 FileLogConvert LogConvert state: import done
2017-02-03 12:41:19 FileLogConvert LogConvert file-source: wz_CO20-2016.log
2017-02-03 12:41:19 FileLogConvert LogConvert destination: logdb
2017-02-03 12:41:19 FileLogConvert LogConvert lines-analysed: 76364

2017-02-03 12:45:50 FileLogConvert LogConvert state: importing wz_CO20-2017.log
2017-02-03 12:46:12 FileLogConvert LogConvert state: import done
2017-02-03 12:46:12 FileLogConvert LogConvert file-source: wz_CO20-2017.log
2017-02-03 12:46:12 FileLogConvert LogConvert destination: logdb
2017-02-03 12:46:12 FileLogConvert LogConvert lines-analysed: 7586
2017-02-03 12:46:12 FileLogConvert LogConvert lines-imported: 7586

2017-02-03 12:47:00 FileLogConvert LogConvert state: importing wz_SD1-2017.log power|energy
2017-02-03 12:48:06 FileLogConvert LogConvert state: import done
2017-02-03 12:48:06 FileLogConvert LogConvert file-source: wz_SD1-2017.log
2017-02-03 12:48:06 FileLogConvert LogConvert destination: logdb
2017-02-03 12:48:06 FileLogConvert LogConvert lines-analysed: 23377
2017-02-03 12:48:06 FileLogConvert LogConvert lines-imported: 23334

2017-02-03 12:48:49 FileLogConvert LogConvert state: importing wz_SD2-2017.log
2017-02-03 12:49:14 FileLogConvert LogConvert state: import done
2017-02-03 12:49:14 FileLogConvert LogConvert file-source: wz_SD2-2017.log
2017-02-03 12:49:14 FileLogConvert LogConvert destination: logdb
2017-02-03 12:49:14 FileLogConvert LogConvert lines-analysed: 6727
2017-02-03 12:49:14 FileLogConvert LogConvert lines-imported: 6727

2017-02-03 12:50:08 FileLogConvert LogConvert state: importing wz_SD4-2017.log power|energy
2017-02-03 12:50:15 FileLogConvert LogConvert state: import done
2017-02-03 12:50:15 FileLogConvert LogConvert file-source: wz_SD4-2017.log
2017-02-03 12:50:15 FileLogConvert LogConvert destination: logdb
2017-02-03 12:50:15 FileLogConvert LogConvert lines-analysed: 2599
2017-02-03 12:50:15 FileLogConvert LogConvert lines-imported: 2585

2017-02-03 12:50:34 FileLogConvert LogConvert state: importing wz_SD5-2017.log power|energy
2017-02-03 12:50:41 FileLogConvert LogConvert state: import done
2017-02-03 12:50:41 FileLogConvert LogConvert file-source: wz_SD5-2017.log
2017-02-03 12:50:41 FileLogConvert LogConvert destination: logdb
2017-02-03 12:50:41 FileLogConvert LogConvert lines-analysed: 2229
2017-02-03 12:50:41 FileLogConvert LogConvert lines-imported: 2192

2017-02-03 12:51:21 FileLogConvert LogConvert state: importing wz_Sensor-2017.log
2017-02-03 12:51:36 FileLogConvert LogConvert state: import done
2017-02-03 12:51:36 FileLogConvert LogConvert file-source: wz_Sensor-2017.log
2017-02-03 12:51:36 FileLogConvert LogConvert destination: logdb
2017-02-03 12:51:36 FileLogConvert LogConvert lines-analysed: 5338
2017-02-03 12:51:36 FileLogConvert LogConvert lines-imported: 5338

2017-02-03 12:52:16 FileLogConvert LogConvert state: importing wz_SD3-2017.log
2017-02-03 12:53:42 FileLogConvert LogConvert state: import done
2017-02-03 12:53:42 FileLogConvert LogConvert file-source: wz_SD3-2017.log
2017-02-03 12:53:42 FileLogConvert LogConvert destination: logdb
2017-02-03 12:53:42 FileLogConvert LogConvert lines-analysed: 31064
2017-02-03 12:53:42 FileLogConvert LogConvert lines-imported: 31064

2017-02-03 12:57:34 FileLogConvert LogConvert state: importing wz_SD3-2016.log power|energy
2017-02-03 13:00:12 FileLogConvert LogConvert state: import done
2017-02-03 13:00:12 FileLogConvert LogConvert file-source: wz_SD3-2016.log
2017-02-03 13:00:12 FileLogConvert LogConvert destination: logdb
2017-02-03 13:00:12 FileLogConvert LogConvert lines-analysed: 55685
2017-02-03 13:00:12 FileLogConvert LogConvert lines-imported: 55587

2017-02-03 13:01:26 FileLogConvert LogConvert state: importing wz_SD2-2016.log power|energy
2017-02-03 13:11:02 FileLogConvert LogConvert state: import done
2017-02-03 13:11:02 FileLogConvert LogConvert file-source: wz_SD2-2016.log
2017-02-03 13:11:02 FileLogConvert LogConvert destination: logdb
2017-02-03 13:11:02 FileLogConvert LogConvert lines-analysed: 215934
2017-02-03 13:11:02 FileLogConvert LogConvert lines-imported: 197843

2017-02-03 13:12:21 FileLogConvert LogConvert state: importing wz_Sensor-2016.log temperature|battery|luminance
2017-02-03 13:16:42 FileLogConvert LogConvert state: import done
2017-02-03 13:16:42 FileLogConvert LogConvert file-source: wz_Sensor-2016.log
2017-02-03 13:16:42 FileLogConvert LogConvert destination: logdb
2017-02-03 13:16:42 FileLogConvert LogConvert lines-analysed: 96132
2017-02-03 13:16:42 FileLogConvert LogConvert lines-imported: 90217

2017-02-03 13:21:34 FileLogConvert LogConvert state: importing wz_Sensor_Technik-2017.log dewpoint|humidity|temperature
2017-02-03 13:25:13 FileLogConvert LogConvert state: import done
2017-02-03 13:25:13 FileLogConvert LogConvert file-source: wz_Sensor_Technik-2017.log
2017-02-03 13:25:13 FileLogConvert LogConvert destination: logdb
2017-02-03 13:25:13 FileLogConvert LogConvert lines-analysed: 76582
2017-02-03 13:25:13 FileLogConvert LogConvert lines-imported: 75924

2017-02-03 13:27:45 FileLogConvert LogConvert state: importing wz_Sensor_Technik-2016.log temperature|humidity|dewpoint
2017-02-03 13:42:16 FileLogConvert LogConvert state: import done
2017-02-03 13:42:16 FileLogConvert LogConvert file-source: wz_Sensor_Technik-2016.log
2017-02-03 13:42:16 FileLogConvert LogConvert destination: logdb
2017-02-03 13:42:16 FileLogConvert LogConvert lines-analysed: 367594
2017-02-03 13:42:16 FileLogConvert LogConvert lines-imported: 296591


Nach einem "reduceLog 35" im DbLog wurde die Datenbank von 7272942 Einträgen auf 1728210 Einträge geschrumpft.
ZitatlastReduceLogResult Rows processed: 5944765, deleted: 5528207, time: 2036.02sec

UPDATE 5.2.2017

  • Fix für SQLite und PSQL
  • Fix2 für SQLite und PSQL
  • mehr Log Ausgaben eingebaut
  • Prüfung des übergebenen DbLog Device beim define

UPDATE 9.2.2017

  • Events ohne bestimmtes Reading werden nun beim Analysieren auch erfasst und aufgelistet - werden diese Events auch importiert/konvertiert, so werden sie als Reading state gewertet

UPDATE 10.2.2017

  • "set analyseFileEvents" ist nun zu "get fileEvents" geworden - damit lädt die Seite nicht mehr neu
  • nachfolgende Parameter für "set convert/import" können nun direkt hinter dem jeweiligen set eingegeben werden - dadurch kehrt man auch direkt auf die Details Seite des FileLogConvert Device zurück
  • command-.... Readings abgeschafft, es gibt statt dessen ein neues Reading cmd, welches aber nur noch den Log Datei Namen und den möglichen Regex anzeigt - kann man kopieren, anpassen und direkt hinter dem jeweiligen set Befehl einfügen
  • neues Reading regex, welches den zuletzt benutzten Regex anzeigt (zwecks Wiederverwendung)
  • alle Readings werden nun beim Definieren des Device direkt (leer) angelegt
  • mögliche auftretende Fehler werden nun in state reported
  • Internal files_db hinzugefügt

UPDATE 5.9.2017
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

AndreasR

Hallo Dan,

funktioniert gut - keine Probleme mit dem Modul - selbsterklärend;

Ich habe es nun auch in meinem Live System im Einsatz  und stelle langsam um auf DbLog - aktuell läuft parallel noch FileLog mit;
Aufgrund des nun so leichten leichten Imports der alten Daten kann ich ja langsam umstellen ...

Gruß

Andreas

Martin W

Hallo Dan,

das ist genau das Modul, auf das ich gewartet habe um umzustellen :).

Ich probiere mich gerade mit dblog mit sqlite.
Das Logging in die db funktioniert, die Analyse der alten Logfiles auch, aber sobald ich importieren möchte bekomme ich folgenden Fehler:
--
DbLog : - Can't connect to data source 'dbi:' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at ./FHEM/93_DbLog.pm line 1614
--
Muss ich noch eine Enviroment-Variabel mit irgendwas setzten?
Danke & Gruß
Martin

DeeSPe

Hallo Martin,

danke für Dein Feedback.

Wie die Fehlermeldung schon andeutet ist es ein Problem in 93_DbLog.pm!
Ich verwende nur die Funktion DbLog_ExecSQL aus dem DbLog Modul.
Ich meine die sollte die Datenbankverbindung so herstellen wie benötigt! Aber das klappt wohl nicht immer. :o
Aber genau um solche Schwachstellen aufzudecken mache ich das ja hier. ;)

Was für eine Datenbank benutzt Du denn?
Könntest Du mal bitte das Internal "dbconn" aus Deinem DbLog Device posten?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Martin W

Zitat von: DeeSPe am 05 Februar 2017, 19:43:49
Was für eine Datenbank benutzt Du denn?
Könntest Du mal bitte das Internal "dbconn" aus Deinem DbLog Device posten?

Gruß
Dan

Aber klar doch:

dbconn     SQLite:dbname=/opt/fhem/fhem.db

Datenbank ist sqlite (3.7.13) auf einen raspberry (raspbian jessi,4.1.19+)


Viele Grüße
Martin

DeeSPe

Zitat von: Martin W am 05 Februar 2017, 20:09:02
Aber klar doch:

dbconn     SQLite:dbname=/opt/fhem/fhem.db

Datenbank ist sqlite (3.7.13) auf einen raspberry (raspbian jessi,4.1.19+)


Viele Grüße
Martin

Okay, jetzt ist es mir klar warum es nicht funktioniert.
Klar, an SQLite hatte ich nicht gedacht dass da der dbconn String anders aussieht.
Gut dass wir den Fall jetzt haben. 8)
Ich überlege mir mal was dazu und muss wohl auch die anderen DB Optionen prüfen.
So lange bitte ich um Geduld.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

pink99panther

Boaaaaa,
und ich hab gedacht ich hab wieder was falsch gemacht :)
Bin seit 2 Stunden am Ochsen.
Hab auch QSLite auf meinem Raspi.

Trotz dem vielen vielen Dank schon mal im Voraus für das tolle Modul!
Freue mich schon drauf, wenn das Problem gefixt ist.

Gruß
p99p


DeeSPe

Ich denke ich habe es gefixt.
Die Version im ersten Beitrag ist aktualisiert. ;)

Über neue Tests und Feedback freue ich mich sehr.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

pink99panther

#8
Sri,
beim mir klemmt es noch :(

2017.02.05 22:35:56 1: PERL WARNING: Use of uninitialized value $name in concatenation (.) or string at ./FHEM/93_DbLog.pm line 1611, <FH> line 13862.
2017.02.05 22:35:56 1: PERL WARNING: Use of uninitialized value $dbconn in concatenation (.) or string at ./FHEM/93_DbLog.pm line 1614, <FH> line 13862.
2017.02.05 22:35:56 1: PERL WARNING: Use of uninitialized value $name in concatenation (.) or string at ./FHEM/93_DbLog.pm line 1617, <FH> line 13862.
2017.02.05 22:35:56 2: DbLog : - Can't connect to data source 'dbi:' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at ./FHEM/93_DbLog.pm line 1614.


EDIT: reload hab ich natürlich gemacht

DeeSPe

Zitat von: pink99panther am 05 Februar 2017, 22:39:55
Sri,
beim mir klemmt es noch :(

2017.02.05 22:35:56 1: PERL WARNING: Use of uninitialized value $name in concatenation (.) or string at ./FHEM/93_DbLog.pm line 1611, <FH> line 13862.
2017.02.05 22:35:56 1: PERL WARNING: Use of uninitialized value $dbconn in concatenation (.) or string at ./FHEM/93_DbLog.pm line 1614, <FH> line 13862.
2017.02.05 22:35:56 1: PERL WARNING: Use of uninitialized value $name in concatenation (.) or string at ./FHEM/93_DbLog.pm line 1617, <FH> line 13862.
2017.02.05 22:35:56 2: DbLog : - Can't connect to data source 'dbi:' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at ./FHEM/93_DbLog.pm line 1614.


EDIT: reload hab ich natürlich gemacht

Dein DbLog Device funktioniert aber soweit?
So wie es mir aussieht funktioniert das schon nicht.

Dein FHEM ist sonst aktuell?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

pink99panther

#10
Fhem ist aktuell

logdevice funzt

EDIT Gibt es evtl. in der Logdatei Besonderheiten?
2017-02-01_00:01:04 TempDiff T_Diff: -0.07
2017-02-01_00:01:04 TempDiff Sonne: off
2017-02-01_00:01:06 TempDiff T_Diff: -0.07
2017-02-01_00:01:06 TempDiff Sonne: off
2017-02-01_00:01:06 SonnenSensor SchattTemp: 1.75
2017-02-01_00:01:07 TempDiff T_Diff: -0.38
2017-02-01_00:01:07 TempDiff Sonne: off
2017-02-01_00:01:07 SonnenSensor SonnTemp: 1.81
2017-02-01_00:02:04 TempDiff T_Diff: 0.06
2017-02-01_00:02:04 TempDiff Sonne: off
2017-02-01_00:02:06 TempDiff T_Diff: 0.06
2017-02-01_00:02:06 TempDiff Sonne: off
2017-02-01_00:02:06 SonnenSensor SchattTemp: 1.94
2017-02-01_00:02:07 TempDiff T_Diff: -0.13
2017-02-01_00:02:07 TempDiff Sonne: off
2017-02-01_00:02:07 SonnenSensor SonnTemp: 1.87
2017-02-01_00:03:04 TempDiff T_Diff: -0.07
2017-02-01_00:03:04 TempDiff Sonne: off
2017-02-01_00:03:06 TempDiff T_Diff: -0.07
2017-02-01_00:03:06 TempDiff Sonne: off
2017-02-01_00:03:06 SonnenSensor SchattTemp: 1.87
2017-02-01_00:03:07 TempDiff T_Diff: 0
2017-02-01_00:03:07 TempDiff Sonne: off
2017-02-01_00:03:07 SonnenSensor SonnTemp: 1.75
2017-02-01_00:04:04 TempDiff T_Diff: -0.12
2017-02-01_00:04:04 TempDiff Sonne: off
2017-02-01_00:04:06 TempDiff T_Diff: -0.12
2017-02-01_00:04:06 TempDiff Sonne: off
2017-02-01_00:04:06 SonnenSensor SchattTemp: 1.75
2017-02-01_00:04:07 TempDiff T_Diff: 0
2017-02-01_00:04:07 TempDiff Sonne: off
2017-02-01_00:04:07 SonnenSensor SonnTemp: 1.75
2017-02-01_00:05:04 TempDiff T_Diff: 0
2017-02-01_00:05:05 TempDiff Sonne: off
2017-02-01_00:05:06 TempDiff T_Diff: 0
2017-02-01_00:05:06 TempDiff Sonne: off
2017-02-01_00:05:06 SonnenSensor SchattTemp: 1.87
2017-02-01_00:05:07 TempDiff T_Diff: -0.12
2017-02-01_00:05:07 TempDiff Sonne: off
2017-02-01_00:05:07 SonnenSensor SonnTemp: 1.87
2017-02-01_00:06:05 TempDiff T_Diff: 0
2017-02-01_00:06:05 TempDiff Sonne: off
2017-02-01_00:06:06 TempDiff T_Diff: 0
2017-02-01_00:06:06 TempDiff Sonne: off
2017-02-01_00:06:06 SonnenSensor SchattTemp: 1.87
2017-02-01_00:06:07 TempDiff T_Diff: 0
2017-02-01_00:06:07 TempDiff Sonne: off
2017-02-01_00:06:07 SonnenSensor SonnTemp: 1.81
2017-02-01_00:07:05 TempDiff T_Diff: -0.06
2017-02-01_00:07:05 TempDiff Sonne: off
2017-02-01_00:07:06 TempDiff T_Diff: -0.06
2017-02-01_00:07:06 TempDiff Sonne: off
2017-02-01_00:07:06 SonnenSensor SchattTemp: 1.62
2017-02-01_00:07:07 TempDiff T_Diff: 0.19
2017-02-01_00:07:07 TempDiff Sonne: off
2017-02-01_00:07:07 SonnenSensor SonnTemp: 1.56
2017-02-01_00:08:05 TempDiff T_Diff: -0.06
2017-02-01_00:08:05 TempDiff Sonne: off
2017-02-01_00:08:06 TempDiff T_Diff: -0.06
2017-02-01_00:08:06 TempDiff Sonne: off
2017-02-01_00:08:06 SonnenSensor SchattTemp: 1.50
2017-02-01_00:08:07 TempDiff T_Diff: 0.06
2017-02-01_00:08:07 TempDiff Sonne: off
2017-02-01_00:08:08 SonnenSensor SonnTemp: 1.44
2017-02-01_00:09:05 TempDiff T_Diff: -0.06
2017-02-01_00:09:05 TempDiff Sonne: off
2017-02-01_00:09:07 TempDiff T_Diff: -0.06
2017-02-01_00:09:07 TempDiff Sonne: off
2017-02-01_00:09:07 SonnenSensor SchattTemp: 1.56
2017-02-01_00:09:08 TempDiff T_Diff: -0.12
2017-02-01_00:09:08 TempDiff Sonne: off
2017-02-01_00:09:08 SonnenSensor SonnTemp: 1.44
2017-02-01_00:10:05 TempDiff T_Diff: -0.12
2017-02-01_00:10:05 TempDiff Sonne: off
2017-02-01_00:10:07 TempDiff T_Diff: -0.12
2017-02-01_00:10:07 TempDiff Sonne: off
2017-02-01_00:10:07 SonnenSensor SchattTemp: 1.50
2017-02-01_00:10:08 TempDiff T_Diff: -0.06
2017-02-01_00:10:08 TempDiff Sonne: off
2017-02-01_00:10:08 SonnenSensor SonnTemp: 1.37
2017-02-01_00:11:05 TempDiff T_Diff: -0.13
2017-02-01_00:11:05 TempDiff Sonne: off
2017-02-01_00:11:07 TempDiff T_Diff: -0.13
2017-02-01_00:11:07 TempDiff Sonne: off
2017-02-01_00:11:07 SonnenSensor SchattTemp: 1.44
2017-02-01_00:11:08 TempDiff T_Diff: -0.07
2017-02-01_00:11:08 TempDiff Sonne: off
2017-02-01_00:11:08 SonnenSensor SonnTemp: 1.31
2017-02-01_00:12:05 TempDiff T_Diff: -0.13
2017-02-01_00:12:05 TempDiff Sonne: off
2017-02-01_00:12:07 TempDiff T_Diff: -0.13
2017-02-01_00:12:07 TempDiff Sonne: off
2017-02-01_00:12:07 SonnenSensor SchattTemp: 1.37
2017-02-01_00:12:08 TempDiff T_Diff: -0.06
2017-02-01_00:12:08 TempDiff Sonne: off
2017-02-01_00:12:08 SonnenSensor SonnTemp: 1.25
2017-02-01_00:13:05 TempDiff T_Diff: -0.12
2017-02-01_00:13:05 TempDiff Sonne: off
2017-02-01_00:13:07 TempDiff T_Diff: -0.12
2017-02-01_00:13:07 TempDiff Sonne: off
2017-02-01_00:13:07 SonnenSensor SchattTemp: 1.31
2017-02-01_00:13:08 TempDiff T_Diff: -0.06
2017-02-01_00:13:08 TempDiff Sonne: off
2017-02-01_00:13:08 SonnenSensor SonnTemp: 1.25
2017-02-01_00:14:05 TempDiff T_Diff: -0.06
2017-02-01_00:14:05 TempDiff Sonne: off
2017-02-01_00:14:07 TempDiff T_Diff: -0.06
2017-02-01_00:14:07 TempDiff Sonne: off
2017-02-01_00:14:07 SonnenSensor SchattTemp: 1.37
2017-02-01_00:14:08 TempDiff T_Diff: -0.12
2017-02-01_00:14:08 TempDiff Sonne: off
2017-02-01_00:14:08 SonnenSensor SonnTemp: 1.31

DeeSPe

Hab nun den SQL Query nochmals vereinfacht.
Update im ersten Beitrag.

Soeben habe ich mir auch selbst eine DbLog Instanz mit SQLite aufgesetzt und der Import klappt bei mir ohne Fehlermeldungen.

Gruß
Dan

EDIT: Auch der Import von Deinem Beispiel Log hat bei mir problemlos geklappt.
Zitat
     2017-02-05 23:28:53   command-csv     set LogConvertLite convert2csv test.log T_Diff|Sonne|SchattTemp|SonnTemp
     2017-02-05 23:28:53   command-db      set LogConvertLite import2DbLog test.log T_Diff|Sonne|SchattTemp|SonnTemp
     2017-02-05 23:28:53   command-sql     set LogConvertLite convert2sql test.log T_Diff|Sonne|SchattTemp|SonnTemp
     2017-02-05 23:29:18   destination     DbLogLite
     2017-02-05 23:28:53   events          T_Diff Sonne SchattTemp SonnTemp
     2017-02-05 23:28:53   file-analysed   test.log
     2017-02-05 23:29:18   file-source     test.log
     2017-02-05 23:29:18   lines-analysed  112
     2017-02-05 23:29:18   lines-imported  112
     2017-02-05 23:29:18   state           import done
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

pink99panther

Jetzt hat es funktioniert  :) :) :) :) :)
Hab das Device gelöscht die Version noch mal aktualisiert,
den Raspbi rebootet und FileLogConvert-Device neu angelegt.

Vielen Dank für die Mühe.
p99p

DeeSPe

Zitat von: pink99panther am 06 Februar 2017, 07:35:26
Jetzt hat es funktioniert  :) :) :) :) :)
Hab das Device gelöscht die Version noch mal aktualisiert,
den Raspbi rebootet und FileLogConvert-Device neu angelegt.

Vielen Dank für die Mühe.
p99p

Na super, so soll es ja sein. 8)

Viel Erfolg beim Import!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Amenophis86

#14
Finde die Idee top. Allerdings habe ich eine Frage. Ich würde gerne auch meine Fenster/Tür Sensoren importieren. Diese schreiben natürlich ins Logile nur open/closed/tilted rein. Gibt es dafür auch eine Möglichkeit?

Edit:
Und ich hätte gerne die Möglichkeit eine File nochmal zu converten. Mir ist zB eben ein Fehler unterlaufen und jetzt lässt mich das Modul die Datei nicht nochmal converten, da ich das bereits getan habe. Eigentlich ist die Idee gut, damit man weiß was man gemacht hat, aber das sollte man auch ausstellen können.

Edit2:
Weiterhin sollte es die Möglichkeit geben die erstelle SQL Datei (mit den gefilterten Readings) über FHEM zu impoertieren. Gerade bei größeren Dateien kann das sehr hilfreich sein, wenn die DB nur eine bestimmte Größe der Datei bzw. nur eine bestimmte Zeilen Anzahl bei SQL zulässt.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...