Verarbeitung großer (FileLog) Dateien in FHEM

Begonnen von DeeSPe, 29 Januar 2017, 21:04:15

Vorheriges Thema - Nächstes Thema

DeeSPe

Aus meiner Not heraus beim Umstieg auf DbLog die Inhalte der alten FileLog Files in die DbLog zu übernehmen, ist gestern dieses Modul entstanden.
Damit können Inhalte von FileLog Files in CSV und SQL konvertiert werden.
Es kann auch direkt vom FileLog in DbLog importiert werden.

Leider ist das Parsen der Dateien teilweise sehr langwierig und der Import in die DbLog noch langwieriger!!!
Zum Lesen der Dateien benutze ich FileRead und zum Schreiben FileWrite.
Die Daten werden mittels DbLog_ExecSQL (aus DBLog) in die Datenbank importiert.

Da FHEM die komplette Zeit der Ausführung einer Operation blockiert, frage ich mich wie (und ob) man das auch non-blocking hinbekommt.
Leider fehlt mir hierzu jeglicher Ansatzpunkt...

Ist das überhaupt machbar?
Hat da evtl. jemand einen Tipp für mich?

Danke im Voraus.

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

dev0


DS_Starter

Hallo Dan,

in dem 93_DbRep https://fhem.de/commandref_DE.html#DbRep habe ich eine non-blocking Funktion "set ... importFromFile " realisiert, die CSV-Dateien für FHEM non-blocking in die history-Tabelle importiert.
Wie dev0 schon schrieb, habe ich das auch mit Blocking.pm gemacht.

Grüße
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DeeSPe

Merci für den Tipp.
Wie das immer so ist, gelesen hatte ich von BlockingCall schon.
Werde mir das mal zu Gemüte führen und schauen ob sich das verwursteln lässt!

Zitat von: DS_Starter am 29 Januar 2017, 21:19:27
Hallo Dan,

in dem 93_DbRep https://fhem.de/commandref_DE.html#DbRep habe ich eine non-blocking Funktion "set ... importFromFile " realisiert, die CSV-Dateien für FHEM non-blocking in die history-Tabelle importiert.
Wie dev0 schon schrieb, habe ich das auch mit Blocking.pm gemacht.

Grüße
Heiko

Auch Dir danke für den Tipp Heiko! 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

DeeSPe

Habe es Dank Euren Tipps mit BlockingCall zufriedenstellend hinbekommen. ;)
Danke!!!

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

Dürfte ich das fertige Modul evtl. offiziell in SVN einchecken?

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

CoolTux

Wenn es den den Anforderungen entspricht sollte das kein Problem sein.
Ausreichend getestet
englische Commandref
halbes Jahr support
Support Thread im Forum
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DeeSPe

Zitat von: CoolTux am 02 Februar 2017, 19:19:51
Wenn es den den Anforderungen entspricht sollte das kein Problem sein.
Ausreichend getestet
englische Commandref
halbes Jahr support
Support Thread im Forum

Welche Anforderungen meinst Du konkret?
Ausreichend getestet wohl eher noch wenig. Geben wir dem Kind noch etwas Zeit und vor allem mehr Tests! ;)
commandref ist schon komplett in eng. dran.
Maintainer würde ich natürlich übernehmen.
Thread gibt es schon unter Codeschnipsel, würde es dann aber offizieller machen.

Danke.

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

CoolTux

#8
Voraussetzungen erfüllt. Etwas länger testen ist immer gut. Nichts kommt beim User frustrierender an als ein offizielles Modul was große Probleme bereitet.
Aber wenn das übliche abgedeckt ist sollte es kein Problem sein.
Def und undef bereiten kein Absturz. Routinenaufrufe sind alle Vorhanden, sonst Absturz und so weiter. Du weißt schon  ;D
Im Grunde geht es eigentlich erstmal nur darum das FHEM nicht in den Tod gezogen wird.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DeeSPe

Verstehe Deine Einwände und Bedenken absolut!

Bei meinen Tests ist es (bisher) 100% stabil.
Das non-blocking machen war für's erste Mal etwas tricky, aber lösbar.
Sonst dürfte das Modul schon ca. 90% Deiner Anforderungen abdecken.
Darfst Dir gerne den Code mal anschauen wenn Du magst. Bin für jede Kritik offen.

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

CoolTux

Mache ich gerne. Kann aber wenn erst Morgen.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DeeSPe

Zitat von: CoolTux am 02 Februar 2017, 19:45:48
Mache ich gerne. Kann aber wenn erst Morgen.


Grüße

Danke!
Lass Dir ruhig Zeit.
Es eilt nicht. Ich hoffe es testen noch ein paar Leute und geben evtl. wertvolles Feedback.

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