Modul 98_FileLogConvert - Konvertiert FileLog zu CSV/SQL oder Import in DbLog

Begonnen von DeeSPe, 29 Januar 2017, 15:16:18

Vorheriges Thema - Nächstes Thema

DeeSPe

Ich hab da mal was gebastelt!!! 8)

Da ich nun auf DbLog umgestiegen bin, ist dieses Modul aus der Not entstanden die alten FileLog(s) in die Datenbank importieren zu wollen.
Nach Recherche im Forum habe ich nur diesen Beitrag gefunden, der mich dann auf die Idee dieses Moduls gebracht hat. Die RegEx Verarbeitung im Editor war so grottenlangsam dass mein kleines MacBook ewig damit zu tun hat und ich den Editor nicht benutzen konnte.
Erst hatte ich ein Perl Skript am Wickel bis ich dann beschloss ein FHEM Modul daraus zu stricken.

Es besteht die Möglichkeit vorhandene FileLog Dateien in CSV und/oder SQL Dateien zu konvertieren oder aber auch direkt in DBlog zu importieren.

Nach 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!!!

Da dieses Modul FHEM während der Ausführung von Konvertierung und/oder Import komplett blockiert, empfehle ich das Modul nicht im Produktiv System einzusetzen.
Ich habe mir bspw. die FileLog Dateien auf mein Testsystem kopiert und dort ein DbLog Device angelegt welches sich mit der Datenbank im Produktiv System verbindet (aber sonst keine Events schreibt, indem ich einen nicht vorhandenen RegEx angegeben habe). So kann ich das Testsystem blockieren ohne zu stören.


Man kann und sollte erst einmal die vorhandenen FileLog Datei(en) analysieren:
set <name> analyseFileEvents 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

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

Ach ja, sobald eine Datei konvertiert/importiert wurde, erscheint diese nicht mehr im jeweiligen set Dropdown! ;)
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.

Falls Fragen sind, immer her damit!

Viel Spaß.

Gruß
Dan

EDIT: commandref ist auch mit dran.

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.







UPDATE 1.2.2017:

  • Modul ist  nun non-blocking und kann damit auch im Produktivsystem eingesetzt werden
  • falls das Device im Log mit selben Namen im bestehenden FHEM existiert, so wird dessen TYPE in die DB geschrieben
  • falls vorhanden wird nun auch UNIT in der DB befüllt
  • im Attribut logdir kann nun ein alternativer Ordner für die FileLog Dateien angegeben werden - dieser Ordner muss sich auch unter ".../fhem/" befinden
  • in state wird nun der aktuelle Status besser dargestellt
  • sql2DbLog ersatzlos entfernt
  • allgemeine Verarbeitungsgeschwindigkeit und Speicherauslastung wurden drastisch optimiert

  • Eingaben bei Set und Attribut werden nun validiert und ggf. eine Fehlermeldung zurück gegeben
  • weitere kleine Probleme beseitigt
  • commandref angepasst und nochmal deutlich überarbeitet

UPDATE 3.2.2017:

  • Fehlerausgabe hinzugefügt wenn Log Datei nicht vorhanden ist
  • initiales Setzen von STATE geändert auf state
  • Regex bei Konvertierung/Import in state hinzugefügt
  • Modul vorbereitet für offiziellen SVN Check-in

EDIT: Weiter geht es im nun offiziellen Thema zum Modul.
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,

erstmal Danke für das Tool.

Ich hatte schon nach sowas gesucht da ich umsteigen möchte auf dblog - nur keine Lust hatte die mühevoll gesammelten Daten von Hand rüberzuschieben.

Um ein wenig DB Erfahrungen aufzufrischen stelle ich mein Testsystem auf DBlog um und habe dein Modul installiert (RAspi 3 / Jessie / aktuelles Fhem) und probiere es aus.

