mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-25 09:55:38 +00:00
93_DbLog.pm: contrib V 5.9.4
git-svn-id: https://svn.fhem.de/fhem/trunk@28320 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
5d5189853f
commit
f3410f95b5
@ -1,5 +1,5 @@
|
|||||||
##############################################################################################################################
|
##############################################################################################################################
|
||||||
# $Id: 93_DbLog.pm 28036 2023-10-09 14:35:59Z DS_Starter $
|
# $Id: 93_DbLog.pm 28085 2023-10-22 14:22:29Z DS_Starter $
|
||||||
##############################################################################################################################
|
##############################################################################################################################
|
||||||
# 93_DbLog.pm
|
# 93_DbLog.pm
|
||||||
# written by Dr. Boris Neubert 2007-12-30
|
# written by Dr. Boris Neubert 2007-12-30
|
||||||
@ -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" => "27.12.2023 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,
|
||||||
@ -8687,13 +8695,13 @@ sub DbLog_setVersionInfo {
|
|||||||
|
|
||||||
if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) { # META-Daten sind vorhanden
|
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}}
|
$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 28036 2023-10-09 14:35:59Z DS_Starter $ im Kopf komplett! vorhanden )
|
if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 93_DbLog.pm 28085 2023-10-22 14:22:29Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||||
$modules{$type}{META}{x_version} =~ s/1\.1\.1/$v/xsg;
|
$modules{$type}{META}{x_version} =~ s/1\.1\.1/$v/xsg;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$modules{$type}{META}{x_version} = $v;
|
$modules{$type}{META}{x_version} = $v;
|
||||||
}
|
}
|
||||||
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbLog.pm 28036 2023-10-09 14:35:59Z DS_Starter $ im Kopf komplett! vorhanden )
|
return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbLog.pm 28085 2023-10-22 14:22:29Z DS_Starter $ im Kopf komplett! vorhanden )
|
||||||
if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) {
|
if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) {
|
||||||
# es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen
|
# es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen
|
||||||
# mit {<Modul>->VERSION()} im FHEMWEB kann Modulversion abgefragt werden
|
# mit {<Modul>->VERSION()} im FHEMWEB kann Modulversion abgefragt werden
|
||||||
@ -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>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user