Autor Thema: FileLogs nach DbLog konvertieren / Migrieren  (Gelesen 4767 mal)

Offline peterk_de

  • Sr. Member
  • ****
  • Beiträge: 764
FileLogs nach DbLog konvertieren / Migrieren
« am: 18 März 2014, 23:36:06 »
Hallo zusammen,

da ich auch nach längerem Suchen nichts erschöpfendes gefunden habe, hier mein kurzes Kochrezept, wie man - unter Windows und Quick and Dirty - seine wertvollen FileLogs nach DbLog migrieren kann. Ich denke vor dem Problem könnten so einige stehen, die wie ich ersteinmal FHEM wie per Default eingestellt mit FileLogs genutzt haben, nun aber ein wenig mehr Statistik betreiben möchten.

Ich gehe davon aus, ihr habt DBlog am Laufen und einige FileLogs, die ihr dort einfügen wollt.

Ich habe dazu verwendet:
- Notepad++
- HeidiSQL

Los geht's:

  • Zuerst öffnet ihr die betreffende log-Datei mit Notepad++ und scrollt mal durch, ob einige Unregelmäßigkeiten drin enthalten sind (z.B. ob ihr das Device einmal umbenannt habt und zu Beginn des Logs ein anderer Name steht als euer aktueller am Ende). Das solltet ihr dann fix mit Search & Replace vereinheitlichen. Früher wurden, zumindest bei Homematic, gern auch einmal Einheiten in den Readings mitgeloggt (ValvePosition: 20 %) - die solltet ihr ggf. auch gleich killen
  • Jetzt formatiert ihr das Log ins CSV-Format um, womit wir dann HeidiSQL füttern. Dazu unter Search & Replace den Regex-Modus anhaken; gesucht wird nach ^(....-..-..)_(..:..:..) (\S*) (\S*): (.*)$ , ersetzt wird mit "\1 \2","\3","","\4: \5","\4","\5","" - das kann dann für eine mehrere MB große Logdatei ein Momentchen dauern. Danach noch kurz die Zeilenumbrüche anzeigen lassen und merken (wurde LF oder RF und LF verwendet) und das Log so speichern.
  • In HeidiSQL wird die Datei über CSV-Datei importieren geöffnet und die fhem-history-Relation ausgewählt. Ihr müsst nur noch die Zeilenumbrüche und das Trennzeichen (Komma statt Semikolon) einmalig im Dialogfeld anpassen. Durch den RegEx wird der bei mir im Filelog überall fehlende"TYP" bzw. die meist fehlende Unit automatisch mit nem Leerstring gefüllt, so dass ihr in HeidiSQL alle Spalten angehakt lassen könnt. Das Einfügen in die DB dauert dann wieder etwas. Ein Haken bei "Client interpretiert Dateiinhalt" geht bei mir signifikant schneller; wenn ihr einen schnellen DB-Server habt, könnte es auch genau andersherum sein.
  • Prinzipiell fertig :-) Jetzt müsstet ihr in der Datenbank auf Wunsch noch die rausgeworfenen Units nachtragen. Das klappt natürlich auch gleich in HeidiSQL mit einem Update, wie z.B.: UPDATE fhem.history SET UNIT='°C' WHERE DEVICE = 'meinthermostatname' AND READING = 'temperature'

Vorteil dieses Halbmanuellen vorgehens: Man kann schnell und unkompliziert Inkonsistenzen in den Logs ausbügeln. Und wenn man wie ich oft geupdatet und umgebastelt hat, gibts davon reichlich.
FHEM auf 2xNUC Proxmox Cluster
7xFHEM2FHEM-Roomnodes
Frontends: 4x TabletUI, HomeKit, Grafana, StreamDeck
IOdevs: 3xHM, 2xHueBridge, CUL868, HarmonyHub
Devices: 73xHomematic, 53xZigBee, 19xTechem, 17xLAN/WiFi, 12xBTLE, 5xIPCAM, 4xSONOS, 2xHomeConnect, DENON, Kfz-OBD2/GPS-Tracker, ..

Offline Icebear

  • Full Member
  • ***
  • Beiträge: 340
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #1 am: 19 April 2014, 02:43:29 »
Vielen dank für den Tip. hab mir nämlich gerade DBeinträge zerhämmert beim umbenennen.