Es blockiert wirklich - FHEM komplett - Aber irgendwann gehts es auch wieder .. währenddessen kann man auf der anderen Seite (Sequel Pro auf dem Mac) sehen wie die Daten in die Datenbank reinlaufen :-)

Das Feld TYPE bleibt dabei leer - ist das Absicht?

Vor Begin der Konvertierung würde ich den STATE des Moduls auf "RUNNING" oder so setzten um dem Anwender die Panik beim einfrieren des FhemWeb's zu nehmen ...


Gruß

Andreas

DeeSPe

Danke für Dein Feedback Andreas.

Ich versuche das Ganze gerade auf non-blocking umzustellen!
Mein Fortschritte sind aber heute eher bescheiden. >:( Das ist aber halt an manchen Tagen so...

Wir haben im DbLog Thema schon darüber diskutiert das dann in DbLog mit zu integrieren!
Dafür muss es aber erst mal non-blocking sein.

Das Feld TYPE bleibt leer weil es eben leider nicht mit im FileLog steht.
Was nicht da ist, kann auch nicht in die DB! 8)

In meiner jetzigen Dev Version des Moduls zeigt es im state auch an wenn es loslegt und womit. ;)

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

DeeSPe

Bin am non-blocking dran!
Kann schon erste Erfolge verzeichnen. 8)
Schneller ist es natürlich dann auch nicht, aber wenigstens blockiert nichts mehr.

Melde mich in den nächsten Tagen, sobald alles non-blocking ist. :D

Gruß
Dan

EDIT: Sofern das zu importierende Device in der aktuellen FHEM Installation mit selben Namen auch existiert, so wird TYPE von diesem bezogen und auch mit in die DB geschrieben. Ebenso versuche ich das mit UNIT.
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

DeeSPe

Ein Update steht bereit!
Das Modul ist nun komplett non-blocking und hat auch einige weitere Verbesserungen erhalten.
Update und Changelog im ersten Beitrag.

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

DeeSPe

Hab in geistiger Umnachtung das Event leider nicht komplett zusammengebaut.
Habe es gerade gefixt und das Modul im ersten Beitrag aktualisiert.

Ein paar mögliche Fehleingaben vom Benutzer will ich noch abfangen, sonst ist das Modul aber schon so wie ich es mir vorstelle und auch stabil.

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

MichaelT

Hallo Dan,

habe dein Modul mal geladen und eine Versuch des Imports gestartet.

Die Analyse eines Logfiles zeigt die Events korrekt an und auch die lines-analysed werden korrekt angezeigt,
Wenn ich nun die Datei mit
set logconv import2DbLog OG_BAD_Fe-2016.log
importieren möchte, sagt dein Modul "import done" aber ich sehe keine Datensätze in Current oder History der logdb

Auffälig sind die Einträge in der Current-Tabelle die - meine ich - beim Import entstanden sind.
siehe Bild

Beim Schreiben fällt mir auf: Muss das Device im zum Regexp des logdb passen?

list logconv
Internals:
   CFGFN
   DEF        logdb
   NAME       logconv
   NR         22940
   STATE      convert done
   TYPE       FileLogConvert
   files_csv  0
   files_log  167
   files_sql  1
   Readings:
     2017-02-01 12:34:19   command-csv     set logconv convert2csv OG_BAD_Fe-2016.log alive|battery|contact|cover|trigDst_vccu|trigger_cnt|Activity
     2017-02-01 12:34:19   command-db      set logconv import2DbLog OG_BAD_Fe-2016.log alive|battery|contact|cover|trigDst_vccu|trigger_cnt|Activity
     2017-02-01 12:34:19   command-sql     set logconv convert2sql OG_BAD_Fe-2016.log alive|battery|contact|cover|trigDst_vccu|trigger_cnt|Activity
     2017-02-01 12:47:10   destination     OG_BAD_Fe-2016.sql
     2017-02-01 12:34:19   events          alive battery contact cover trigDst_vccu trigger_cnt Activity
     2017-02-01 12:34:19   file-analysed   OG_BAD_Fe-2016.log
     2017-02-01 12:47:10   file-source     OG_BAD_Fe-2016.log
     2017-02-01 12:47:10   lines-analysed  5175
     2017-02-01 12:47:10   lines-converted 4085
     2017-02-01 12:35:33   lines-imported  4085
     2017-02-01 12:47:10   state           convert done
   Helper:
     Filedata:
       cmd        convert2sql
       db         fhem
       dblog      logdb
       dir        ./log
       regex
       source     OG_BAD_Fe-2016.log
