mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-25 16:05:19 +00:00
93_DbRep: contrib V5.8.6
git-svn-id: https://svn.fhem.de/fhem/trunk@27361 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
aff43bcd47
commit
b10585b359
@ -1,5 +1,5 @@
|
||||
############################################################################################################################################
|
||||
# $Id: 93_DbLog.pm 27246 2023-02-18 15:56:47Z DS_Starter $
|
||||
# $Id: 93_DbLog.pm 27327 2023-03-16 19:56:33Z DS_Starter $
|
||||
#
|
||||
# 93_DbLog.pm
|
||||
# written by Dr. Boris Neubert 2007-12-30
|
||||
@ -38,8 +38,11 @@ no if $] >= 5.017011, warnings => 'experimental::smartmatch';
|
||||
|
||||
# Version History intern by DS_Starter:
|
||||
my %DbLog_vNotesIntern = (
|
||||
"5.8.6" => "25.03.2023 change _DbLog_plotData (intx), Plot Editor: include functions delta-h, delta-h, ...".
|
||||
"remode setter deleteOldDaysNbl, reduceLogNbl ",
|
||||
"5.8.5" => "16.03.2023 fix using https in configCheck after SVN server change ",
|
||||
"5.8.4" => "20.02.2023 new attr plotInputFieldLength, improve Plot Editor, delete attr noNotifyDev ".
|
||||
"move notifyRegexpChanged fron Define to initOnStart ",
|
||||
"move notifyRegexpChanged from Define to initOnStart ",
|
||||
"5.8.3" => "19.02.2023 adapt DbLog_configcheck, new get ... configCheck, commandref edited ",
|
||||
"5.8.2" => "18.02.2023 adapt DbLog_configcheck, Forum: https://forum.fhem.de/index.php/topic,132163.msg1264320.html#msg1264320 ",
|
||||
"5.8.1" => "13.02.2023 change field type of DbLogInclude, DbLogExclude to textField-long, configCheck evaluate collation ".
|
||||
@ -158,6 +161,7 @@ my $dblog_cmdef = 'basic_ta:on'; # default commitMode
|
||||
my $dblog_todef = 86400; # default timeout Sekunden
|
||||
my $dblog_lrpth = 0.8; # Schwellenwert für LONGRUN_PID ab dem "Another operation is in progress...." im state ausgegeben wird
|
||||
my $dblog_pifl = 40; # default Breite Eingabefelder im Plot Editor
|
||||
my $dblog_svgfnset = ',delta-d,delta-h,delta-ts,int,int1,int2,int3,int4,int5'; # Funktionen für SVG sampleDataFn
|
||||
|
||||
################################################################
|
||||
sub DbLog_Initialize {
|
||||
@ -572,11 +576,9 @@ sub DbLog_Set {
|
||||
"configCheck:noArg ".
|
||||
"countNbl:noArg ".
|
||||
"deleteOldDays ".
|
||||
"deleteOldDaysNbl ".
|
||||
"eraseReadings:noArg ".
|
||||
"listCache:noArg ".
|
||||
"reduceLog ".
|
||||
"reduceLogNbl ".
|
||||
"rereadcfg:noArg ".
|
||||
"reopen ".
|
||||
"stopSubProcess:noArg ".
|
||||
@ -6636,14 +6638,18 @@ sub _DbLog_plotData {
|
||||
$writeout = 1 if(!$deltacalc);
|
||||
}
|
||||
|
||||
############ Auswerten des 4. Parameters: function ###################
|
||||
############ Auswerten des 4. Parameters: Funktion ###################
|
||||
######################################################################
|
||||
if($readings[$i]->[3] && $readings[$i]->[3] eq "int") { # nur den integerwert uebernehmen falls zb value=15°C
|
||||
$out_value = $1 if($sql_value =~ m/^(\d+).*/o);
|
||||
$out_tstamp = $sql_timestamp;
|
||||
$writeout = 1;
|
||||
}
|
||||
elsif ($readings[$i]->[3] && $readings[$i]->[3] =~ m/^int(\d+).*/o) { # Uebernehme den Dezimalwert mit den angegebenen Stellen an Nachkommastellen
|
||||
$out_value = $1 if($sql_value =~ m/^([-\.\d]+).*/o);
|
||||
$readings[$i]->[3] =~ m/^int(\d+).*/xs;
|
||||
my $dnum = $1;
|
||||
#$out_value = $1 if($sql_value =~ m/^([-\.\d]+).*/o);
|
||||
$out_value = $1 if($sql_value =~ m/^(-?\d+\.?\d{1,$dnum}).*/xs); # V5.8.6
|
||||
$out_tstamp = $sql_timestamp;
|
||||
$writeout = 1;
|
||||
}
|
||||
@ -7733,7 +7739,7 @@ return $check;
|
||||
############################################################################################################
|
||||
sub _DbLog_checkModVer {
|
||||
my $name = shift;
|
||||
my $src = "http://fhem.de/fhemupdate/controls_fhem.txt";
|
||||
my $src = "https://fhem.de/fhemupdate/controls_fhem.txt";
|
||||
|
||||
my $msg = q{};
|
||||
my $rec = q{};
|
||||
@ -8442,17 +8448,19 @@ sub DbLog_fhemwebFn {
|
||||
return $ret;
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
############################################################################################
|
||||
# Dropdown-Menü current-Tabelle SVG-Editor
|
||||
# Datenlieferung für SVG EDitor
|
||||
#
|
||||
# Beispiel Input Zeile: sysmon:ram:::$val=~s/^Total..([\d.]*).*/$1/eg
|
||||
# 0 1 23 4
|
||||
# <device>:<reading>:<default>:<fn>:<regexp>
|
||||
# Beispiel Input Zeile: sysmon:ram::delta-h:$val=~s/^Total..([\d.]*).*/$1/eg
|
||||
# 0 1 2 3 4
|
||||
# $ret .= SVG_txt("par_${r}_0", "", $f[0], 40); # Device (Column bei FileLog)
|
||||
# $ret .= SVG_txt("par_${r}_1", "", $f[1], 40); # Reading (RegExp bei FileLog)
|
||||
# $ret .= SVG_txt("par_${r}_2", "", $f[2], 1); # Default not yet implemented
|
||||
# $ret .= SVG_txt("par_${r}_3", "", $f[3], 3); # Function
|
||||
#################################################################################
|
||||
# $ret .= SVG_txt("par_${r}_3", "", $f[3], 10); # Function
|
||||
# $ret .= SVG_txt("par_${r}_4", "", $f[4], 10); # RegExp (int, delta-h, delta-d, delta-ts)
|
||||
#############################################################################################
|
||||
sub DbLog_sampleDataFn {
|
||||
my $dlName = shift;
|
||||
my $dlog = shift;
|
||||
@ -8483,8 +8491,8 @@ sub DbLog_sampleDataFn {
|
||||
}
|
||||
|
||||
if ($ccount) { # Table Current present, use it for sample data
|
||||
$desc = "Device:Reading:".
|
||||
"<br>Function"; # Beschreibung über Eingabezeile
|
||||
$desc = "Device:Reading [Function]".
|
||||
"<br>[RegExp] <unused>"; # Beschreibung über Eingabezeile
|
||||
|
||||
my $query = "select device,reading from $current where device <> '' group by device,reading";
|
||||
my $sth = $dbh->prepare( $query );
|
||||
@ -8492,44 +8500,46 @@ sub DbLog_sampleDataFn {
|
||||
|
||||
while (my @line = $sth->fetchrow_array()) {
|
||||
$counter++;
|
||||
push @example, (join ":", @line).':[Function]' if($counter <= 8); # show max 8 examples
|
||||
push @example, (join ":", @line).' [Function]<br>[RegExp]' if($counter <= 4); # show max 4 examples
|
||||
push @colregs, "$line[0]:$line[1]"; # push all eventTypes to selection list
|
||||
}
|
||||
|
||||
my $cols = join ",", sort { "\L$a" cmp "\L$b" } @colregs;
|
||||
|
||||
for (my $r = 0; $r < $max; $r++) {
|
||||
my @f = split ":", ($dlog->[$r] ? $dlog->[$r] : ":::"), 4; # Beispiel Input Zeile: sysmon:ram:::$val=~s/^Total..([\d.]*).*/$1/eg
|
||||
my $ret = "";
|
||||
my @f = split ":", ($dlog->[$r] ? $dlog->[$r] : "::::"), 5; # Beispiel Input Zeile > sysmon:ram::delta-h:$val=~s/^Total..([\d.]*).*/$1/eg
|
||||
my $ret = q{}; # 0 1 2 3 4
|
||||
|
||||
no warnings 'uninitialized'; # Forum:74690, bug unitialized
|
||||
$ret .= SVG_sel("par_${r}_0", $cols, "$f[0]:$f[1]"); # par_<Zeile>_<Spalte>, <Auswahl>, <Vorbelegung>
|
||||
$ret .= SVG_sel ("par_${r}_0", $cols, "$f[0]:$f[1]"); # par_<Zeile>_<Spalte>, <Auswahl>, <Vorbelegung>
|
||||
use warnings;
|
||||
|
||||
$ret .= SVG_sel("par_${r}_2", ":", ":"); # nur ein Trenner -> wird zu ":::"
|
||||
$ret .= SVG_sel ("par_${r}_3", $dblog_svgfnset, $f[3]); # Funktionsauswahl
|
||||
|
||||
$f[3] =~ /^(:+)?(.*)/xs;
|
||||
$ret .= SVG_txt("par_${r}_3", "<br>", "$2", $pifl); # RegExp (z.B. $val=~s/^Total..([\d.]*).*/$1/eg)
|
||||
$f[4] =~ /^(:+)?(.*)/xs;
|
||||
$ret .= SVG_txt ("par_${r}_4", "<br>", "$2", $pifl); # RegExp (z.B. $val=~s/^Total..([\d.]*).*/$1/eg)
|
||||
|
||||
$ret .= SVG_txt ("par_${r}_2", "", $f[2], 1); # der Defaultwert (nicht ausgewertet)
|
||||
|
||||
push @htmlArr, $ret;
|
||||
}
|
||||
}
|
||||
else { # Table Current not present, so create an empty input field
|
||||
push @example, '<Device>:<Reading>::[Function]';
|
||||
push @example, '<Device>:<Reading>::[Function]<br>[RegExp]';
|
||||
|
||||
$desc = "Device:Reading::".
|
||||
"<br>Function"; # Beschreibung über Eingabezeile
|
||||
$desc = "Device:Reading::[Function]".
|
||||
"<br>RegExp"; # Beschreibung über Eingabezeile
|
||||
|
||||
for (my $r = 0; $r < $max; $r++) {
|
||||
my @f = split ":", ($dlog->[$r] ? $dlog->[$r] : ":::"), 4;
|
||||
my $ret = "";
|
||||
my @f = split ":", ($dlog->[$r] ? $dlog->[$r] : "::::"), 5;
|
||||
my $ret = q{};
|
||||
|
||||
no warnings 'uninitialized'; # Forum:74690, bug unitialized
|
||||
$ret .= SVG_txt("par_${r}_0", "", "$f[0]:$f[1]::", $pifl); # letzter Wert -> Breite der Eingabezeile
|
||||
$ret .= SVG_txt ("par_${r}_0", "", "$f[0]:$f[1]::$f[3]", $pifl); # letzter Wert -> Breite der Eingabezeile
|
||||
use warnings;
|
||||
|
||||
$f[3] =~ /^(:+)?(.*)/xs;
|
||||
$ret .= SVG_txt("par_${r}_3", "<br>", "$2", $pifl); # RegExp (z.B. $val=~s/^Total..([\d.]*).*/$1/eg)
|
||||
$f[4] =~ /^(:+)?(.*)/xs;
|
||||
$ret .= SVG_txt ("par_${r}_3", "<br>", "$2", $pifl); # RegExp (z.B. $val=~s/^Total..([\d.]*).*/$1/eg)
|
||||
|
||||
push @htmlArr, $ret;
|
||||
}
|
||||
@ -8605,13 +8615,13 @@ sub DbLog_setVersionInfo {
|
||||
|
||||
if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) { # META-Daten sind vorhanden
|
||||
$modules{$type}{META}{version} = "v".$v; # Version aus META.json überschreiben, Anzeige mit {Dumper $modules{DbLog}{META}}
|
||||
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 93_DbLog.pm 27246 2023-02-18 15:56:47Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 93_DbLog.pm 27327 2023-03-16 19:56:33Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||
$modules{$type}{META}{x_version} =~ s/1\.1\.1/$v/xsg;
|
||||
}
|
||||
else {
|
||||
$modules{$type}{META}{x_version} = $v;
|
||||
}
|
||||
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbLog.pm 27246 2023-02-18 15:56:47Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbLog.pm 27327 2023-03-16 19:56:33Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||
if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) {
|
||||
# es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen
|
||||
# mit {<Modul>->VERSION()} im FHEMWEB kann Modulversion abgefragt werden
|
||||
@ -9013,16 +9023,6 @@ return;
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
<a id="DbLog-set-deleteOldDaysNbl"></a>
|
||||
<b>set <name> deleteOldDaysNbl <n> </b> <br><br>
|
||||
<ul>
|
||||
The function is identical to "set <name> deleteOldDays" and will be removed soon.
|
||||
<br>
|
||||
</ul>
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
<a id="DbLog-set-eraseReadings"></a>
|
||||
<b>set <name> eraseReadings </b> <br><br>
|
||||
@ -9130,15 +9130,6 @@ return;
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
<a id="DbLog-set-reduceLogNbl"></a>
|
||||
<b>set <name> reduceLogNbl <no>[:<nn>] [average[=day]] [exclude=device1:reading1,device2:reading2,...] </b> <br><br>
|
||||
<ul>
|
||||
The function is identical to "set <name> reduceLog" and will be removed soon.
|
||||
</ul>
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
<a id="DbLog-set-reopen"></a>
|
||||
<b>set <name> reopen [n] </b> <br><br>
|
||||
@ -10887,16 +10878,6 @@ attr SMA_Energymeter DbLogValueFn
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
<a id="DbLog-set-deleteOldDaysNbl"></a>
|
||||
<b>set <name> deleteOldDaysNbl <n> </b> <br><br>
|
||||
<ul>
|
||||
Die Funktion ist identisch zu "set <name> deleteOldDays" und wird demnächst entfernt.
|
||||
<br>
|
||||
</ul>
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
<a id="DbLog-set-exportCache"></a>
|
||||
<b>set <name> exportCache [nopurge | purgecache] </b> <br><br>
|
||||
@ -11001,16 +10982,6 @@ attr SMA_Energymeter DbLogValueFn
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
<a id="DbLog-set-reduceLogNbl"></a>
|
||||
<b>set <name> reduceLogNbl <no>[:<nn>] [average[=day]] [exclude=device1:reading1,device2:reading2,...] </b> <br><br>
|
||||
|
||||
<ul>
|
||||
Die Funktion ist identisch zu "set <name> reduceLog" und wird demnächst entfernt.
|
||||
</ul>
|
||||
</li>
|
||||
<br>
|
||||
|
||||
<li>
|
||||
<a id="DbLog-set-reopen"></a>
|
||||
<b>set <name> reopen [n] </b> <br><br>
|
||||
|
Loading…
x
Reference in New Issue
Block a user