mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
93_DbLog: 93_DBLog: Plot Editor - include functions like delta-h, delta-h, setter deleteOldDaysNbl, reduceLogNbl removed
git-svn-id: https://svn.fhem.de/fhem/trunk@27379 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
0e5b16ce73
commit
054aebefb9
@ -1,5 +1,7 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- change: 93_DBLog: Plot Editor - include functions like delta-h, delta-h
|
||||||
|
!! setter deleteOldDaysNbl, reduceLogNbl removed !!
|
||||||
- change: 10_KNX: syntax check on Attr., internal code improvement
|
- change: 10_KNX: syntax check on Attr., internal code improvement
|
||||||
- change: 00_KNXIO: rework logging & duplicate msg detection
|
- change: 00_KNXIO: rework logging & duplicate msg detection
|
||||||
- bugfx: 72_FRITZBOX: Fehler bei leerem Ereignislog FB bereinigt
|
- bugfx: 72_FRITZBOX: Fehler bei leerem Ereignislog FB bereinigt
|
||||||
|
@ -38,6 +38,8 @@ no if $] >= 5.017011, warnings => 'experimental::smartmatch';
|
|||||||
|
|
||||||
# Version History intern by DS_Starter:
|
# Version History intern by DS_Starter:
|
||||||
my %DbLog_vNotesIntern = (
|
my %DbLog_vNotesIntern = (
|
||||||
|
"5.8.6" => "25.03.2023 change _DbLog_plotData (intx), Plot Editor: include functions delta-h, delta-h, ...".
|
||||||
|
"remove setter deleteOldDaysNbl, reduceLogNbl ",
|
||||||
"5.8.5" => "16.03.2023 fix using https in configCheck after SVN server change ",
|
"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 ".
|
"5.8.4" => "20.02.2023 new attr plotInputFieldLength, improve Plot Editor, delete attr noNotifyDev ".
|
||||||
"move notifyRegexpChanged from Define to initOnStart ",
|
"move notifyRegexpChanged from Define to initOnStart ",
|
||||||
@ -154,11 +156,12 @@ my %DbLog_columns = ("DEVICE" => 64,
|
|||||||
|
|
||||||
# Defaultwerte
|
# Defaultwerte
|
||||||
###############
|
###############
|
||||||
my $dblog_cachedef = 500; # default Größe cacheLimit bei asynchronen Betrieb
|
my $dblog_cachedef = 500; # default Größe cacheLimit bei asynchronen Betrieb
|
||||||
my $dblog_cmdef = 'basic_ta:on'; # default commitMode
|
my $dblog_cmdef = 'basic_ta:on'; # default commitMode
|
||||||
my $dblog_todef = 86400; # default timeout Sekunden
|
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_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_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 {
|
sub DbLog_Initialize {
|
||||||
@ -573,11 +576,9 @@ sub DbLog_Set {
|
|||||||
"configCheck:noArg ".
|
"configCheck:noArg ".
|
||||||
"countNbl:noArg ".
|
"countNbl:noArg ".
|
||||||
"deleteOldDays ".
|
"deleteOldDays ".
|
||||||
"deleteOldDaysNbl ".
|
|
||||||
"eraseReadings:noArg ".
|
"eraseReadings:noArg ".
|
||||||
"listCache:noArg ".
|
"listCache:noArg ".
|
||||||
"reduceLog ".
|
"reduceLog ".
|
||||||
"reduceLogNbl ".
|
|
||||||
"rereadcfg:noArg ".
|
"rereadcfg:noArg ".
|
||||||
"reopen ".
|
"reopen ".
|
||||||
"stopSubProcess:noArg ".
|
"stopSubProcess:noArg ".
|
||||||
@ -6637,14 +6638,18 @@ sub _DbLog_plotData {
|
|||||||
$writeout = 1 if(!$deltacalc);
|
$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
|
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_value = $1 if($sql_value =~ m/^(\d+).*/o);
|
||||||
$out_tstamp = $sql_timestamp;
|
$out_tstamp = $sql_timestamp;
|
||||||
$writeout = 1;
|
$writeout = 1;
|
||||||
}
|
}
|
||||||
elsif ($readings[$i]->[3] && $readings[$i]->[3] =~ m/^int(\d+).*/o) { # Uebernehme den Dezimalwert mit den angegebenen Stellen an Nachkommastellen
|
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;
|
$out_tstamp = $sql_timestamp;
|
||||||
$writeout = 1;
|
$writeout = 1;
|
||||||
}
|
}
|
||||||
@ -8443,17 +8448,19 @@ sub DbLog_fhemwebFn {
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#################################################################################
|
############################################################################################
|
||||||
# Dropdown-Menü current-Tabelle SVG-Editor
|
# Dropdown-Menü current-Tabelle SVG-Editor
|
||||||
# Datenlieferung für SVG EDitor
|
# Datenlieferung für SVG EDitor
|
||||||
#
|
#
|
||||||
# Beispiel Input Zeile: sysmon:ram:::$val=~s/^Total..([\d.]*).*/$1/eg
|
# <device>:<reading>:<default>:<fn>:<regexp>
|
||||||
# 0 1 23 4
|
# 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}_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}_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}_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 {
|
sub DbLog_sampleDataFn {
|
||||||
my $dlName = shift;
|
my $dlName = shift;
|
||||||
my $dlog = shift;
|
my $dlog = shift;
|
||||||
@ -8484,8 +8491,8 @@ sub DbLog_sampleDataFn {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($ccount) { # Table Current present, use it for sample data
|
if ($ccount) { # Table Current present, use it for sample data
|
||||||
$desc = "Device:Reading:".
|
$desc = "Device:Reading [Function]".
|
||||||
"<br>Function"; # Beschreibung über Eingabezeile
|
"<br>[RegExp] <unused>"; # Beschreibung über Eingabezeile
|
||||||
|
|
||||||
my $query = "select device,reading from $current where device <> '' group by device,reading";
|
my $query = "select device,reading from $current where device <> '' group by device,reading";
|
||||||
my $sth = $dbh->prepare( $query );
|
my $sth = $dbh->prepare( $query );
|
||||||
@ -8493,44 +8500,46 @@ sub DbLog_sampleDataFn {
|
|||||||
|
|
||||||
while (my @line = $sth->fetchrow_array()) {
|
while (my @line = $sth->fetchrow_array()) {
|
||||||
$counter++;
|
$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
|
push @colregs, "$line[0]:$line[1]"; # push all eventTypes to selection list
|
||||||
}
|
}
|
||||||
|
|
||||||
my $cols = join ",", sort { "\L$a" cmp "\L$b" } @colregs;
|
my $cols = join ",", sort { "\L$a" cmp "\L$b" } @colregs;
|
||||||
|
|
||||||
for (my $r = 0; $r < $max; $r++) {
|
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 @f = split ":", ($dlog->[$r] ? $dlog->[$r] : "::::"), 5; # Beispiel Input Zeile > sysmon:ram::delta-h:$val=~s/^Total..([\d.]*).*/$1/eg
|
||||||
my $ret = "";
|
my $ret = q{}; # 0 1 2 3 4
|
||||||
|
|
||||||
no warnings 'uninitialized'; # Forum:74690, bug unitialized
|
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;
|
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;
|
$f[4] =~ /^(:+)?(.*)/xs;
|
||||||
$ret .= SVG_txt("par_${r}_3", "<br>", "$2", $pifl); # RegExp (z.B. $val=~s/^Total..([\d.]*).*/$1/eg)
|
$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;
|
push @htmlArr, $ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { # Table Current not present, so create an empty input field
|
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::".
|
$desc = "Device:Reading::[Function]".
|
||||||
"<br>Function"; # Beschreibung über Eingabezeile
|
"<br>RegExp"; # Beschreibung über Eingabezeile
|
||||||
|
|
||||||
for (my $r = 0; $r < $max; $r++) {
|
for (my $r = 0; $r < $max; $r++) {
|
||||||
my @f = split ":", ($dlog->[$r] ? $dlog->[$r] : ":::"), 4;
|
my @f = split ":", ($dlog->[$r] ? $dlog->[$r] : "::::"), 5;
|
||||||
my $ret = "";
|
my $ret = q{};
|
||||||
|
|
||||||
no warnings 'uninitialized'; # Forum:74690, bug unitialized
|
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;
|
use warnings;
|
||||||
|
|
||||||
$f[3] =~ /^(:+)?(.*)/xs;
|
$f[4] =~ /^(:+)?(.*)/xs;
|
||||||
$ret .= SVG_txt("par_${r}_3", "<br>", "$2", $pifl); # RegExp (z.B. $val=~s/^Total..([\d.]*).*/$1/eg)
|
$ret .= SVG_txt ("par_${r}_3", "<br>", "$2", $pifl); # RegExp (z.B. $val=~s/^Total..([\d.]*).*/$1/eg)
|
||||||
|
|
||||||
push @htmlArr, $ret;
|
push @htmlArr, $ret;
|
||||||
}
|
}
|
||||||
@ -9014,16 +9023,6 @@ return;
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<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>
|
<li>
|
||||||
<a id="DbLog-set-eraseReadings"></a>
|
<a id="DbLog-set-eraseReadings"></a>
|
||||||
<b>set <name> eraseReadings </b> <br><br>
|
<b>set <name> eraseReadings </b> <br><br>
|
||||||
@ -9131,15 +9130,6 @@ return;
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<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>
|
<li>
|
||||||
<a id="DbLog-set-reopen"></a>
|
<a id="DbLog-set-reopen"></a>
|
||||||
<b>set <name> reopen [n] </b> <br><br>
|
<b>set <name> reopen [n] </b> <br><br>
|
||||||
@ -10888,16 +10878,6 @@ attr SMA_Energymeter DbLogValueFn
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<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>
|
<li>
|
||||||
<a id="DbLog-set-exportCache"></a>
|
<a id="DbLog-set-exportCache"></a>
|
||||||
<b>set <name> exportCache [nopurge | purgecache] </b> <br><br>
|
<b>set <name> exportCache [nopurge | purgecache] </b> <br><br>
|
||||||
@ -11002,16 +10982,6 @@ attr SMA_Energymeter DbLogValueFn
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<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>
|
<li>
|
||||||
<a id="DbLog-set-reopen"></a>
|
<a id="DbLog-set-reopen"></a>
|
||||||
<b>set <name> reopen [n] </b> <br><br>
|
<b>set <name> reopen [n] </b> <br><br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user