Attributes:
   room       System




list logdb
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DBMODEL    MYSQL
   DEF        ./db.conf ((DG_SPS):.*|EG_BAD_HKth:.[^:].*|EG_BAD_HK:.*|EG_BAD_Fe:.*|GA_WS_ST1:.*|GA_WS_ST1_Pwr:.*|EG_FLUR_HKth:.[^:].*|EG_FLUR_HK:.*|OG_BAD_RTth:.[^:].*|OG_GZ_RTth:.[^:].*|OG_GZ_HK:.*|OG_SZ_RTth:.[^:].*|OG_SZ_HK:.*|DG_BUE_RTth:.[^:].*|DG_BUE_HK:.*|OG_GZ_FeLi:.*|OG_GZ_FeRe:.*|OG_GZ_FeHi:.*|OG_SZ_FeLi:.*|OG_SZ_FeRe:.*|DG_BUE_Fe:.*|.G_.*_BM:.*|EG_KUE_MD:.*|aussenHelligkeit:twili.*)
   MODE       synchronous
   NAME       logdb
   NR         428
   NTFY_ORDER 50-logdb
   PID        14693
   REGEXP     ((DG_SPS):.*|EG_BAD_HKth:.[^:].*|EG_BAD_HK:.*|EG_BAD_Fe:.*|GA_WS_ST1:.*|GA_WS_ST1_Pwr:.*|EG_FLUR_HKth:.[^:].*|EG_FLUR_HK:.*|OG_BAD_RTth:.[^:].*|OG_GZ_RTth:.[^:].*|OG_GZ_HK:.*|OG_SZ_RTth:.[^:].*|OG_SZ_HK:.*|DG_BUE_RTth:.[^:].*|DG_BUE_HK:.*|OG_GZ_FeLi:.*|OG_GZ_FeRe:.*|OG_GZ_FeHi:.*|OG_SZ_FeLi:.*|OG_SZ_FeRe:.*|DG_BUE_Fe:.*|.G_.*_BM:.*|EG_KUE_MD:.*|aussenHelligkeit:twili.*)
   STATE      connected
   TYPE       DbLog
   VERSION    2.11.1
   dbconn     mysql:database=fhem;host=192.168.4.50;port=3306
   dbuser     fhemuser
   Helper:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   512
     READINGCOL 64
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
   Readings:
     2017-02-01 12:58:28   CacheUsage      28
     2017-02-01 12:58:06   NextSync        2017-02-01 12:58:36 or if CacheUsage 500 reached
     2017-02-01 12:58:07   background_processing_time 0.5290
     2017-01-28 17:25:20   countCurrent    330
     2017-01-28 17:25:20   countHistory    4061057
     2017-02-01 12:58:07   sql_processing_time 0.5061
     2017-02-01 12:58:07   state           connected
     2017-01-28 10:49:41   userCommand     select timestamp, device, reading, value, count(*) as Nr from history group by device, reading order by Nr DESC, device;
     2017-01-28 11:07:13   userCommandResult 2016-12-01 00:00:01
   Cache:
     index      152933
     Memcache:
       152906     2017-02-01 12:58:07|DG_SPS|BRIO|pAct: 604|pAct|604|
       152907     2017-02-01 12:58:08|DG_SPS|BRIO|pAct: 592|pAct|592|
       152908     2017-02-01 12:58:09|DG_SPS|BRIO|pAct: 584|pAct|584|
       152909     2017-02-01 12:58:09|DG_SPS|BRIO|HZ_Vor: 42.4|HZ_Vor|42.4|
       152910     2017-02-01 12:58:09|DG_SPS|BRIO|HZ_Rueck: 42.3|HZ_Rueck|42.3|
       152911     2017-02-01 12:58:10|DG_SPS|BRIO|pAct: 588|pAct|588|
       152912     2017-02-01 12:58:11|DG_SPS|BRIO|pAct: 592|pAct|592|
       152913     2017-02-01 12:58:12|DG_SPS|BRIO|pAct: 588|pAct|588|
       152914     2017-02-01 12:58:14|DG_SPS|BRIO|pAct: 580|pAct|580|
       152915     2017-02-01 12:58:15|DG_SPS|BRIO|HZ_Rueck: 42.4|HZ_Rueck|42.4|
       152916     2017-02-01 12:58:16|DG_SPS|BRIO|pAct: 608|pAct|608|
       152917     2017-02-01 12:58:17|DG_SPS|BRIO|pAct: 600|pAct|600|
       152918     2017-02-01 12:58:17|DG_SPS|BRIO|HZ_Vor: 42.5|HZ_Vor|42.5|
       152919     2017-02-01 12:58:18|OG_BAD_RTth|CUL_HM|humidity: 45|humidity|45|%
       152920     2017-02-01 12:58:18|OG_BAD_RTth|CUL_HM|measured-temp: 20.2|measured-temp|20.2|
       152921     2017-02-01 12:58:18|DG_SPS|BRIO|pAct: 588|pAct|588|
       152922     2017-02-01 12:58:19|DG_SPS|BRIO|pAct: 584|pAct|584|
       152923     2017-02-01 12:58:19|DG_SPS|BRIO|HZ_Rueck: 42.5|HZ_Rueck|42.5|
       152924     2017-02-01 12:58:20|DG_SPS|BRIO|pAct: 588|pAct|588|
       152925     2017-02-01 12:58:21|DG_SPS|BRIO|pAct: 584|pAct|584|
       152926     2017-02-01 12:58:22|DG_SPS|BRIO|pAct: 592|pAct|592|
       152927     2017-02-01 12:58:22|DG_SPS|BRIO|HZ_Vor: 42.6|HZ_Vor|42.6|
       152928     2017-02-01 12:58:23|DG_SPS|BRIO|pAct: 604|pAct|604|
       152929     2017-02-01 12:58:24|DG_SPS|BRIO|HZ_Rueck: 42.6|HZ_Rueck|42.6|
       152930     2017-02-01 12:58:25|DG_SPS|BRIO|pAct: 584|pAct|584|
       152931     2017-02-01 12:58:26|DG_SPS|BRIO|pAct: 588|pAct|588|
       152932     2017-02-01 12:58:28|DG_SPS|BRIO|pAct: 584|pAct|584|
       152933     2017-02-01 12:58:28|DG_SPS|BRIO|HZ_Vor: 42.7|HZ_Vor|42.7|