ps. ein on update timestamp für ein feld was normal nur insertet wird ist mal richtig mist :) alle Timestamps zum teufel nach dem ändern des Device ..

bei mir jetzt geändert in

alter table history change TIMESTAMP TIMESTAMP timestamp default current_timestamp

So wird der Timestamp nur beim Insert geschrieben aber nicht mehr bei nem Update.. Just for Info.
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

Offline fhem-me

  • New Member
  • *
  • Beiträge: 27
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #2 am: 03 April 2015, 12:24:00 »
nun habe ich auch meine Daten migriert.
Um die Einheit korrekt in die letzte Spalte zu migrieren habe ich folgende Such- / Ersetzungs-pattern verwendet
^(....-..-..)_(..:..:..) (\S*) (\w*)(: )?(.*?)( (\D*))?$
INSERT INTO "history" VALUES\('\1 \2','\3','','\4\5\6\7','\4','\6','\8'\);
Mit dem Ergebnis kann ich sofort die Daten importieren  :)
FHEM 5.9 auf NUC DbLog(MySQL)
Z-Wave mit ZME_UZB1

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4044
  • Wer anderen eine Bratwurst brät...
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #3 am: 29 Januar 2017, 15:31:56 »
Ich habe aus der Not heraus mal ein kleines Modul gebaut:
98_FileLogConvert.pm

Gruß
Dan
FHEM 5.9, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Offline cs-online

  • Sr. Member
  • ****
  • Beiträge: 863
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #4 am: 08 September 2019, 17:39:19 »
Hallo Dan,

kann es sein, dass das Convertierungs-Modul mit dem aktuellen FHEM nicht mehr läuft ? Bei mir ist das nämlich nicht mehr im COntrib-Verzeichnis und wenn ich das downloade und von Hand in den PM-Ordner kopiere, neustarte und das Modul dann definieren will, kommt die Meldung, dass das Modul nicht geladen werden kann. Oder gibt es inzwischen eine ähnlich einfache, andere Möglichkeit, die Logs in die DB einzuspielen ?

Grüße  Christian
FHEM auf Raspi 2, NanoCul 433 mit V1.65 für IT, NanoCul433 mit a-FW für Eurochrons, HM-CFG-USB-2, HM-WLAN-Gateway,ein paar HM-Aktoren,  2x EBUSD, ESP8266 am Strom-, Gas- , Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Lacrosse-Gateway und Sensoren, Alexa-Fhem... nd da geht noch was

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4267
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #5 am: 08 September 2019, 23:01:33 »
Zitat
Bei mir ist das nämlich nicht mehr im COntrib-Verzeichnis
Du musst es aus dem online (nicht lokelen) contrib laden ->
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/98_FileLogConvert.pm

So ist es auch in der comref von DbLog hinterlegt. Versuch es mit dem Modul nochmal und wenn es dann immernoch nicht geladen werden kann, steht bestimmt etwas dazu im Log.

Grüße,
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline cs-online

  • Sr. Member
  • ****
  • Beiträge: 863
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #6 am: 10 September 2019, 21:22:04 »
...leider das gleiche, wenn ich versuche das mit

define FileLogConvert FileLogConvert
zu definieren (eine Hilfe findet der zu dem Modul leider nicht)

2019.09.10 21:18:25 1: PERL WARNING: Bareword found where operator expected at ./FHEM/98_FileLogConvert.pm line 9, near "98_FileLogConvert"
2019.09.10 21:18:25 1: PERL WARNING: (Missing operator before FileLogConvert?)
2019.09.10 21:18:25 1: PERL WARNING: Bareword found where operator expected at ./FHEM/98_FileLogConvert.pm line 14, near ")
        window"
