2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-01 00:19:00 +00:00

93_DbLog: contrib 5.8.8

git-svn-id: https://svn.fhem.de/fhem/trunk@27552 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2023-05-11 12:29:11 +00:00
parent dd3ec1fbf1
commit 1fe0716bc7

View File

@ -1,5 +1,5 @@
############################################################################################################################################ ############################################################################################################################################
# $Id: 93_DbLog.pm 27379 2023-04-01 07:16:52Z DS_Starter $ # $Id: 93_DbLog.pm 27504 2023-05-11 19:36: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
@ -38,6 +38,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.8.8" => "11.05.2023 ",
"5.8.7" => "01.05.2023 new Events FRAME_INITIALIZED, SUBPROC_INITIALIZED, SUBPROC_DISCONNECTED, SUBPROC_STOPPED ". "5.8.7" => "01.05.2023 new Events FRAME_INITIALIZED, SUBPROC_INITIALIZED, SUBPROC_DISCONNECTED, SUBPROC_STOPPED ".
"Forum: https://forum.fhem.de/index.php?topic=133403.0, minor fixes ", "Forum: https://forum.fhem.de/index.php?topic=133403.0, minor fixes ",
"5.8.6" => "25.03.2023 change _DbLog_plotData (intx), Plot Editor: include functions delta-h, delta-h, ...". "5.8.6" => "25.03.2023 change _DbLog_plotData (intx), Plot Editor: include functions delta-h, delta-h, ...".
@ -1561,26 +1562,33 @@ sub _DbLog_ParseEvent {
# split the event into reading, value and unit # split the event into reading, value and unit
# "day-temp: 22.0 (Celsius)" -> "day-temp", "22.0 (Celsius)" # "day-temp: 22.0 (Celsius)" -> "day-temp", "22.0 (Celsius)"
my @parts = split(/: /,$event, 2); my @parts = split /: /, $event, 2;
$reading = shift @parts;
if(@parts == 2) { if(scalar @parts == 2) {
$reading = shift @parts;
my $tail = shift @parts;
@parts = split " ", $tail;
if (scalar @parts <= 2) {
$value = $parts[0]; $value = $parts[0];
$unit = $parts[1]; $unit = $parts[1] // q{};
} }
else { else {
$value = join(": ", @parts); $value = $tail;
$unit = q{};
}
}
else {
$value = join ": ", @parts;
$unit = ""; $unit = "";
} }
# Log3 $name, 2, "DbLog $name - ParseEvent - Event: $event, Reading: $reading, Value: $value, Unit: $unit";
#default #default
if(!defined($reading)) { $reading = ""; } if(!defined($reading)) { $reading = ""; }
if(!defined($value)) { $value = ""; } if(!defined($value)) { $value = ""; }
if($value eq "") { # Default Splitting geändert 04.01.20 Forum: #106992 if($value eq "") { # Default Splitting geändert 04.01.20 Forum: #106992
if($event =~ /^.*:\s$/) { # und 21.01.20 Forum: #106769 if($event =~ /^.*:\s$/) { # und 21.01.20 Forum: #106769
$reading = (split(":", $event))[0]; $reading = (split ":", $event)[0];
} }
else { else {
$reading = "state"; $reading = "state";
@ -1588,11 +1596,8 @@ sub _DbLog_ParseEvent {
} }
} }
#globales Abfangen von # changed in Version 4.12.5 # globales Abfangen von # changed in Version 4.12.5
# - temperature
# - humidity # - humidity
#if ($reading =~ m(^temperature)) { $unit = "°C"; } # wenn reading mit temperature beginnt
#elsif($reading =~ m(^humidity)) { $unit = "%"; } # wenn reading mit humidity beginnt
if($reading =~ m(^humidity)) { $unit = "%"; } # wenn reading mit humidity beginnt if($reading =~ m(^humidity)) { $unit = "%"; } # wenn reading mit humidity beginnt
@ -1615,7 +1620,8 @@ sub _DbLog_ParseEvent {
$value =~ s/ \(Celsius\)//; $value =~ s/ \(Celsius\)//;
$value =~ s/([-\.\d]+).*/$1/; $value =~ s/([-\.\d]+).*/$1/;
$unit = "°C"; $unit = "°C";
} elsif (lc($reading) =~ m/(humidity|vwc)/) { }
elsif (lc($reading) =~ m/(humidity|vwc)/) {
$value =~ s/ \(\%\)//; $value =~ s/ \(\%\)//;
$unit = "%"; $unit = "%";
} }
@ -1661,7 +1667,8 @@ sub _DbLog_ParseEvent {
$value = $1; $value = $1;
$reading = "dim"; $reading = "dim";
$unit = "%"; $unit = "%";
} elsif(!defined($value) || $value eq "") { }
elsif(!defined($value) || $value eq "") {
$value = $reading; $value = $reading;
$reading = "data"; $reading = "data";
} }
@ -1674,35 +1681,43 @@ sub _DbLog_ParseEvent {
$reading = $parts[0]; $reading = $parts[0];
$value = $parts[1]; $value = $parts[1];
$unit = ""; $unit = "";
} elsif($reading =~ m(-temp)) { }
elsif($reading =~ m(-temp)) {
$value =~ s/ \(Celsius\)//; $unit= "°C"; $value =~ s/ \(Celsius\)//; $unit= "°C";
} elsif($reading =~ m(temp-offset)) { }
elsif($reading =~ m(temp-offset)) {
$value =~ s/ \(Celsius\)//; $unit= "°C"; $value =~ s/ \(Celsius\)//; $unit= "°C";
} elsif($reading =~ m(^actuator[0-9]*)) { }
elsif($reading =~ m(^actuator[0-9]*)) {
if($value eq "lime-protection") { if($value eq "lime-protection") {
$reading = "actuator-lime-protection"; $reading = "actuator-lime-protection";
undef $value; undef $value;
} elsif($value =~ m(^offset:)) { }
elsif($value =~ m(^offset:)) {
$reading = "actuator-offset"; $reading = "actuator-offset";
@parts = split(/: /,$value); @parts = split(/: /,$value);
$value = $parts[1]; $value = $parts[1];
if(defined $value) { if(defined $value) {
$value =~ s/%//; $value = $value*1.; $unit = "%"; $value =~ s/%//; $value = $value*1.; $unit = "%";
} }
} elsif($value =~ m(^unknown_)) { }
elsif($value =~ m(^unknown_)) {
@parts = split(/: /,$value); @parts = split(/: /,$value);
$reading = "actuator-" . $parts[0]; $reading = "actuator-" . $parts[0];
$value = $parts[1]; $value = $parts[1];
if(defined $value) { if(defined $value) {
$value =~ s/%//; $value = $value*1.; $unit = "%"; $value =~ s/%//; $value = $value*1.; $unit = "%";
} }
} elsif($value =~ m(^synctime)) { }
elsif($value =~ m(^synctime)) {
$reading = "actuator-synctime"; $reading = "actuator-synctime";
undef $value; undef $value;
} elsif($value eq "test") { }
elsif($value eq "test") {
$reading = "actuator-test"; $reading = "actuator-test";
undef $value; undef $value;
} elsif($value eq "pair") { }
elsif($value eq "pair") {
$reading = "actuator-pair"; $reading = "actuator-pair";
undef $value; undef $value;
} }
@ -1731,13 +1746,16 @@ sub _DbLog_ParseEvent {
elsif($type eq "HMS" || $type eq "CUL_WS" || $type eq "OWTHERM") { elsif($type eq "HMS" || $type eq "CUL_WS" || $type eq "OWTHERM") {
if($event =~ m(T:.*)) { if($event =~ m(T:.*)) {
$reading = "data"; $value= $event; $reading = "data"; $value= $event;
} elsif($reading eq "temperature") { }
elsif($reading eq "temperature") {
$value =~ s/ \(Celsius\)//; $value =~ s/ \(Celsius\)//;
$value =~ s/([-\.\d]+).*/$1/; #OWTHERM $value =~ s/([-\.\d]+).*/$1/; #OWTHERM
$unit = "°C"; $unit = "°C";
} elsif($reading eq "humidity") { }
elsif($reading eq "humidity") {
$value =~ s/ \(\%\)//; $unit= "%"; $value =~ s/ \(\%\)//; $unit= "%";
} elsif($reading eq "battery") { }
elsif($reading eq "battery") {
$value =~ s/ok/1/; $value =~ s/ok/1/;
$value =~ s/replaced/1/; $value =~ s/replaced/1/;
$value =~ s/empty/0/; $value =~ s/empty/0/;
@ -1770,9 +1788,11 @@ sub _DbLog_ParseEvent {
elsif($type eq "TRX_WEATHER") { elsif($type eq "TRX_WEATHER") {
if($reading eq "energy_current") { if($reading eq "energy_current") {
$value =~ s/ W//; $value =~ s/ W//;
} elsif($reading eq "energy_total") { }
elsif($reading eq "energy_total") {
$value =~ s/ kWh//; $value =~ s/ kWh//;
} elsif($reading eq "battery") { }
elsif($reading eq "battery") {
if ($value =~ m/(\d+)\%/) { if ($value =~ m/(\d+)\%/) {
$value = $1; $value = $1;
} }
@ -8635,13 +8655,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 27379 2023-04-01 07:16:52Z DS_Starter $ im Kopf komplett! vorhanden ) if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id: 93_DbLog.pm 27504 2023-05-01 19:36: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 27379 2023-04-01 07:16:52Z DS_Starter $ im Kopf komplett! vorhanden ) return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id: 93_DbLog.pm 27504 2023-05-01 19:36: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
@ -8830,7 +8850,7 @@ return;
<table> <table>
<colgroup> <col width=20%> <col width=80%> </colgroup> <colgroup> <col width=20%> <col width=80%> </colgroup>
<tr><td> FRAME_INITIALIZED </td><td>- The basic framework is initialised. Blocking (Get) commands can be executed. </td></tr> <tr><td> FRAME_INITIALIZED </td><td>- The basic framework is initialised. Blocking (Get) commands can be executed. </td></tr>
<tr><td> SUBPROC_INITIALIZED </td><td>- The SupProcess is ready for use. Non-blocking (set) commands can be executed. </td></tr> <tr><td> SUBPROC_INITIALIZED </td><td>- The SupProcess is ready for use. Non-blocking (set) commands and Data logging can be executed. </td></tr>
<tr><td> SUBPROC_DISCONNECTED </td><td>- The SupProcess was separated from the DB. </td></tr> <tr><td> SUBPROC_DISCONNECTED </td><td>- The SupProcess was separated from the DB. </td></tr>
<tr><td> SUBPROC_STOPPED </td><td>- The SupProcess has been stopped. </td></tr> <tr><td> SUBPROC_STOPPED </td><td>- The SupProcess has been stopped. </td></tr>
</table> </table>
@ -10689,7 +10709,7 @@ attr SMA_Energymeter DbLogValueFn
<table> <table>
<colgroup> <col width=20%> <col width=80%> </colgroup> <colgroup> <col width=20%> <col width=80%> </colgroup>
<tr><td> FRAME_INITIALIZED </td><td>- Das grundlegende Rahmenwerk ist initialisiert. Blockierend arbeitende (Get)-Kommandos können ausgeführt werden. </td></tr> <tr><td> FRAME_INITIALIZED </td><td>- Das grundlegende Rahmenwerk ist initialisiert. Blockierend arbeitende (Get)-Kommandos können ausgeführt werden. </td></tr>
<tr><td> SUBPROC_INITIALIZED </td><td>- Der SupProcess ist einsatzbereit. Nichtblockierend arbeitende (Set)-Kommandos können ausgeführt werden. </td></tr> <tr><td> SUBPROC_INITIALIZED </td><td>- Der SupProcess ist einsatzbereit. Nichtblockierend arbeitende (Set)-Kommandos und Daten Logging können ausgeführt werden. </td></tr>
<tr><td> SUBPROC_DISCONNECTED </td><td>- Der SupProcess wurde von der DB getrennt. </td></tr> <tr><td> SUBPROC_DISCONNECTED </td><td>- Der SupProcess wurde von der DB getrennt. </td></tr>
<tr><td> SUBPROC_STOPPED </td><td>- Der SupProcess wurde gestoppt. </td></tr> <tr><td> SUBPROC_STOPPED </td><td>- Der SupProcess wurde gestoppt. </td></tr>
</table> </table>