mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-07 19:04:20 +00:00
93_DbRep.pm: contrib V 8.53.3
git-svn-id: https://svn.fhem.de/fhem/trunk@28605 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
e13d6c2a4d
commit
eb0cef622b
@ -59,6 +59,8 @@ no if $] >= 5.017011, warnings => 'experimental::smartmatch';
|
|||||||
|
|
||||||
# Version History intern
|
# Version History intern
|
||||||
my %DbRep_vNotesIntern = (
|
my %DbRep_vNotesIntern = (
|
||||||
|
"8.53.3" => "06.03.2024 delete attribute allowDeletion, multiCmd: executeBeforeProc, executeAfterProc as attributes ".
|
||||||
|
"Set: all commands are executable even if \$dbloghash->{HELPER}{REOPEN_RUNS_UNTIL}is set ",
|
||||||
"8.53.2" => "02.03.2024 delEntries, reduceLog: execute next DbRep_nextMultiCmd even if time check got failed ".
|
"8.53.2" => "02.03.2024 delEntries, reduceLog: execute next DbRep_nextMultiCmd even if time check got failed ".
|
||||||
"Forum:https://forum.fhem.de/index.php?msg=1305266 ",
|
"Forum:https://forum.fhem.de/index.php?msg=1305266 ",
|
||||||
"8.53.1" => "16.02.2024 sqlCmd: executing ckey:latest possible ",
|
"8.53.1" => "16.02.2024 sqlCmd: executing ckey:latest possible ",
|
||||||
@ -93,31 +95,6 @@ my %DbRep_vNotesIntern = (
|
|||||||
"8.51.0" => "02.01.2023 online formatting of sqlCmd, sqlCmdHistory, sqlSpecial, Commandref edited, get dbValue removed ".
|
"8.51.0" => "02.01.2023 online formatting of sqlCmd, sqlCmdHistory, sqlSpecial, Commandref edited, get dbValue removed ".
|
||||||
"sqlCmdBlocking customized like sqlCmd, bugfix avgTimeWeightMean ",
|
"sqlCmdBlocking customized like sqlCmd, bugfix avgTimeWeightMean ",
|
||||||
"8.50.10" => "01.01.2023 Commandref edited ",
|
"8.50.10" => "01.01.2023 Commandref edited ",
|
||||||
"8.50.9" => "28.12.2022 Commandref changed to a id-links ",
|
|
||||||
"8.50.8" => "21.12.2022 add call to DbRep_sqlCmd, DbRep_sqlCmdBlocking ",
|
|
||||||
"8.50.7" => "17.12.2022 Commandref edited ",
|
|
||||||
"8.50.6" => "14.12.2022 remove ularm from Time::HiRes, Forum: https://forum.fhem.de/index.php/topic,53584.msg1251313.html#msg1251313 ",
|
|
||||||
"8.50.5" => "05.12.2022 fix diffValue problem (DbRep_diffval) for newer MariaDB versions: https://forum.fhem.de/index.php/topic,130697.0.html ",
|
|
||||||
"8.50.4" => "04.11.2022 fix daylight saving bug in aggregation eq 'month' (_DbRep_collaggstr) ",
|
|
||||||
"8.50.3" => "19.09.2022 reduce memory allocation of function DbRep_reduceLog ",
|
|
||||||
"8.50.2" => "17.09.2022 release setter 'index' for device model 'Agent' ",
|
|
||||||
"8.50.1" => "05.09.2022 DbRep_setLastCmd, change changeValue syntax, minor fixes ",
|
|
||||||
"8.50.0" => "20.08.2022 rework of DbRep_reduceLog - add max, max=day, min, min=day, sum, sum=day ",
|
|
||||||
"8.49.1" => "03.08.2022 fix DbRep_deleteOtherFromDB, Forum: https://forum.fhem.de/index.php/topic,128605.0.html ".
|
|
||||||
"some code changes and bug fixes ",
|
|
||||||
"8.49.0" => "16.05.2022 allow optionally set device / reading in the insert command ",
|
|
||||||
"8.48.4" => "16.05.2022 fix perl warning of set ... insert, Forum: topic,53584.msg1221588.html#msg1221588 ",
|
|
||||||
"8.48.3" => "09.04.2022 minor code fix in DbRep_reduceLog ",
|
|
||||||
"8.48.2" => "22.02.2022 more code refacturing ",
|
|
||||||
"8.48.1" => "31.01.2022 minor fixes e.g. in file size determination, dump routines ",
|
|
||||||
"8.48.0" => "29.01.2022 new sqlCmdHistory params ___restore_sqlhistory___ , ___save_sqlhistory___ ".
|
|
||||||
"change _DbRep_mysqlOptimizeTables, revise insert command ",
|
|
||||||
"8.47.0" => "17.01.2022 new design of sqlCmdHistory, minor fixes ",
|
|
||||||
"8.46.13" => "12.01.2022 more code refacturing, minor fixes ",
|
|
||||||
"8.46.12" => "10.01.2022 more code refacturing, minor fixes, change usage of placeholder §device§, §reading§ in sqlCmd ",
|
|
||||||
"8.46.11" => "03.01.2022 more code refacturing, minor fixes ",
|
|
||||||
"8.46.10" => "02.01.2022 more code refacturing, minor fixes ",
|
|
||||||
"8.46.9" => "01.01.2022 some more code refacturing, minor fixes ",
|
|
||||||
"1.0.0" => "19.05.2016 Initial"
|
"1.0.0" => "19.05.2016 Initial"
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -409,9 +386,9 @@ sub DbRep_Initialize {
|
|||||||
$hash->{FW_deviceOverview} = 1;
|
$hash->{FW_deviceOverview} = 1;
|
||||||
|
|
||||||
$hash->{AttrList} = "aggregation:minute,hour,day,week,month,year,no ".
|
$hash->{AttrList} = "aggregation:minute,hour,day,week,month,year,no ".
|
||||||
|
"allowDeletion:obsolete ".
|
||||||
"disable:1,0 ".
|
"disable:1,0 ".
|
||||||
"reading ".
|
"reading ".
|
||||||
"allowDeletion:1,0 ".
|
|
||||||
"autoForward:textField-long ".
|
"autoForward:textField-long ".
|
||||||
"averageCalcForm:avgArithmeticMean,avgDailyMeanGWS,avgDailyMeanGWSwithGTS,avgTimeWeightMean ".
|
"averageCalcForm:avgArithmeticMean,avgDailyMeanGWS,avgDailyMeanGWSwithGTS,avgTimeWeightMean ".
|
||||||
"countEntriesDetail:1,0 ".
|
"countEntriesDetail:1,0 ".
|
||||||
@ -753,12 +730,7 @@ sub DbRep_Set {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DbRep_setLastCmd ($name, $opt, $prop);
|
DbRep_setLastCmd ($name, $opt, $prop);
|
||||||
|
DbRep_Main ($hash, $opt, $prop);
|
||||||
if ($prop =~ /delete/ && !AttrVal($hash->{NAME}, "allowDeletion", 0)) {
|
|
||||||
return " Set attribute 'allowDeletion' if you want to allow deletion of any database entries. Use it with care !";
|
|
||||||
}
|
|
||||||
|
|
||||||
DbRep_Main ($hash, $opt, $prop);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -884,24 +856,18 @@ sub DbRep_Set {
|
|||||||
#######################################################################################################
|
#######################################################################################################
|
||||||
## keine Aktionen außer die über diesem Eintrag solange Reopen xxxx im DbLog-Device läuft
|
## keine Aktionen außer die über diesem Eintrag solange Reopen xxxx im DbLog-Device läuft
|
||||||
#######################################################################################################
|
#######################################################################################################
|
||||||
if ($dbloghash->{HELPER}{REOPEN_RUNS} && $opt !~ /\?/) {
|
#if ($dbloghash->{HELPER}{REOPEN_RUNS} && $opt !~ /\?/) {
|
||||||
my $ro = $dbloghash->{HELPER}{REOPEN_RUNS_UNTIL};
|
# my $ro = $dbloghash->{HELPER}{REOPEN_RUNS_UNTIL};
|
||||||
|
# Log3 ($name, 3, "DbRep $name - connection $dblogdevice to db $dbname is closed until $ro - $opt postponed");
|
||||||
Log3 ($name, 3, "DbRep $name - connection $dblogdevice to db $dbname is closed until $ro - $opt postponed");
|
# ReadingsSingleUpdateValue ($hash, "state", "connection $dblogdevice to $dbname is closed until $ro - $opt postponed", 1);
|
||||||
|
# return;
|
||||||
ReadingsSingleUpdateValue ($hash, "state", "connection $dblogdevice to $dbname is closed until $ro - $opt postponed", 1);
|
#}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($opt =~ m/(max|min|sum|average|diff)Value/ && $hash->{ROLE} ne "Agent") {
|
if ($opt =~ m/(max|min|sum|average|diff)Value/ && $hash->{ROLE} ne "Agent") {
|
||||||
if (!AttrVal($hash->{NAME}, "reading", "")) {
|
if (!AttrVal($hash->{NAME}, "reading", "")) {
|
||||||
return " The attribute reading to analyze is not set !";
|
return " The attribute reading to analyze is not set !";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($prop && $prop =~ /deleteOther/ && !AttrVal($hash->{NAME}, "allowDeletion", 0)) {
|
|
||||||
return " Set attribute 'allowDeletion' if you want to allow deletion of any database entries. Use it with care !";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($prop && $prop =~ /writeToDB/) {
|
if ($prop && $prop =~ /writeToDB/) {
|
||||||
if (!AttrVal($hash->{NAME}, "device", "") || AttrVal($hash->{NAME}, "device", "") =~ /[%*:=,]/ || AttrVal($hash->{NAME}, "reading", "") =~ /[,\s]/) {
|
if (!AttrVal($hash->{NAME}, "device", "") || AttrVal($hash->{NAME}, "device", "") =~ /[%*:=,]/ || AttrVal($hash->{NAME}, "reading", "") =~ /[,\s]/) {
|
||||||
return "<html>If you want write results back to database, attributes \"device\" and \"reading\" must be set.<br>
|
return "<html>If you want write results back to database, attributes \"device\" and \"reading\" must be set.<br>
|
||||||
@ -914,10 +880,6 @@ sub DbRep_Set {
|
|||||||
DbRep_Main ($hash,$opt,$prop);
|
DbRep_Main ($hash,$opt,$prop);
|
||||||
}
|
}
|
||||||
elsif ($opt =~ m/delEntries|tableCurrentPurge/ && $hash->{ROLE} ne "Agent") {
|
elsif ($opt =~ m/delEntries|tableCurrentPurge/ && $hash->{ROLE} ne "Agent") {
|
||||||
if (!AttrVal($hash->{NAME}, "allowDeletion", undef)) {
|
|
||||||
return " Set attribute 'allowDeletion' if you want to allow deletion of any database entries. Use it with care !";
|
|
||||||
}
|
|
||||||
|
|
||||||
DbRep_setLastCmd (@a);
|
DbRep_setLastCmd (@a);
|
||||||
|
|
||||||
shift @a;
|
shift @a;
|
||||||
@ -985,7 +947,7 @@ sub DbRep_Set {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Attribute device & reading dürfen kein SQL-Wildcard % enthalten
|
# Attribute device & reading dürfen kein SQL-Wildcard % enthalten
|
||||||
if($i_device =~ m/%/ || $i_reading =~ m/%/ ) {
|
if ($i_device =~ m/%/ || $i_reading =~ m/%/ ) {
|
||||||
return qq{One or both of "device", "reading" containing SQL wildcard "%". Wildcards are not allowed in manual function insert !}
|
return qq{One or both of "device", "reading" containing SQL wildcard "%". Wildcards are not allowed in manual function insert !}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1038,7 +1000,7 @@ sub DbRep_Set {
|
|||||||
|
|
||||||
my $sqlcmd;
|
my $sqlcmd;
|
||||||
|
|
||||||
if($opt eq "sqlSpecial") {
|
if ($opt eq "sqlSpecial") {
|
||||||
my ($tq,$gcl);
|
my ($tq,$gcl);
|
||||||
|
|
||||||
if($prop eq "50mostFreqLogsLast2days") {
|
if($prop eq "50mostFreqLogsLast2days") {
|
||||||
@ -1056,9 +1018,9 @@ sub DbRep_Set {
|
|||||||
$sqlcmd = "select device, count(*) from history group by DEVICE;";
|
$sqlcmd = "select device, count(*) from history group by DEVICE;";
|
||||||
}
|
}
|
||||||
elsif ($prop eq "recentReadingsOfDevice") {
|
elsif ($prop eq "recentReadingsOfDevice") {
|
||||||
if($dbmodel =~ /MYSQL/) {$tq = "NOW() - INTERVAL 1 DAY"; $gcl = "READING"};
|
if ($dbmodel =~ /MYSQL/) {$tq = "NOW() - INTERVAL 1 DAY"; $gcl = "READING"};
|
||||||
if($dbmodel =~ /SQLITE/) {$tq = "datetime('now','-1 day')"; $gcl = "READING"};
|
if ($dbmodel =~ /SQLITE/) {$tq = "datetime('now','-1 day')"; $gcl = "READING"};
|
||||||
if($dbmodel =~ /POSTGRESQL/) {$tq = "CURRENT_TIMESTAMP - INTERVAL '1 day'"; $gcl = "READING,DEVICE"};
|
if ($dbmodel =~ /POSTGRESQL/) {$tq = "CURRENT_TIMESTAMP - INTERVAL '1 day'"; $gcl = "READING,DEVICE"};
|
||||||
|
|
||||||
$sqlcmd = "SELECT t1.TIMESTAMP,t1.DEVICE,t1.READING,t1.VALUE
|
$sqlcmd = "SELECT t1.TIMESTAMP,t1.DEVICE,t1.READING,t1.VALUE
|
||||||
FROM history t1
|
FROM history t1
|
||||||
@ -1118,7 +1080,7 @@ sub DbRep_Set {
|
|||||||
$sqlcmd .= ';' if ($sqlcmd !~ m/\;$/x);
|
$sqlcmd .= ';' if ($sqlcmd !~ m/\;$/x);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($opt eq "sqlCmdHistory") {
|
if ($opt eq "sqlCmdHistory") {
|
||||||
$sqlcmd = $prop;
|
$sqlcmd = $prop;
|
||||||
$sqlcmd =~ s/§/_ESC_ECS_/g;
|
$sqlcmd =~ s/§/_ESC_ECS_/g;
|
||||||
$sqlcmd =~ tr/ A-Za-z0-9!"#%&'()*+,-.\/:;<=>?@[\\]^_`{|}~äöüÄÖÜ߀/ /cs;
|
$sqlcmd =~ tr/ A-Za-z0-9!"#%&'()*+,-.\/:;<=>?@[\\]^_`{|}~äöüÄÖÜ߀/ /cs;
|
||||||
@ -1126,35 +1088,30 @@ sub DbRep_Set {
|
|||||||
$sqlcmd =~ s/<c>/,/g; # noch aus Kompatibilitätsgründen enthalten
|
$sqlcmd =~ s/<c>/,/g; # noch aus Kompatibilitätsgründen enthalten
|
||||||
$sqlcmd =~ s/(\x20)*\xbc/,/g; # Forum: https://forum.fhem.de/index.php/topic,103908.0.html
|
$sqlcmd =~ s/(\x20)*\xbc/,/g; # Forum: https://forum.fhem.de/index.php/topic,103908.0.html
|
||||||
|
|
||||||
if($sqlcmd eq "___purge_sqlhistory___") {
|
if ($sqlcmd eq "___purge_sqlhistory___") {
|
||||||
DbRep_deleteSQLcmdCache ($name);
|
DbRep_deleteSQLcmdCache ($name);
|
||||||
return "SQL command historylist of $name deleted.";
|
return "SQL command historylist of $name deleted.";
|
||||||
}
|
}
|
||||||
|
|
||||||
if($sqlcmd eq "___list_sqlhistory___") {
|
if ($sqlcmd eq "___list_sqlhistory___") {
|
||||||
my ($cache) = DbRep_listSQLcmdCache ($name);
|
my ($cache) = DbRep_listSQLcmdCache ($name);
|
||||||
return $cache;
|
return $cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($sqlcmd eq "___save_sqlhistory___") {
|
if ($sqlcmd eq "___save_sqlhistory___") {
|
||||||
my $err = DbRep_writeSQLcmdCache ($hash); # SQL Cache File schreiben
|
my $err = DbRep_writeSQLcmdCache ($hash); # SQL Cache File schreiben
|
||||||
$err //= "SQL history entries of $name successfully saved";
|
$err //= "SQL history entries of $name successfully saved";
|
||||||
return $err;
|
return $err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($sqlcmd eq "___restore_sqlhistory___") {
|
if ($sqlcmd eq "___restore_sqlhistory___") {
|
||||||
my $count = DbRep_initSQLcmdCache ($name);
|
my $count = DbRep_initSQLcmdCache ($name);
|
||||||
return $count ? "SQL history entries of $name restored: $count" : undef;
|
return $count ? "SQL history entries of $name restored: $count" : undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sqlcmd =~ m/^\s*delete/is && !AttrVal($name, 'allowDeletion', undef)) {
|
|
||||||
return "Attribute 'allowDeletion = 1' is needed for command '$sqlcmd'. Use it with care !";
|
|
||||||
}
|
|
||||||
|
|
||||||
$sqlcmd = _DbRep_sqlFormOnline ($hash, $sqlcmd); # SQL Statement online formatieren
|
$sqlcmd = _DbRep_sqlFormOnline ($hash, $sqlcmd); # SQL Statement online formatieren
|
||||||
|
$sqlcmd = DbRep_trim ($sqlcmd);
|
||||||
$sqlcmd = DbRep_trim ($sqlcmd);
|
|
||||||
$data{DbRep}{$name}{sqlcache}{temp} = $sqlcmd; # SQL incl. Formatierung zwischenspeichern
|
$data{DbRep}{$name}{sqlcache}{temp} = $sqlcmd; # SQL incl. Formatierung zwischenspeichern
|
||||||
|
|
||||||
my @cmd = split /\s+/, $sqlcmd;
|
my @cmd = split /\s+/, $sqlcmd;
|
||||||
@ -1175,7 +1132,7 @@ sub DbRep_Set {
|
|||||||
|
|
||||||
my $complex = 0;
|
my $complex = 0;
|
||||||
|
|
||||||
if($newval =~ m/^\s*\{"(.*)"\}\s*$/s) {
|
if ($newval =~ m/^\s*\{"(.*)"\}\s*$/s) {
|
||||||
$newval = $1;
|
$newval = $1;
|
||||||
$complex = 1;
|
$complex = 1;
|
||||||
}
|
}
|
||||||
@ -1192,7 +1149,7 @@ sub DbRep_Set {
|
|||||||
return qq{A DbLog-device (standby) is needed to sync. Use "set $name syncStandby <DbLog-standby name>"};
|
return qq{A DbLog-device (standby) is needed to sync. Use "set $name syncStandby <DbLog-standby name>"};
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!exists($defs{$prop}) || $defs{$prop}->{TYPE} ne "DbLog") {
|
if (!exists($defs{$prop}) || $defs{$prop}->{TYPE} ne "DbLog") {
|
||||||
return qq{The device "$prop" doesn't exist or is not a DbLog-device.};
|
return qq{The device "$prop" doesn't exist or is not a DbLog-device.};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1387,17 +1344,12 @@ sub DbRep_Get {
|
|||||||
$sqlcmd = join ' ', @cmd;
|
$sqlcmd = join ' ', @cmd;
|
||||||
|
|
||||||
DbRep_setLastCmd ($name, $opt, $sqlcmd);
|
DbRep_setLastCmd ($name, $opt, $sqlcmd);
|
||||||
|
DbRep_delread ($hash); # Readings löschen die nicht in der Ausnahmeliste (Attr readingPreventFromDel) stehen
|
||||||
if ($sqlcmd =~ m/^\s*delete/is && !AttrVal($name, "allowDeletion", undef)) {
|
|
||||||
return "Attribute 'allowDeletion = 1' is needed for command '$sqlcmd'. Use it with care !";
|
|
||||||
}
|
|
||||||
|
|
||||||
DbRep_delread ($hash); # Readings löschen die nicht in der Ausnahmeliste (Attr readingPreventFromDel) stehen
|
|
||||||
ReadingsSingleUpdateValue ($hash, "state", "running", 1);
|
ReadingsSingleUpdateValue ($hash, "state", "running", 1);
|
||||||
|
|
||||||
return DbRep_sqlCmdBlocking($name,$sqlcmd);
|
return DbRep_sqlCmdBlocking($name,$sqlcmd);
|
||||||
}
|
}
|
||||||
elsif ($opt eq "storedCredentials") { # Credentials abrufen
|
elsif ($opt eq "storedCredentials") { # Credentials abrufen
|
||||||
my $atxt;
|
my $atxt;
|
||||||
my $username = $defs{$defs{$name}->{HELPER}{DBLOGDEVICE}}->{dbuser};
|
my $username = $defs{$defs{$name}->{HELPER}{DBLOGDEVICE}}->{dbuser};
|
||||||
my $dblogname = $defs{$defs{$name}->{HELPER}{DBLOGDEVICE}}->{NAME};
|
my $dblogname = $defs{$defs{$name}->{HELPER}{DBLOGDEVICE}}->{NAME};
|
||||||
@ -1527,13 +1479,24 @@ sub DbRep_Attr {
|
|||||||
my $dbmodel = $dbloghash->{MODEL};
|
my $dbmodel = $dbloghash->{MODEL};
|
||||||
my $do;
|
my $do;
|
||||||
|
|
||||||
|
### nicht mehr benötigte Daten verarbeiten - Bereich kann später wieder raus !!
|
||||||
|
######################################################################################################################
|
||||||
|
if ($cmd eq 'set' && $aName eq 'allowDeletion') {
|
||||||
|
if (!$init_done) {
|
||||||
|
return qq{Device "$name" -> The attribute '$aName' is obsolete and will be deleted soon. Please press "save config" when FHEM start is finished.};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return qq{The attribute '$aName' is obsolete and will be deleted soon.};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
######################################################################################################################
|
||||||
|
|
||||||
# $cmd can be "del" or "set"
|
# $cmd can be "del" or "set"
|
||||||
# $name is device name
|
# $name is device name
|
||||||
# aName and aVal are Attribute name and value
|
# aName and aVal are Attribute name and value
|
||||||
|
|
||||||
# nicht erlaubte / nicht setzbare Attribute wenn role = Agent
|
# nicht erlaubte / nicht setzbare Attribute wenn role = Agent
|
||||||
my @agentnoattr = qw(aggregation
|
my @agentnoattr = qw(aggregation
|
||||||
allowDeletion
|
|
||||||
autoForward
|
autoForward
|
||||||
dumpDirLocal
|
dumpDirLocal
|
||||||
reading
|
reading
|
||||||
@ -13002,6 +12965,8 @@ sub DbRep_nextMultiCmd {
|
|||||||
my @mattr = qw(aggregation
|
my @mattr = qw(aggregation
|
||||||
autoForward
|
autoForward
|
||||||
averageCalcForm
|
averageCalcForm
|
||||||
|
executeBeforeProc
|
||||||
|
executeAfterProc
|
||||||
timestamp_begin
|
timestamp_begin
|
||||||
timestamp_end
|
timestamp_end
|
||||||
timeDiffToNow
|
timeDiffToNow
|
||||||
@ -15053,8 +15018,6 @@ return;
|
|||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Due to security reasons the attribute <a href="#DbRep-attr-allowDeletion">allowDeletion</a> needs
|
|
||||||
to be set for execute the "delete" option. <br>
|
|
||||||
The amount of datasets to show by commands "delDoublets adviceDelete" is initially limited
|
The amount of datasets to show by commands "delDoublets adviceDelete" is initially limited
|
||||||
and can be adjusted by <a href="#DbRep-attr-limit">limit</a> attribute.
|
and can be adjusted by <a href="#DbRep-attr-limit">limit</a> attribute.
|
||||||
The adjustment of "limit" has no impact to the "delDoublets delete" function, but affects
|
The adjustment of "limit" has no impact to the "delDoublets delete" function, but affects
|
||||||
@ -15083,7 +15046,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<table>
|
<table>
|
||||||
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
||||||
<tr><td> <b>allowDeletion</b> </td><td>: needs to be set to execute the delete option </td></tr>
|
|
||||||
<tr><td> <b>aggregation</b> </td><td>: choose the aggregation period </td></tr>
|
<tr><td> <b>aggregation</b> </td><td>: choose the aggregation period </td></tr>
|
||||||
<tr><td> <b>limit</b> </td><td>: limits ONLY the count of datasets to display </td></tr>
|
<tr><td> <b>limit</b> </td><td>: limits ONLY the count of datasets to display </td></tr>
|
||||||
<tr><td> <b>device</b> </td><td>: include or exclude <device> from selection </td></tr>
|
<tr><td> <b>device</b> </td><td>: include or exclude <device> from selection </td></tr>
|
||||||
@ -15116,8 +15078,6 @@ return;
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
Due to security reasons the attribute <a href="#DbRep-attr-allowDeletion">allowDeletion</a> needs to be set to unlock the
|
|
||||||
delete-function. <br>
|
|
||||||
Time limits (days) can be specified as an option. In this case, any time.*-attributes set are
|
Time limits (days) can be specified as an option. In this case, any time.*-attributes set are
|
||||||
overmodulated.
|
overmodulated.
|
||||||
Records older than <b><no></b> days and (optionally) newer than
|
Records older than <b><no></b> days and (optionally) newer than
|
||||||
@ -15129,7 +15089,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<table>
|
<table>
|
||||||
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
||||||
<tr><td> <b>allowDeletion</b> </td><td>: unlock the delete function </td></tr>
|
|
||||||
<tr><td> <b>device</b> </td><td>: include or exclude <device> from selection </td></tr>
|
<tr><td> <b>device</b> </td><td>: include or exclude <device> from selection </td></tr>
|
||||||
<tr><td> <b>reading</b> </td><td>: include or exclude <reading> from selection </td></tr>
|
<tr><td> <b>reading</b> </td><td>: include or exclude <reading> from selection </td></tr>
|
||||||
<tr><td> <b>time.*</b> </td><td>: a number of attributes to limit selection by time </td></tr>
|
<tr><td> <b>time.*</b> </td><td>: a number of attributes to limit selection by time </td></tr>
|
||||||
@ -15164,8 +15123,6 @@ return;
|
|||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Due to security reasons the attribute <a href="#DbRep-attr-allowDeletion">allowDeletion</a> needs to be set for
|
|
||||||
execute the "delete" option. <br>
|
|
||||||
The amount of datasets to show by commands "delSeqDoublets adviceDelete", "delSeqDoublets adviceRemain" is
|
The amount of datasets to show by commands "delSeqDoublets adviceDelete", "delSeqDoublets adviceRemain" is
|
||||||
initially limited (default: 1000) and can be adjusted by attribute <a href="#DbRep-attr-limit">limit</a>.
|
initially limited (default: 1000) and can be adjusted by attribute <a href="#DbRep-attr-limit">limit</a>.
|
||||||
The adjustment of "limit" has no impact to the "delSeqDoublets delete" function, but affects <b>ONLY</b> the
|
The adjustment of "limit" has no impact to the "delSeqDoublets delete" function, but affects <b>ONLY</b> the
|
||||||
@ -15215,7 +15172,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<table>
|
<table>
|
||||||
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
||||||
<tr><td> <b>allowDeletion</b> </td><td>: needs to be set to execute the delete option </td></tr>
|
|
||||||
<tr><td> <b>aggregation</b> </td><td>: choose the aggregation period </td></tr>
|
<tr><td> <b>aggregation</b> </td><td>: choose the aggregation period </td></tr>
|
||||||
<tr><td> <b>limit</b> </td><td>: limits ONLY the count of datasets to display </td></tr>
|
<tr><td> <b>limit</b> </td><td>: limits ONLY the count of datasets to display </td></tr>
|
||||||
<tr><td> <b>device</b> </td><td>: include or exclude <device> from selection </td></tr>
|
<tr><td> <b>device</b> </td><td>: include or exclude <device> from selection </td></tr>
|
||||||
@ -15904,33 +15860,35 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<pre>
|
<pre>
|
||||||
{
|
{
|
||||||
1 => { timestamp_begin => '2023-12-17 00:00:00',
|
1 => { executeBeforeProc => 'set LogDB reopen 900',
|
||||||
timestamp_end => '2023-12-17 01:00:00',
|
timestamp_begin => '2023-12-17 00:00:00',
|
||||||
device => 'SMA_Energymeter',
|
timestamp_end => '2023-12-17 01:00:00',
|
||||||
reading => 'Einspeisung_Wirkleistung_Zaehler',
|
device => 'SMA_Energymeter',
|
||||||
cmd => 'countEntries history'
|
reading => 'Einspeisung_Wirkleistung_Zaehler',
|
||||||
|
cmd => 'countEntries history'
|
||||||
},
|
},
|
||||||
2 => { timestamp_begin => '2023-12-15 11:00:00',
|
2 => { timestamp_begin => '2023-12-15 11:00:00',
|
||||||
timestamp_end => 'previous_day_end',
|
timestamp_end => 'previous_day_end',
|
||||||
device => 'SMA_Energymeter',
|
device => 'SMA_Energymeter',
|
||||||
reading => 'Einspeisung_Wirkleistung_Zaehler',
|
reading => 'Einspeisung_Wirkleistung_Zaehler',
|
||||||
cmd => 'countEntries'
|
cmd => 'countEntries'
|
||||||
},
|
},
|
||||||
3 => { timeDiffToNow => 'd:2',
|
3 => { timeDiffToNow => 'd:2',
|
||||||
readingNameMap => 'COUNT',
|
readingNameMap => 'COUNT',
|
||||||
autoForward => '{ ".*COUNT.*" => "Dum.Rep.All" }',
|
autoForward => '{ ".*COUNT.*" => "Dum.Rep.All" }',
|
||||||
device => 'SMA_%,MySTP.*',
|
device => 'SMA_%,MySTP.*',
|
||||||
reading => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
|
reading => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
|
||||||
cmd => 'countEntries history'
|
cmd => 'countEntries history'
|
||||||
},
|
},
|
||||||
4 => { timeDiffToNow => 'd:2',
|
4 => { timeDiffToNow => 'd:2',
|
||||||
readingNameMap => 'SUM',
|
readingNameMap => 'SUM',
|
||||||
autoForward => '{ ".*SUM.*" => "Dum.Rep.All" }',
|
autoForward => '{ ".*SUM.*" => "Dum.Rep.All" }',
|
||||||
device => 'SMA_%,MySTP.*',
|
device => 'SMA_%,MySTP.*',
|
||||||
reading => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
|
reading => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
|
||||||
cmd => 'sumValue'
|
cmd => 'sumValue'
|
||||||
},
|
},
|
||||||
5 => { cmd => 'sqlCmd select count(*) from current'
|
5 => { executeAfterProc => 'set LogDB reopen',
|
||||||
|
cmd => 'sqlCmd select count(*) from current'
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</pre>
|
</pre>
|
||||||
@ -16224,9 +16182,6 @@ return;
|
|||||||
<li><b> sqlCmd </b> <br><br>
|
<li><b> sqlCmd </b> <br><br>
|
||||||
|
|
||||||
Executes any user-specific command. <br>
|
Executes any user-specific command. <br>
|
||||||
If this command contains a delete operation, for safety reasons the attribute
|
|
||||||
<a href="#DbRep-attr-allowDeletion">allowDeletion</a> has to be set. <br>
|
|
||||||
|
|
||||||
sqlCmd also accepts the setting of SQL session variables such as.
|
sqlCmd also accepts the setting of SQL session variables such as.
|
||||||
"SET @open:=NULL, @closed:=NULL;" or the use of SQLite PRAGMA prior to the
|
"SET @open:=NULL, @closed:=NULL;" or the use of SQLite PRAGMA prior to the
|
||||||
execution of the SQL statement.
|
execution of the SQL statement.
|
||||||
@ -16306,7 +16261,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
||||||
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
||||||
<a href="#DbRep-attr-allowDeletion">allowDeletion</a>,
|
|
||||||
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
||||||
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
||||||
<a href="#DbRep-attr-sqlCmdHistoryLength">sqlCmdHistoryLength</a>,
|
<a href="#DbRep-attr-sqlCmdHistoryLength">sqlCmdHistoryLength</a>,
|
||||||
@ -16351,7 +16305,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
||||||
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
||||||
<a href="#DbRep-attr-allowDeletion">allowDeletion</a>,
|
|
||||||
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
||||||
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
||||||
<a href="#DbRep-attr-sqlCmdHistoryLength">sqlCmdHistoryLength</a>,
|
<a href="#DbRep-attr-sqlCmdHistoryLength">sqlCmdHistoryLength</a>,
|
||||||
@ -16395,7 +16348,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
||||||
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
||||||
<a href="#DbRep-attr-allowDeletion">allowDeletion</a>,
|
|
||||||
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
||||||
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
||||||
<a href="#DbRep-attr-sqlFormatService">sqlFormatService</a>,
|
<a href="#DbRep-attr-sqlFormatService">sqlFormatService</a>,
|
||||||
@ -16813,13 +16765,6 @@ sub dbval {
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a id="DbRep-attr-allowDeletion"></a>
|
|
||||||
<li><b>allowDeletion </b> <br><br>
|
|
||||||
|
|
||||||
Enables the delete function of the module.
|
|
||||||
</li>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<a id="DbRep-attr-autoForward"></a>
|
<a id="DbRep-attr-autoForward"></a>
|
||||||
<li><b>autoForward </b> <br><br>
|
<li><b>autoForward </b> <br><br>
|
||||||
If activated, the result threads of a function are transferred to one or more devices. <br>
|
If activated, the result threads of a function are transferred to one or more devices. <br>
|
||||||
@ -18165,8 +18110,6 @@ return;
|
|||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Aus Sicherheitsgründen muss das Attribut <a href="#DbRep-attr-allowDeletion">allowDeletion</a> für die "delete" Option
|
|
||||||
gesetzt sein. <br>
|
|
||||||
Die Anzahl der anzuzeigenden Datensätze des Kommandos "delDoublets adviceDelete" ist zunächst
|
Die Anzahl der anzuzeigenden Datensätze des Kommandos "delDoublets adviceDelete" ist zunächst
|
||||||
begrenzt (default 1000) und kann durch das Attribut <a href="#DbRep-attr-limit">limit</a> angepasst
|
begrenzt (default 1000) und kann durch das Attribut <a href="#DbRep-attr-limit">limit</a> angepasst
|
||||||
werden.
|
werden.
|
||||||
@ -18196,7 +18139,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<table>
|
<table>
|
||||||
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
||||||
<tr><td> <b>allowDeletion</b> </td><td>: Freischaltung der Löschfunktion </td></tr>
|
|
||||||
<tr><td> <b>aggregation</b> </td><td>: Auswahl einer Aggregationsperiode </td></tr>
|
<tr><td> <b>aggregation</b> </td><td>: Auswahl einer Aggregationsperiode </td></tr>
|
||||||
<tr><td> <b>device</b> </td><td>: einschließen oder ausschließen von Datensätzen die <device> enthalten </td></tr>
|
<tr><td> <b>device</b> </td><td>: einschließen oder ausschließen von Datensätzen die <device> enthalten </td></tr>
|
||||||
<tr><td> <b>limit</b> </td><td>: begrenzt NUR die Anzahl der anzuzeigenden Datensätze </td></tr>
|
<tr><td> <b>limit</b> </td><td>: begrenzt NUR die Anzahl der anzuzeigenden Datensätze </td></tr>
|
||||||
@ -18226,8 +18168,6 @@ return;
|
|||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Aus Sicherheitsgründen muss das Attribut <a href="#DbRep-attr-allowDeletion">allowDeletion</a>
|
|
||||||
gesetzt sein um die Löschfunktion freizuschalten. <br>
|
|
||||||
Zeitgrenzen (Tage) können als Option angegeben werden. In diesem Fall werden eventuell gesetzte Zeitattribute
|
Zeitgrenzen (Tage) können als Option angegeben werden. In diesem Fall werden eventuell gesetzte Zeitattribute
|
||||||
übersteuert.
|
übersteuert.
|
||||||
Es werden Datensätze berücksichtigt die älter sind als <b><no></b> Tage und (optional) neuer sind als
|
Es werden Datensätze berücksichtigt die älter sind als <b><no></b> Tage und (optional) neuer sind als
|
||||||
@ -18239,7 +18179,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<table>
|
<table>
|
||||||
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
||||||
<tr><td> <b>allowDeletion</b> </td><td>: Freischaltung der Löschfunktion </td></tr>
|
|
||||||
<tr><td> <b>device</b> </td><td>: einschließen oder ausschließen von Datensätzen die <device> enthalten </td></tr>
|
<tr><td> <b>device</b> </td><td>: einschließen oder ausschließen von Datensätzen die <device> enthalten </td></tr>
|
||||||
<tr><td> <b>reading</b> </td><td>: einschließen oder ausschließen von Datensätzen die <reading> enthalten </td></tr>
|
<tr><td> <b>reading</b> </td><td>: einschließen oder ausschließen von Datensätzen die <reading> enthalten </td></tr>
|
||||||
<tr><td> <b>readingNameMap</b> </td><td>: die entstehenden Ergebnisreadings werden partiell umbenannt </td></tr>
|
<tr><td> <b>readingNameMap</b> </td><td>: die entstehenden Ergebnisreadings werden partiell umbenannt </td></tr>
|
||||||
@ -18274,8 +18213,6 @@ return;
|
|||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Aus Sicherheitsgründen muss das Attribut <a href="#DbRep-attr-allowDeletion">allowDeletion</a> für die "delete" Option
|
|
||||||
gesetzt sein. <br>
|
|
||||||
Die Anzahl der anzuzeigenden Datensätze der Kommandos "delSeqDoublets adviceDelete", "delSeqDoublets adviceRemain" ist
|
Die Anzahl der anzuzeigenden Datensätze der Kommandos "delSeqDoublets adviceDelete", "delSeqDoublets adviceRemain" ist
|
||||||
zunächst begrenzt (default 1000) und kann durch das Attribut <a href="#DbRep-attr-limit">limit</a> angepasst werden.
|
zunächst begrenzt (default 1000) und kann durch das Attribut <a href="#DbRep-attr-limit">limit</a> angepasst werden.
|
||||||
Die Einstellung von "limit" hat keinen Einfluss auf die "delSeqDoublets delete" Funktion, sondern beeinflusst <b>NUR</b> die
|
Die Einstellung von "limit" hat keinen Einfluss auf die "delSeqDoublets delete" Funktion, sondern beeinflusst <b>NUR</b> die
|
||||||
@ -18326,7 +18263,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<table>
|
<table>
|
||||||
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
<colgroup> <col width=5%> <col width=95%> </colgroup>
|
||||||
<tr><td> <b>allowDeletion</b> </td><td>: needs to be set to execute the delete option </td></tr>
|
|
||||||
<tr><td> <b>aggregation</b> </td><td>: Auswahl einer Aggregationsperiode </td></tr>
|
<tr><td> <b>aggregation</b> </td><td>: Auswahl einer Aggregationsperiode </td></tr>
|
||||||
<tr><td> <b>device</b> </td><td>: einschließen oder ausschließen von Datensätzen die <device> enthalten </td></tr>
|
<tr><td> <b>device</b> </td><td>: einschließen oder ausschließen von Datensätzen die <device> enthalten </td></tr>
|
||||||
<tr><td> <b>limit</b> </td><td>: begrenzt NUR die Anzahl der anzuzeigenden Datensätze </td></tr>
|
<tr><td> <b>limit</b> </td><td>: begrenzt NUR die Anzahl der anzuzeigenden Datensätze </td></tr>
|
||||||
@ -19020,6 +18956,8 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<a href="#DbRep-attr-autoForward">autoForward</a>,
|
<a href="#DbRep-attr-autoForward">autoForward</a>,
|
||||||
<a href="#DbRep-attr-averageCalcForm">averageCalcForm</a>,
|
<a href="#DbRep-attr-averageCalcForm">averageCalcForm</a>,
|
||||||
|
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
||||||
|
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
||||||
<a href="#DbRep-attr-timestamp_begin">timestamp_begin</a>,
|
<a href="#DbRep-attr-timestamp_begin">timestamp_begin</a>,
|
||||||
<a href="#DbRep-attr-timestamp_end">timestamp_end</a>,
|
<a href="#DbRep-attr-timestamp_end">timestamp_end</a>,
|
||||||
<a href="#DbRep-attr-timeDiffToNow">timeDiffToNow</a>,
|
<a href="#DbRep-attr-timeDiffToNow">timeDiffToNow</a>,
|
||||||
@ -19036,33 +18974,35 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<pre>
|
<pre>
|
||||||
{
|
{
|
||||||
1 => { timestamp_begin => '2023-12-17 00:00:00',
|
1 => { executeBeforeProc => 'set LogDB reopen 900',
|
||||||
timestamp_end => '2023-12-17 01:00:00',
|
timestamp_begin => '2023-12-17 00:00:00',
|
||||||
device => 'SMA_Energymeter',
|
timestamp_end => '2023-12-17 01:00:00',
|
||||||
reading => 'Einspeisung_Wirkleistung_Zaehler',
|
device => 'SMA_Energymeter',
|
||||||
cmd => 'countEntries history'
|
reading => 'Einspeisung_Wirkleistung_Zaehler',
|
||||||
|
cmd => 'countEntries history'
|
||||||
},
|
},
|
||||||
2 => { timestamp_begin => '2023-12-15 11:00:00',
|
2 => { timestamp_begin => '2023-12-15 11:00:00',
|
||||||
timestamp_end => 'previous_day_end',
|
timestamp_end => 'previous_day_end',
|
||||||
device => 'SMA_Energymeter',
|
device => 'SMA_Energymeter',
|
||||||
reading => 'Einspeisung_Wirkleistung_Zaehler',
|
reading => 'Einspeisung_Wirkleistung_Zaehler',
|
||||||
cmd => 'countEntries'
|
cmd => 'countEntries'
|
||||||
},
|
},
|
||||||
3 => { timeDiffToNow => 'd:2',
|
3 => { timeDiffToNow => 'd:2',
|
||||||
readingNameMap => 'COUNT',
|
readingNameMap => 'COUNT',
|
||||||
autoForward => '{ ".*COUNT.*" => "Dum.Rep.All" }',
|
autoForward => '{ ".*COUNT.*" => "Dum.Rep.All" }',
|
||||||
device => 'SMA_%,MySTP.*',
|
device => 'SMA_%,MySTP.*',
|
||||||
reading => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
|
reading => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
|
||||||
cmd => 'countEntries history'
|
cmd => 'countEntries history'
|
||||||
},
|
},
|
||||||
4 => { timeDiffToNow => 'd:2',
|
4 => { timeDiffToNow => 'd:2',
|
||||||
readingNameMap => 'SUM',
|
readingNameMap => 'SUM',
|
||||||
autoForward => '{ ".*SUM.*" => "Dum.Rep.All" }',
|
autoForward => '{ ".*SUM.*" => "Dum.Rep.All" }',
|
||||||
device => 'SMA_%,MySTP.*',
|
device => 'SMA_%,MySTP.*',
|
||||||
reading => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
|
reading => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
|
||||||
cmd => 'sumValue'
|
cmd => 'sumValue'
|
||||||
},
|
},
|
||||||
5 => { cmd => 'sqlCmd select count(*) from current'
|
5 => { executeAfterProc => 'set LogDB reopen',
|
||||||
|
cmd => 'sqlCmd select count(*) from current'
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</pre>
|
</pre>
|
||||||
@ -19364,8 +19304,6 @@ return;
|
|||||||
<li><b> sqlCmd </b> <br><br>
|
<li><b> sqlCmd </b> <br><br>
|
||||||
|
|
||||||
Führt ein beliebiges benutzerspezifisches Kommando aus. <br>
|
Führt ein beliebiges benutzerspezifisches Kommando aus. <br>
|
||||||
Enthält dieses Kommando eine Delete-Operation, muss zur Sicherheit das Attribut
|
|
||||||
<a href="#DbRep-attr-allowDeletion">allowDeletion</a> gesetzt sein. <br>
|
|
||||||
sqlCmd akzeptiert ebenfalls das Setzen von SQL Session Variablen wie z.B.
|
sqlCmd akzeptiert ebenfalls das Setzen von SQL Session Variablen wie z.B.
|
||||||
"SET @open:=NULL, @closed:=NULL;" oder die Verwendung von SQLite PRAGMA vor der
|
"SET @open:=NULL, @closed:=NULL;" oder die Verwendung von SQLite PRAGMA vor der
|
||||||
Ausführung des SQL-Statements.
|
Ausführung des SQL-Statements.
|
||||||
@ -19447,7 +19385,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
||||||
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
||||||
<a href="#DbRep-attr-allowDeletion">allowDeletion</a>,
|
|
||||||
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
||||||
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
||||||
<a href="#DbRep-attr-sqlCmdHistoryLength">sqlCmdHistoryLength</a>,
|
<a href="#DbRep-attr-sqlCmdHistoryLength">sqlCmdHistoryLength</a>,
|
||||||
@ -19493,7 +19430,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
||||||
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
||||||
<a href="#DbRep-attr-allowDeletion">allowDeletion</a>,
|
|
||||||
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
||||||
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
||||||
<a href="#DbRep-attr-sqlCmdHistoryLength">sqlCmdHistoryLength</a>,
|
<a href="#DbRep-attr-sqlCmdHistoryLength">sqlCmdHistoryLength</a>,
|
||||||
@ -19538,7 +19474,6 @@ return;
|
|||||||
<ul>
|
<ul>
|
||||||
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
<a href="#DbRep-attr-executeBeforeProc">executeBeforeProc</a>,
|
||||||
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
<a href="#DbRep-attr-executeAfterProc">executeAfterProc</a>,
|
||||||
<a href="#DbRep-attr-allowDeletion">allowDeletion</a>,
|
|
||||||
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
<a href="#DbRep-attr-sqlResultFormat">sqlResultFormat</a>,
|
||||||
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
<a href="#DbRep-attr-sqlResultFieldSep">sqlResultFieldSep</a>,
|
||||||
<a href="#DbRep-attr-sqlFormatService">sqlFormatService</a>,
|
<a href="#DbRep-attr-sqlFormatService">sqlFormatService</a>,
|
||||||
@ -19958,13 +19893,6 @@ sub dbval {
|
|||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a id="DbRep-attr-allowDeletion"></a>
|
|
||||||
<li><b>allowDeletion </b> <br><br>
|
|
||||||
|
|
||||||
Schaltet die Löschfunktion des Moduls frei.
|
|
||||||
</li>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<a id="DbRep-attr-autoForward"></a>
|
<a id="DbRep-attr-autoForward"></a>
|
||||||
<li><b>autoForward </b> <br><br>
|
<li><b>autoForward </b> <br><br>
|
||||||
Wenn aktiviert, werden die Ergebnisreadings einer Funktion in ein oder mehrere Devices
|
Wenn aktiviert, werden die Ergebnisreadings einer Funktion in ein oder mehrere Devices
|
||||||
|
Loading…
x
Reference in New Issue
Block a user