2019.09.10 21:18:25 1: PERL WARNING: (Missing operator before window?)
2019.09.10 21:18:25 1: PERL WARNING: String found where operator expected at ./FHEM/98_FileLogConvert.pm line 34, near "$(".trac-autofocus""
2019.09.10 21:18:25 1: PERL WARNING: (Missing operator before ".trac-autofocus"?)
2019.09.10 21:18:25 1: PERL WARNING: String found where operator expected at ./FHEM/98_FileLogConvert.pm line 35, near "$(".trac-target-new""
2019.09.10 21:18:25 1: PERL WARNING: (Missing operator before ".trac-target-new"?)
2019.09.10 21:18:25 1: PERL WARNING: String found where operator expected at ./FHEM/98_FileLogConvert.pm line 36, near "$(".trac-scroll""
2019.09.10 21:18:25 1: PERL WARNING: (Missing operator before ".trac-scroll"?)
2019.09.10 21:18:25 1: PERL WARNING: String found where operator expected at ./FHEM/98_FileLogConvert.pm line 37, near "$(".trac-disable-on-submit""
2019.09.10 21:18:25 1: PERL WARNING: (Missing operator before ".trac-disable-on-submit"?)
2019.09.10 21:18:25 1: PERL WARNING: Bareword found where operator expected at ./FHEM/98_FileLogConvert.pm line 40, near ""text/javascript" src"
2019.09.10 21:18:25 1: PERL WARNING: (Missing operator before src?)
2019.09.10 21:18:25 1: reload: Error:Modul 98_FileLogConvert deactivated:
 syntax error at ./FHEM/98_FileLogConvert.pm line 8, near "<"
Unknown regexp modifier "/t" at ./FHEM/98_FileLogConvert.pm line 9, at end of line
Unknown regexp modifier "/t" at ./FHEM/98_FileLogConvert.pm line 9, at end of line
Unknown regexp modifier "/e" at ./FHEM/98_FileLogConvert.pm line 9, at end of line
syntax error at ./FHEM/98_FileLogConvert.pm line 15, near "-->"
syntax error at ./FHEM/98_FileLogConvert.pm line 34, near "$(".trac-autofocus""
syntax error at ./FHEM/98_FileLogConvert.pm line 35, near "$(".trac-target-new""
syntax error at ./FHEM/98_FileLogConvert.pm line 36, near ") {"
syntax error at ./FHEM/98_FileLogConvert.pm line 37, near "$(".trac-disable-on-submit""
syntax error at ./FHEM/98_FileLogConvert.pm line 40, near ""text/javascript" src"
./FHEM/98_FileLogConvert.pm has too many errors.

2019.09.10 21:18:25 0: syntax error at ./FHEM/98_FileLogConvert.pm line 8, near "<"
Unknown regexp modifier "/t" at ./FHEM/98_FileLogConvert.pm line 9, at end of line
Unknown regexp modifier "/t" at ./FHEM/98_FileLogConvert.pm line 9, at end of line
Unknown regexp modifier "/e" at ./FHEM/98_FileLogConvert.pm line 9, at end of line
syntax error at ./FHEM/98_FileLogConvert.pm line 15, near "-->"
syntax error at ./FHEM/98_FileLogConvert.pm line 34, near "$(".trac-autofocus""
syntax error at ./FHEM/98_FileLogConvert.pm line 35, near "$(".trac-target-new""
syntax error at ./FHEM/98_FileLogConvert.pm line 36, near ") {"
syntax error at ./FHEM/98_FileLogConvert.pm line 37, near "$(".trac-disable-on-submit""
syntax error at ./FHEM/98_FileLogConvert.pm line 40, near ""text/javascript" src"
./FHEM/98_FileLogConvert.pm has too many errors.
FHEM auf Raspi 2, NanoCul 433 mit V1.65 für IT, NanoCul433 mit a-FW für Eurochrons, HM-CFG-USB-2, HM-WLAN-Gateway,ein paar HM-Aktoren,  2x EBUSD, ESP8266 am Strom-, Gas- , Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Lacrosse-Gateway und Sensoren, Alexa-Fhem... nd da geht noch was

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4267
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #7 am: 10 September 2019, 22:42:55 »
Also es sieht so als ob du das File nicht richtig heruntergeladen hast. Am Ende der Seite gibt es den Button "Ursprüngliches Format" herunterladen. Damit sollte es funktionieren.