Attributes:
   DbLogType  Current/History
   asyncMode  1
   cacheEvents 1
   room       System
   showproctime 1
   shutdownWait 2
   verbose    0


Gruß
Michael
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

Hauswart

Sehr interessant, da ich auf irgendwann mal vorhabe endlich auf dblog umzustellen :)

Leider habe ich kein geeignetes Dev-System derzeit  8) :o
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

MichaelT

Hallo Dan,

habe noch ein paar Tests gemacht.

- Regexp von logdb erweitert - kein Erfolg
- Die seltsamen Datensätze in Current gelöscht - wurden nicht wieder neu erzeugt.
- Versuch mit kleinem Logfile wiederholt - keine Änderung


2016-01-01_11:34:23 OG_BAD_Fe alive: yes
2016-01-01_11:34:23 OG_BAD_Fe battery: ok
2016-01-01_11:34:23 OG_BAD_Fe contact: closed (to vccu)
2016-01-01_11:34:23 OG_BAD_Fe cover: closed
2016-01-01_11:34:23 OG_BAD_Fe closed
2016-01-02_11:25:21 OG_BAD_Fe alive: yes
2016-01-02_11:25:21 OG_BAD_Fe battery: ok
2016-01-02_11:25:21 OG_BAD_Fe contact: closed (to vccu)



