2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

93_DbLog: make EVENT writable, Forum:#136389

git-svn-id: https://svn.fhem.de/fhem/trunk@28337 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2024-01-03 14:27:51 +00:00
parent 3419e8c192
commit 8dc31a60ca
2 changed files with 23 additions and 13 deletions

View File

@ -1,5 +1,6 @@
# 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.
- feature: 93_DbLog: make EVENT writable, Forum:#136389
- bugfix: 98_CDCOpenData: Fehler in Monatsformat - bugfix: 98_CDCOpenData: Fehler in Monatsformat
- bugfix: 36_Shelly: devices gen2 in roller mode: metering readings are single - bugfix: 36_Shelly: devices gen2 in roller mode: metering readings are single
- feature: 36_Shelly: new 'set ... reset <counter>' command - feature: 36_Shelly: new 'set ... reset <counter>' command

View File

@ -8,7 +8,7 @@
# modified and maintained by Tobias Faust since 2012-06-26 until 2016 # modified and maintained by Tobias Faust since 2012-06-26 until 2016
# e-mail: tobias dot faust at online dot de # e-mail: tobias dot faust at online dot de
# #
# redesigned and maintained 2016-2023 by DS_Starter # redesigned and maintained 2016-2024 by DS_Starter
# e-mail: heiko dot maaz at t-online dot de # e-mail: heiko dot maaz at t-online dot de
# #
# reduceLog() created by Claudiu Schuster (rapster) adapted by DS_Starter # reduceLog() created by Claudiu Schuster (rapster) adapted by DS_Starter
@ -56,6 +56,7 @@ 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.9.4" => "03.01.2024 make EVENT writable ",
"5.9.3" => "09.10.2023 new attribute colType ", "5.9.3" => "09.10.2023 new attribute colType ",
"5.9.2" => "09.10.2023 edit commandref, Forum: https://forum.fhem.de/index.php?msg=1288840 ", "5.9.2" => "09.10.2023 edit commandref, Forum: https://forum.fhem.de/index.php?msg=1288840 ",
"5.9.1" => "15.08.2023 possible use of alternative tables in _DbLog_plotData Forum:134547, fix warnings in ". "5.9.1" => "15.08.2023 possible use of alternative tables in _DbLog_plotData Forum:134547, fix warnings in ".
@ -1437,7 +1438,7 @@ sub DbLog_Log {
Log3 ($name, 2, "$name - error device \"$dev_name\" specific DbLogValueFn: ".$@); Log3 ($name, 2, "$name - error device \"$dev_name\" specific DbLogValueFn: ".$@);
} }
if($IGNORE) { # aktueller Event wird nicht geloggt wenn $IGNORE=1 gesetzt if ($IGNORE) { # aktueller Event wird nicht geloggt wenn $IGNORE=1 gesetzt
$defs{$dev_name}{Helper}{DBLOG}{$reading}{$name}{TIME} = $lastt if($lastt); # patch Forum:#111423 $defs{$dev_name}{Helper}{DBLOG}{$reading}{$name}{TIME} = $lastt if($lastt); # patch Forum:#111423
$defs{$dev_name}{Helper}{DBLOG}{$reading}{$name}{VALUE} = $lastv if(defined $lastv); $defs{$dev_name}{Helper}{DBLOG}{$reading}{$name}{VALUE} = $lastv if(defined $lastv);
@ -1464,6 +1465,7 @@ sub DbLog_Log {
} }
if($value_fn ne '') { # zentrale valueFn im DbLog-Device abarbeiten if($value_fn ne '') { # zentrale valueFn im DbLog-Device abarbeiten
my $NAME = $name;
my $TIMESTAMP = $timestamp; my $TIMESTAMP = $timestamp;
my $LASTTIMESTAMP = $lastt // 0; # patch Forum:#111423 my $LASTTIMESTAMP = $lastt // 0; # patch Forum:#111423
my $DEVICE = $dev_name; my $DEVICE = $dev_name;
@ -1477,11 +1479,11 @@ sub DbLog_Log {
my $CN = " "; my $CN = " ";
eval $value_fn; eval $value_fn;
if($@) { if ($@) {
Log3 ($name, 2, "$name - error valueFn: ".$@); Log3 ($name, 2, "$name - error valueFn: ".$@);
} }
if($IGNORE) { # aktueller Event wird nicht geloggt wenn $IGNORE=1 gesetzt if ($IGNORE) { # aktueller Event wird nicht geloggt wenn $IGNORE=1 gesetzt
$defs{$dev_name}{Helper}{DBLOG}{$reading}{$name}{TIME} = $lastt if($lastt); # patch Forum:#111423 $defs{$dev_name}{Helper}{DBLOG}{$reading}{$name}{TIME} = $lastt if($lastt); # patch Forum:#111423
$defs{$dev_name}{Helper}{DBLOG}{$reading}{$name}{VALUE} = $lastv if(defined $lastv); $defs{$dev_name}{Helper}{DBLOG}{$reading}{$name}{VALUE} = $lastv if(defined $lastv);
@ -1507,6 +1509,7 @@ sub DbLog_Log {
$reading = $READING if($READING ne ''); $reading = $READING if($READING ne '');
$value = $VALUE if(defined $VALUE); $value = $VALUE if(defined $VALUE);
$unit = $UNIT if(defined $UNIT); $unit = $UNIT if(defined $UNIT);
$event = $EVENT if(defined $EVENT);
} }
# Daten auf maximale Länge beschneiden # Daten auf maximale Länge beschneiden
@ -8075,6 +8078,7 @@ sub DbLog_AddLog {
my $lastt = $defs{$dev_name}{Helper}{DBLOG}{$dev_reading}{$name}{TIME}; # patch Forum:#111423 my $lastt = $defs{$dev_name}{Helper}{DBLOG}{$dev_reading}{$name}{TIME}; # patch Forum:#111423
my $lastv = $defs{$dev_name}{Helper}{DBLOG}{$dev_reading}{$name}{VALUE}; my $lastv = $defs{$dev_name}{Helper}{DBLOG}{$dev_reading}{$name}{VALUE};
my $NAME = $name;
my $TIMESTAMP = $ts; my $TIMESTAMP = $ts;
my $LASTTIMESTAMP = $lastt // 0; # patch Forum:#111423 my $LASTTIMESTAMP = $lastt // 0; # patch Forum:#111423
my $DEVICE = $dev_name; my $DEVICE = $dev_name;
@ -8112,6 +8116,7 @@ sub DbLog_AddLog {
$dev_reading = $READING if($READING ne ''); $dev_reading = $READING if($READING ne '');
$read_val = $VALUE if(defined $VALUE); $read_val = $VALUE if(defined $VALUE);
$ut = $UNIT if(defined $UNIT); $ut = $UNIT if(defined $UNIT);
$event = $EVENT if(defined $EVENT);
} }
# Daten auf maximale Länge beschneiden # Daten auf maximale Länge beschneiden
@ -8187,6 +8192,7 @@ sub DbLog_addCacheLine {
$lastv = $defs{$i_dev}{Helper}{DBLOG}{$i_reading}{$name}{VALUE}; $lastv = $defs{$i_dev}{Helper}{DBLOG}{$i_reading}{$name}{VALUE};
} }
my $NAME = $name;
my $TIMESTAMP = $i_timestamp; my $TIMESTAMP = $i_timestamp;
my $LASTTIMESTAMP = $lastt // 0; # patch Forum:#111423 my $LASTTIMESTAMP = $lastt // 0; # patch Forum:#111423
my $DEVICE = $i_dev; my $DEVICE = $i_dev;
@ -8226,6 +8232,7 @@ sub DbLog_addCacheLine {
$i_reading = $READING if($READING ne ''); $i_reading = $READING if($READING ne '');
$i_val = $VALUE if(defined $VALUE); $i_val = $VALUE if(defined $VALUE);
$i_unit = $UNIT if(defined $UNIT); $i_unit = $UNIT if(defined $UNIT);
$i_evt = $EVENT if(defined $EVENT);
} }
no warnings 'uninitialized'; # Daten auf maximale Länge beschneiden no warnings 'uninitialized'; # Daten auf maximale Länge beschneiden
@ -8478,6 +8485,7 @@ sub DbLog_checkSyntaxValueFn {
} }
my %specials= ( my %specials= (
"%NAME" => $name,
"%TIMESTAMP" => $name, "%TIMESTAMP" => $name,
"%LASTTIMESTAMP" => $name, "%LASTTIMESTAMP" => $name,
"%DEVICE" => $name, "%DEVICE" => $name,
@ -10533,9 +10541,9 @@ attr SMA_Energymeter DbLogValueFn
This attribute is set in the <b>DbLog device</b> and allows to modify the values before logging This attribute is set in the <b>DbLog device</b> and allows to modify the values before logging
or exclude the record from logging. <br><br> or exclude the record from logging. <br><br>
It is possible to access the variables $TIMESTAMP, $DEVICE (source device), $DEVICETYPE, $READING, $VALUE (reading value) and It is possible to access the variables $TIMESTAMP, $DEVICE (source device), $DEVICETYPE, $EVENT, $READING,
$UNIT (unit of reading value) can be accessed and modified before logging to the database. <br> $VALUE (reading value) and $UNIT (unit of reading value) can be accessed and modified before logging to the database. <br>
Read access exists to $EVENT, $LASTTIMESTAMP and $LASTVALUE. <br><br> Read only access exists to $LASTTIMESTAMP, $LASTVALUE and $NAME (Name of the DbLog Device). <br><br>
The variables $LASTTIMESTAMP and $LASTVALUE contain time and value of the last logged record of The variables $LASTTIMESTAMP and $LASTVALUE contain time and value of the last logged record of
$DEVICE / $READING. <br> $DEVICE / $READING. <br>
@ -12065,8 +12073,8 @@ attr SMA_Energymeter DbLogValueFn
oder den Ausschluß des Datensatzes vom Logging. <br><br> oder den Ausschluß des Datensatzes vom Logging. <br><br>
Es kann auf die Variablen $TIMESTAMP, $READING, $VALUE (Wert des Readings) und $UNIT (Einheit des Readingswert) Es kann auf die Variablen $TIMESTAMP, $READING, $VALUE (Wert des Readings) und $UNIT (Einheit des Readingswert)
zugegriffen werden und diese vor dem Loggen in die Datenbank verändern. <br> zugegriffen und diese vor dem Loggen in die Datenbank verändert werden. <br>
Lesezugriff besteht auf $DEVICE (den Namen des Quellengeräts), $EVENT, $LASTTIMESTAMP und $LASTVALUE. <br><br> Nur Lesezugriff besteht auf $DEVICE (den Namen des Quellengeräts), $EVENT, $LASTTIMESTAMP und $LASTVALUE. <br><br>
Die Variablen $LASTTIMESTAMP und $LASTVALUE enthalten Zeit und Wert des zuletzt protokollierten Datensatzes von Die Variablen $LASTTIMESTAMP und $LASTVALUE enthalten Zeit und Wert des zuletzt protokollierten Datensatzes von
$DEVICE / $READING. <br> $DEVICE / $READING. <br>
@ -12448,9 +12456,10 @@ attr SMA_Energymeter DbLogValueFn
Dieses Attribut wird im <b>DbLog-Device</b> gesetzt und erlaubt die Veränderung der Werte vor dem Logging Dieses Attribut wird im <b>DbLog-Device</b> gesetzt und erlaubt die Veränderung der Werte vor dem Logging
oder den Ausschluß des Datensatzes vom Logging. <br><br> oder den Ausschluß des Datensatzes vom Logging. <br><br>
Es kann auf die Variablen $TIMESTAMP, $DEVICE (Quellendevice), $DEVICETYPE, $READING, $VALUE (Wert des Readings) und Es kann auf die Variablen $TIMESTAMP, $DEVICE (Quellendevice), $DEVICETYPE, $EVENT, $READING, $VALUE
$UNIT (Einheit des Readingswert) zugegriffen werden und diese vor dem Loggen in die Datenbank verändern. <br> (Wert des Readings) und $UNIT (Einheit des Readingswert) zugegriffen und diese vor dem Loggen in die Datenbank
Lesezugriff besteht auf $EVENT, $LASTTIMESTAMP und $LASTVALUE. <br><br> verändert werden. <br>
Nur Lesezugriff besteht auf $LASTTIMESTAMP, $LASTVALUE und $NAME (Name des DbLog Devices). <br><br>
Die Variablen $LASTTIMESTAMP und $LASTVALUE enthalten Zeit und Wert des zuletzt protokollierten Datensatzes von Die Variablen $LASTTIMESTAMP und $LASTVALUE enthalten Zeit und Wert des zuletzt protokollierten Datensatzes von
$DEVICE / $READING. <br> $DEVICE / $READING. <br>