Grüße,
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 13268
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #8 am: 10 September 2019, 22:58:49 »
Tipp:
Einfacher Download mit diesem Befehl in der FHEM Kommandozeile. Bitte so komplett mit den Ausführungszeichen am Anfang und Ende eingeben!!!
"wget -qO ./FHEM/98_FileLogConvert.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/98_FileLogConvert.pm"
Schauen ob das File da ist und die Rechte stimmen, wieder in der FHEM Kommandozeile, Ausgabe erfolgt in der Weboberfläche:
{qx(ls -lha ./FHEM/98_FileLogConvert.pm)}
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline cs-online

  • Sr. Member
  • ****
  • Beiträge: 863
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #9 am: 11 September 2019, 07:50:19 »
:-) Otto, du bist wie immer mein Held !!! Danke, das scheint geholfen zu haben, nun hat der zumindest mal das Device angelegt.

Danke euch beiden !!!

Grüße  Christian
FHEM auf Raspi 2, NanoCul 433 mit V1.65 für IT, NanoCul433 mit a-FW für Eurochrons, HM-CFG-USB-2, HM-WLAN-Gateway,ein paar HM-Aktoren,  2x EBUSD, ESP8266 am Strom-, Gas- , Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Lacrosse-Gateway und Sensoren, Alexa-Fhem... nd da geht noch was

Offline cs-online

  • Sr. Member
  • ****
  • Beiträge: 863
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #10 am: 11 September 2019, 11:46:48 »
...nur für mich zum Verständnis: Muss ich jedes File einzeln angeben und dann konvertieren lassen oder kann man auch alle in einem Verzeichnis nehmen ?

Grüße

Christian
FHEM auf Raspi 2, NanoCul 433 mit V1.65 für IT, NanoCul433 mit a-FW für Eurochrons, HM-CFG-USB-2, HM-WLAN-Gateway,ein paar HM-Aktoren,  2x EBUSD, ESP8266 am Strom-, Gas- , Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Lacrosse-Gateway und Sensoren, Alexa-Fhem... nd da geht noch was

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4044
  • Wer anderen eine Bratwurst brät...
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #11 am: 12 September 2019, 15:13:19 »
...nur für mich zum Verständnis: Muss ich jedes File einzeln angeben und dann konvertieren lassen oder kann man auch alle in einem Verzeichnis nehmen ?

Grüße

Christian

Es geht nur einzeln.

Gruß
Dan
FHEM 5.9, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Offline cs-online

  • Sr. Member
  • ****
  • Beiträge: 863
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #12 am: 12 September 2019, 20:53:05 »
hmmm.... bei ca. 3000 Dateien fällt das dann wohl eher aus...
FHEM auf Raspi 2, NanoCul 433 mit V1.65 für IT, NanoCul433 mit a-FW für Eurochrons, HM-CFG-USB-2, HM-WLAN-Gateway,ein paar HM-Aktoren,  2x EBUSD, ESP8266 am Strom-, Gas- , Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Lacrosse-Gateway und Sensoren, Alexa-Fhem... nd da geht noch was

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 13268
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #13 am: 12 September 2019, 21:36:33 »
Man muss auch irgendwann mal ausmisten :)

Ist keine Lösung für Dich - aber vielleicht ein Ansatz: https://forum.fhem.de/index.php/topic,66383.msg969064.html#msg969064
Du kennst Deine Daten und weißt eventuell was drin steht, wenn Du Lust hast zum Script kannst Du Dir sicher was angepasstes bauen.

Aber wie gesagt, nur eine Idee sich selbst was zu machen.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline cs-online

  • Sr. Member
  • ****
  • Beiträge: 863
Antw:FileLogs nach DbLog konvertieren / Migrieren
« Antwort #14 am: 13 September 2019, 08:16:25 »
...das sind schon nur aus den letzten drei Monaten die Logs ;-) Aber mal drüber geschaut stelle ich fest, ich brauche nicht von allen Devices die Daten und möglicherweise auch nicht so weit zurück.

Das Script sieht cool aus, ich blick bei RegEx ja imemr nicht so durch, das wird mir also deutlich helfen mir was zu basteln.

Danke dir,

schöne Grüße

Christian
FHEM auf Raspi 2, NanoCul 433 mit V1.65 für IT, NanoCul433 mit a-FW für Eurochrons, HM-CFG-USB-2, HM-WLAN-Gateway,ein paar HM-Aktoren,  2x EBUSD, ESP8266 am Strom-, Gas- , Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Lacrosse-Gateway und Sensoren, Alexa-Fhem... nd da geht noch was

 

decade-submarginal