Meine Datenbank ist MariaDB/Synology  5.5.53-0070

Ansonsten: Feines Modul, Bedienung verständlich und ausreichend.
Danke



EDIT: Weitere Anmerkung: Bei mir wird nach dem Import <Logfile> eine Datei <Logfile>.fhem und nicht <Logfile>.logdb angelegt. Das <Logfile> erscheint auch immer noch in der ComboBox.


Gruß
Michael
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

DeeSPe

Hallo Michael,

das Modul schreibt definitiv nur in history!
Hab den Fehler gerade gefunden und gefixt. Hatte einen Dreher in der Variablenzuweisung. 8)
Die Version im ersten Beitrag ist aktualisiert!

Wenn Du keinen Regex angibst, werden alle Datensätze genommen die vollständig dem FileLog Schema entsprechen.
Wenn es das im FileLog gefundene Device in der aktuellen Konfiguration von FHEM auch gibt, so wird NUR dessen TYPE zusätzlich in die DB geschrieben, da die Info sonst im FileLog nicht vorhanden ist.

Zitat von: Hauswart am 01 Februar 2017, 13:13:10
Leider habe ich kein geeignetes Dev-System derzeit  8) :o

Das ist auch nicht mehr nötig.
Das Modul kann nun schon im Produktivsystem eingesetzt werden da es nicht mehr blockiert.
Es läuft bei mir selbst im Produktivsystem!

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

MichaelT

Hallo Dan,

danke für deine schnelle Korrektur.
Funktioniert nun wie beschrieben.



Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

DeeSPe

Nun werden auch die Eingaben validiert und ggf. Fehlermeldungen ausgegeben.
Das Modul im ersten Beitrag ist aktualisiert.

Wenn keine Fehler mehr gefunden werden, ist das Modul aus meiner Sicht jetzt fertig. 8)

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

Hauswart

Zitat von: DeeSPe am 01 Februar 2017, 14:43:37
Das ist auch nicht mehr nötig.
Das Modul kann nun schon im Produktivsystem eingesetzt werden da es nicht mehr blockiert.
Es läuft bei mir selbst im Produktivsystem!
Mir ging es eher darum, erst mal ein Testsystem von FileLog auf Dblog umzustellen :) Habe mit Dblog noch keinerlei Erfahrung.
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

MichaelT

Hallo Hauswart,

ich bin bei mir auch Schrittweise ohne Testsystem vorgegangen.
Erst dblog anlegen, dann parallel aufzeichnen und dann Filelog abschalten und alte Daten importieren.


Gruß
Michael
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

DeeSPe

Zitat von: MichaelT am 02 Februar 2017, 09:28:08
Hallo Hauswart,

ich bin bei mir auch Schrittweise ohne Testsystem vorgegangen.
Erst dblog anlegen, dann parallel aufzeichnen und dann Filelog abschalten und alte Daten importieren.


Gruß
Michael


Ähnlich bin ich auch vorgegangen.
DbLog anlegen und konfigurieren und erst einmal mitlaufen lassen.
Nach ein paar Tagen überprüfen ob alles läuft, habe ich die DB noch einmal gelöscht, dann die FileLogs alle auf disable gesetzt und mit DbLog von Anfang begonnen. Nachdem jetzt nun das Modul fertig ist, mache ich nach und nach die Altdatenmigration. Das hat ja mehr oder weniger dann Zeit... ;)

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