93_DbRep: contrib 8.29.1

git-svn-id: https://svn.fhem.de/fhem/trunk@20497 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
DS_Starter
2019-11-11 22:00:30 +00:00
parent 5c50518516
commit 2b0f9b835c

View File

@@ -1,5 +1,5 @@
##########################################################################################################
# $Id: 93_DbRep.pm 20379 2019-10-18 20:49:04Z DS_Starter $
# $Id: 93_DbRep.pm 20481 2019-11-09 07:14:24Z DS_Starter $
##########################################################################################################
# 93_DbRep.pm
#
@@ -58,7 +58,8 @@ no if $] >= 5.017011, warnings => 'experimental::smartmatch';
# Version History intern
our %DbRep_vNotesIntern = (
"8.29.0" => "08.11.2019 add option FullDay for timeDiffToNow and timeOlderThan ",
"8.29.1" => "11.11.2019 commandref revised, implement central \$today variable ",
"8.29.0" => "08.11.2019 add option FullDay for timeDiffToNow and timeOlderThan, Forum: https://forum.fhem.de/index.php/topic,53584.msg991139.html#msg991139 ",
"8.28.2" => "18.10.2019 change SQL selection in deldoublets_DoParse due to Incompatible change of MySQL 8.0.13, Forum: https://forum.fhem.de/index.php/topic,104593.msg985007.html#msg985007 ",
"8.28.1" => "09.10.2019 fix warnings line 5173 ",
"8.28.0" => "30.09.2019 seqDoubletsVariance - separate specification of positive and negative variance possible, Forum: https://forum.fhem.de/index.php/topic,53584.msg959963.html#msg959963 ",
@@ -169,6 +170,8 @@ our %DbRep_vNotesIntern = (
# Version History extern:
our %DbRep_vNotesExtern = (
"8.29.0" => "08.11.2019 add option FullDay for timeDiffToNow and timeOlderThan, Forum: https://forum.fhem.de/index.php/topic,53584.msg991139.html#msg991139 ",
"8.28.0" => "30.09.2019 seqDoubletsVariance - separate specification of positive and negative variance possible, Forum: https://forum.fhem.de/index.php/topic,53584.msg959963.html#msg959963 ",
"8.25.0" => "29.08.2019 If a list of devices in attribute \"device\" contains a SQL wildcard (\%), this wildcard is now "
."dissolved into separate devices if they are still existing in your FHEM configuration. "
."Please see <a href=\"https://forum.fhem.de/index.php/topic,101756.0.html\">this Forum Thread</a> "
@@ -323,8 +326,10 @@ our %DbRep_vHintsExt_de = (
"1" => "Hilfreiche Hinweise zu DbRep im <a href=\"https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Praxisbeispiele_.2F_Hinweise_und_L.C3.B6sungsans.C3.A4tze_f.C3.BCr_verschiedene_Aufgaben\">FHEM-Wiki</a>."
);
# foreward declaration
sub DbRep_Main($$;$);
sub DbLog_cutCol($$$$$$$); # DbLog-Funktion nutzen um Daten auf maximale Länge beschneiden
our $today; # zentral von FHEM bereitgestellt (z.B. 2019-11-11)
# Standard Feldbreiten falls noch nicht getInitData ausgeführt
my %dbrep_col = ("DEVICE" => 64,
@@ -2232,7 +2237,7 @@ sub DbRep_createTimeArray($$$) {
$wdadd = 172800 if($wd eq "Sa"); # wenn Start am "Sa" dann nächste Grenze +2 Tage
$wdadd = 86400 if($wd eq "So"); # wenn Start am "So" dann nächste Grenze +1 Tage
Log3 ($name, 5, "DbRep $name - weekday of start for selection: $wd -> wdadd: $wdadd") if($wdadd);
Log3 ($name, 5, "DbRep $name - weekday start for selection: $wd -> wdadd: $wdadd") if($wdadd);
my $aggsec;
if ($aggregation eq "hour") {
@@ -10835,12 +10840,12 @@ sub DbRep_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{SMAPortal}{META}}
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 93_DbRep.pm 20379 2019-10-18 20:49:04Z DS_Starter $ im Kopf komplett! vorhanden )
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 93_DbRep.pm 20481 2019-11-09 07:14:24Z DS_Starter $ im Kopf komplett! vorhanden )
$modules{$type}{META}{x_version} =~ s/1.1.1/$v/g;
} else {
$modules{$type}{META}{x_version} = $v;
}
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbRep.pm 20379 2019-10-18 20:49:04Z DS_Starter $ im Kopf komplett! vorhanden )
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbRep.pm 20481 2019-11-09 07:14:24Z 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
@@ -11237,7 +11242,8 @@ return;
<b>Examples: </b><br>
my $ret = DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-01-13_08:00:00",""); <br>
attr &lt;name&gt; userReadings oldtemp {DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-04-13_08:00:00","")}
attr &lt;name&gt; userReadings oldtemp {DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-04-13_08:00:00","")} <br>
attr &lt;name&gt; userReadings todayPowerIn {DbReadingsVal("Rep.LogDB1","SMA_Energymeter:Bezug_Wirkleistung_Zaehler",$today."_00:00:00",0)}
<br><br>
The command syntax for the FHEM command is: <br><br>
@@ -13395,8 +13401,10 @@ sub bdump {
<a name="timeDiffToNow"></a>
<li><b>timeDiffToNow </b> - the <b>begin time </b> of data selection will be set to the timestamp <b>"&lt;current time&gt; -
&lt;timeDiffToNow&gt;"</b> dynamically (e.g. if set to 86400, the last 24 hours are considered by data
selection). The time period will be calculated dynamically at execution time.
&lt;timeDiffToNow&gt;"</b> dynamically. The time period will be calculated dynamically at
execution time. Optional can with the additional entry "FullDay" the selection start time
and the selection end time be expanded to the begin / end of the involved days
(take only effect if adjusted time difference is >= 1 day).
<br><br>
<ul>
@@ -13413,6 +13421,8 @@ sub bdump {
# the start time is set to "current time - 1 year and 2,5 hours" <br>
<code>attr &lt;name&gt; timeDiffToNow y:1.5</code> <br>
# the start time is set to "current time - 1.5 years" <br>
<code>attr &lt;name&gt; timeDiffToNow d:8 FullDay </code> <br>
# the start time is set to "current time - 8 days", the selection time period is expanded to the begin / end of the involved days <br>
</ul>
<br>
@@ -13424,9 +13434,10 @@ sub bdump {
<a name="timeOlderThan"></a>
<li><b>timeOlderThan </b> - the <b>end time</b> of data selection will be set to the timestamp <b>"&lt;aktuelle Zeit&gt; -
&lt;timeOlderThan&gt;"</b> dynamically. Always the datasets up to timestamp
"&lt;current time&gt; - &lt;timeOlderThan&gt;" will be considered (e.g. if set to
86400, all datasets older than one day are considered). The time period will be calculated dynamically at
execution time.
"&lt;current time&gt; - &lt;timeOlderThan&gt;" will be considered. The time period will be calculated dynamically at
execution time. Optional can with the additional entry "FullDay" the selection start time
and the selection end time be expanded to the begin / end of the involved days
(take only effect if adjusted time difference is >= 1 day).
<br><br>
<ul>
@@ -13443,6 +13454,9 @@ sub bdump {
# the selection end time is set to "current time - 1 year and 2,5 hours" <br>
<code>attr &lt;name&gt; timeOlderThan y:1.5</code> <br>
# the selection end time is set to "current time - 1.5 years" <br>
<code>attr &lt;name&gt; timeOlderThan d:8 FullDay </code> <br>
# the end time is set to "current time - 8 days", the selection time period is expanded to the begin / end of the involved days <br>
</ul>
<br>
@@ -13679,7 +13693,8 @@ sub bdump {
<b>Beispiele: </b><br>
$ret = DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-01-13_08:00:00",""); <br>
attr &lt;name&gt; userReadings oldtemp {DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-04-13_08:00:00","")}
attr &lt;name&gt; userReadings oldtemp {DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-04-13_08:00:00","")} <br>
attr &lt;name&gt; userReadings todayPowerIn {DbReadingsVal("Rep.LogDB1","SMA_Energymeter:Bezug_Wirkleistung_Zaehler",$today."_00:00:00",0)}
<br><br>
Die Befehlssyntax als FHEM Kommando ist: <br><br>
@@ -15868,13 +15883,13 @@ sub bdump {
<a name="timeDiffToNow"></a>
<li><b>timeDiffToNow </b> - der <b>Selektionsbeginn</b> wird auf den Zeitpunkt <b>"&lt;aktuelle Zeit&gt; - &lt;timeDiffToNow&gt;"</b>
gesetzt. Die Timestampermittlung erfolgt dynamisch zum Ausführungszeitpunkt. Optional kann mit der Zusatzangabe
"FullDay" der Selektionsbeginn und das Selektionsende auf Beginn / Ende des jeweiligen Tages erweitert werden
(wirkt nur wenn Zeitdifferenz >= 1 Tag).
gesetzt. Die Timestampermittlung erfolgt dynamisch zum Ausführungszeitpunkt. Optional kann mit
der Zusatzangabe "FullDay" der Selektionsbeginn und das Selektionsende auf Beginn / Ende der
jeweiligen Selektionstage erweitert werden (wirkt nur wenn eingestellte Zeitdifferenz ist >= 1 Tag).
<br><br>
<ul>
<b>Eingabeformat Beispiel:</b> <br>
<b>Eingabeformat Beispiele:</b> <br>
<code>attr &lt;name&gt; timeDiffToNow 86400 </code> <br>
# die Startzeit wird auf "aktuelle Zeit - 86400 Sekunden" gesetzt <br>
<code>attr &lt;name&gt; timeDiffToNow d:2 h:3 m:2 s:10 </code> <br>
@@ -15888,7 +15903,7 @@ sub bdump {
<code>attr &lt;name&gt; timeDiffToNow y:1.5</code> <br>
# die Startzeit wird auf "aktuelle Zeit - 1,5 Jahre gesetzt <br>
<code>attr &lt;name&gt; timeDiffToNow d:8 FullDay </code> <br>
# die Startzeit wird auf "aktuelle Zeit - 8 Tage gesetzt, der Selektionszeitraum wird auf Beginn / Ende des jeweiligen Tages erweitert <br>
# die Startzeit wird auf "aktuelle Zeit - 8 Tage gesetzt, der Selektionszeitraum wird auf Beginn / Ende der beteiligten Tage erweitert <br>
</ul>
<br>
@@ -15902,12 +15917,12 @@ sub bdump {
gesetzt. Dadurch werden alle Datensätze bis zu dem Zeitpunkt "&lt;aktuelle
Zeit&gt; - &lt;timeOlderThan&gt;" berücksichtigt. Die Timestampermittlung erfolgt
dynamisch zum Ausführungszeitpunkt. Optional kann mit der Zusatzangabe
"FullDay" der Selektionsbeginn und das Selektionsende auf Beginn / Ende des jeweiligen Tages erweitert werden
(wirkt nur wenn Zeitdifferenz >= 1 Tag).
"FullDay" der Selektionsbeginn und das Selektionsende auf Beginn / Ende der jeweiligen
Selektionstage erweitert werden (wirkt nur wenn eingestellte Zeitdifferenz ist >= 1 Tag).
<br><br>
<ul>
<b>Eingabeformat Beispiel:</b> <br>
<b>Eingabeformat Beispiele:</b> <br>
<code>attr &lt;name&gt; timeOlderThan 86400</code> <br>
# das Selektionsende wird auf "aktuelle Zeit - 86400 Sekunden" gesetzt <br>
<code>attr &lt;name&gt; timeOlderThan d:2 h:3 m:2 s:10</code> <br>
@@ -15921,7 +15936,7 @@ sub bdump {
<code>attr &lt;name&gt; timeOlderThan y:1.5</code> <br>
# das Selektionsende wird auf "aktuelle Zeit - 1,5 Jahre gesetzt <br>
<code>attr &lt;name&gt; timeOlderThan d:8 FullDay </code> <br>
# die Startzeit wird auf "aktuelle Zeit - 8 Tage gesetzt, der Selektionszeitraum wird auf Beginn / Ende des jeweiligen Tages erweitert <br>
# das Selektionsende wird auf "aktuelle Zeit - 8 Tage gesetzt, der Selektionszeitraum wird auf Beginn / Ende der beteiligten Tage erweitert <br>
</ul>
<br>