DbLog importCachefile automatisieren

Begonnen von Motivierte linke Hände, 11 Februar 2024, 08:45:30

Vorheriges Thema - Nächstes Thema

Motivierte linke Hände

Hi, nachdem DbLog bei mir recht regelmäßig und verständlicherweise beim nächtlichen Neustart aller VMs cache-Files anlegt, würde ich gerne den Import von Cachefiles automatisieren.

Ein "importAllCachfiles" oder so gibt es nicht, also muss ich mir selbst was basteln. Und da die vorhandenen Cache-Files im WebUI angegeben werden, nicht aber in Readings stehen und ich beim Googeln aber nichts finden konnte, wollte ich mal fragen: Kann ich in Perl die vorhandenen Logfiles irgendwie aus dem DbLog-Modul auslesen? Oder sollte ich mir die Liste besser selbst im Filesystem zusammensuchen?

Danke, Christian
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

DS_Starter

Hallo Christian,

momentan gibt es keine Möglichkeit die Files aus DbLog auszulesen.
Ich könnte aber einen "get ... cacheFileNames" einbauen der eine Liste der vorhandenen und noch nicht importierten Cachefiles zurückliefert.
Damit könnte man sich leicht einen Importer bauen.

Würde dir das helfen?

LG,
Heiko
ESXi@NUC+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

Motivierte linke Hände

Kein Problem. Ich lese dann das Filesystem aus.

Falls jemals jemand dasselbe Problem haben sollte und diesen Thread hier findet:

sub readCacheFilesIntoDB () {
  my @CacheFiles = glob('/opt/fhem/log/cache_DBLog_*');
 
  if (@CacheFiles) {
    fhem('set DBLog importCachefile '.basename($CacheFiles[0]));
    fhem("define at_readDbLogCachefile_$NbrCacheFiles at +00:00:05 { readCacheFilesIntoDB() }") if (@CacheFiles > 1);
  }
}

Habe gemerkt, dass ich, obwohl die SQL-DB auf schnellen SSDs liegt, zwischen den einzelnen Versuchen etwas Zeit lassen muss. Daher über at anstatt einfach über eine foreach-Schleife.

Gruß, Christian
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

DS_Starter

#3
Das kommt durch die asynchrone Arbeitsweise.

Alternativ zum "at" kannst du dir auch ein Notify anlegen und auf den Event:

state  importCachefile finished .* datasets were imported

des DbLog reagieren um den nächsten Import zu starten.
Das wäre IMHO sauberer weil dadurch das Ende des vorherigen Laufs sichergestellt ist.
ESXi@NUC+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

kadettilac89

warum ist es überhaupt nötig Cachefiles zu verbuchen? DBLog schreibt doch beim sauberen Runterfahren alles auf die DB. Ich würde eher die Reihenfolge des Shutdowns anpassen anstatt irgend welche Scripte zu basteln. Oder Fhem ein bisschen mehr Zeit zum Runterfahren gönnen. Und erst wenn Fhem weg ist MySQL oder welche DB du hast stoppen.

in global kannst du shutdown verzögern falls nötig
maxShutdownDelay
Einige Module benötigen Zeit zum Aufräumen beim shutdown, aber FHEM begrenzt diese Zeit auf 10 Sekunden. Mit diesem Attribut kann man sie anpassen.

Motivierte linke Hände

Keine Ahnung, irgendeine Race-Condition vielleicht. An den meisten Tagen klappt es, aber manchmal leider nicht, wenn ich aus den Cache-Files auf ein Problem beim Runterfahren schließen kann. (Im FHEM-Log steht nichts...)
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

kadettilac89

Zitat von: Motivierte linke Hände am 18 Februar 2024, 20:18:50Keine Ahnung, irgendeine Race-Condition vielleicht. An den meisten Tagen klappt es, aber manchmal leider nicht, wenn ich aus den Cache-Files auf ein Problem beim Runterfahren schließen kann. (Im FHEM-Log steht nichts...)
ich kenn dein Setup nicht. Ich könnte mir vorstellen, wie geschrieben, dass deine Datenbank vor fhem beendet wird. Oder dass dein Hypervisor (Tool für die VM) die VM nicht richtig runterfahren lässt, sondern vorzeitig hart abschaltet. Welches Setup nutzt du? VM auf ESXi, Proxmox, ... Datenbank und Fhem in selber VM? Nativ auf in einer VM oder noch per Docker oder anders geteilt?