Autor Thema: [patch] 93_DbLog.pm - add "set" commands  (Gelesen 4739 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
[patch] 93_DbLog.pm - add "set" commands
« am: 25 Februar 2014, 20:08:45 »
Fügt der 93_DbLog eine reopen Funktion zu, die ein commit & schließen der Datenbank mit anschließendem wiederverbinden durchführt.

Hintergrund:

Die Journaldatei kann bei längerem Gebrauch (mehrere Tage) von DbLog so groß werden, dass der Speicherplatz auf einem Einplatinencomputer knapp wird, was bis Totalausfall führen kann.

Mit "set <dbLog> reopen" kann z.B. ein at definiert werden, das einmal pro Tag (vorzugsweise nachts) ein Schließen und Wiederöffnen der Log-Datenbank durchführt.

-- edit --- Patch zur Überarbeitung entfernt
« Letzte Änderung: 28 Februar 2014, 12:45:55 von betateilchen »
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
Antw:[patch] 93_DbLog.pm - add command "set <dbLog> reopen"
« Antwort #1 am: 26 Februar 2014, 11:51:01 »
Ich habe den ursprünglichen Patch nochmal überarbeitet, um eine einfache Möglichkeit zu schaffen, ggf. weitere Set-Kommandos zu implementieren (ich hab dazu noch ein paar Ideen im Hinterkopf)


Index: 93_DbLog.pm
===================================================================
--- 93_DbLog.pm (revision 5050)
+++ 93_DbLog.pm (working copy)
@@ -17,6 +17,7 @@
 use warnings;
 use DBI;
 use Data::Dumper;
+use feature qw/say switch/;

 my %columns = ("DEVICE"  => 64,
                "TYPE"    => 64,
@@ -34,6 +35,7 @@
   $hash->{DefFn}    = "DbLog_Define";
   $hash->{UndefFn}  = "DbLog_Undef";
   $hash->{NotifyFn} = "DbLog_Log";
+  $hash->{SetFn}    = "DbLog_Set";
   $hash->{GetFn}    = "DbLog_Get";
   $hash->{AttrFn}   = "DbLog_Attr";
   $hash->{ShutdownFn} = "DbLog_Shutdown";
@@ -1019,6 +1021,32 @@
   }
 }

+sub
+DbLog_Set($@) {
+       my ($hash, @a) = @_;
+       my $name = $hash->{NAME};
+       my $usage = "Unknown argument, choose one of reopen:noArg";
+       return $usage if(int(@a) < 2);
+       my $ret;
+
+       given ($a[1]) {
+
+               when ('reopen') {
+                       my $dbh= $hash->{DBH};
+                       Log3($name, 4, "DbLog $name: Reopen requested.");
+                       $dbh->commit();
+                       $dbh->disconnect();
+                       DbLog_Connect($hash);
+                       $ret = "Reopen executed.";
+               }
+
+               default { $ret = $usage; }
+       }
+
+       return $ret;
+}
+
+
 ################################################################
 #
 # Charting Specific functions start here


-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #2 am: 28 Februar 2014, 12:47:50 »
"set" Funktionalität um eine Zählfunktion erweitert

(http://up.picr.de/17502632pq.png)


sub DbLog_Set($@) {
my ($hash, @a) = @_;
my $name = $hash->{NAME};
my $usage = "Unknown argument, choose one of reopen:noArg count:noArg";
return $usage if(int(@a) < 2);
my $dbh = $hash->{DBH};
my $ret;

given ($a[1]) {

when ('reopen') {
Log3($name, 4, "DbLog $name: Reopen requested.");
$dbh->commit();
$dbh->disconnect();
DbLog_Connect($hash);
$ret = "Reopen executed.";
}

when ('count') {
my $c = $dbh->selectrow_array('SELECT count(*) FROM history');
readingsSingleUpdate($hash, 'countHistory', $c ,1);
$c = $dbh->selectrow_array('SELECT count(*) FROM current');
readingsSingleUpdate($hash, 'countCurrent', $c ,1);
}

default { $ret = $usage; }

}

return $ret;

}


Als nächstes kommen Löschbefehle, um alte Einträge zu löschen.
« Letzte Änderung: 28 Februar 2014, 12:53:03 von betateilchen »
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1555
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #3 am: 28 Februar 2014, 12:58:11 »
Schön wäre mE die Möglichkeit, beliebige SQL-Befehler per notify abzusetzen?
Wenn dies über dieses Modul ginge, müsste man keinen eigenes Notify mit Passwort im Klartext verwenden...
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #4 am: 28 Februar 2014, 13:12:56 »
kein Problem.... aber die Nutzung geht dann nur auf eigene Verantwortung  8)
« Letzte Änderung: 28 Februar 2014, 13:14:39 von betateilchen »
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1555
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #5 am: 28 Februar 2014, 13:17:36 »
Na klar!! :D
Hab auch schob überlegt, das ganze abzusichern, indem man zB nur stored procedures erlaubt.... aber viel zu aufwendig!!
Und wer ein "delete all" absetzt, ist selber schuld!
Damit möchte ich gerne meine Stundenzusammenfassungen der Readings in die DB schreiben.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #6 am: 28 Februar 2014, 13:20:56 »
und wer immer nur an Microsoft SQL Server denkt, ist doof...  8)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1555
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #7 am: 28 Februar 2014, 13:25:02 »
ich denke an mysql!
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #8 am: 28 Februar 2014, 13:36:51 »
ja, mag sein, ändert nichts daran, dass sqlite keine stored procedures kennt ;)

userCommand funktioniert (siehe zugehörige Readings im Screenshot)

(http://up.picr.de/17502949sr.png)

Man müsste natürlich noch eine ganze Reihe komplexerer Befehle testen.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #9 am: 28 Februar 2014, 13:39:18 »
set <dbLog> deleteOldDays <n>
Funktioniert inzwischen auch, es werden alle Einträge gelöscht, die älter als <n> Tage sind.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1555
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #10 am: 28 Februar 2014, 13:48:57 »
bekomm ich eine Version zum testen?
gibt es auch mehrere Usercommands?  ;-)
Ich bräuchte je eines für: Tages-Wochen-Monats-Jahresstatistik, ...
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #11 am: 28 Februar 2014, 13:52:11 »
Du kannst als userCommand eingeben, was auch immer Du möchtest, das ist ja gerade Sinn und Zweck.

Das Modul protokolliert lediglich den eingegebenen Befehl (und sein Ergebnis) als reading, damit man sich das "delete from history" danach nochmal vor Augen führen kann  ;D

Schick mir eine email hier über das Forum zweckst Testversion. Ich will die hier nicht reinstellen, um keine Verwirrung mit unterschiedlichen Versionen zu stiften, zumal es überhaupt nicht "mein" Modul ist.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1555
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #12 am: 28 Februar 2014, 16:58:25 »
Schick mir eine email hier über das Forum zweckst Testversion.

Mitglied 'betateilchen' hat deine Mitteilungen geblockt. ;-)
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16056
  • s/fhem\.cfg/configDB/g
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #13 am: 28 Februar 2014, 17:01:20 »
Ja, und weiter? Wer lesen kann, ist klar im Vorteil, guckst Du nochmal genau ...

Hatte ich EMAIL oder hatte ich PN geschrieben?
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1555
Antw:[patch] 93_DbLog.pm - add "set" commands
« Antwort #14 am: 28 Februar 2014, 17:19:12 »
Ohne deine emailadresse zu haben, nicht so einfach.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

 

decade-submarginal