From 1fe0716bc7c8b87739c8b2ab11b47edbb8f74607 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Thu, 11 May 2023 12:29:11 +0000 Subject: [PATCH] 93_DbLog: contrib 5.8.8 git-svn-id: https://svn.fhem.de/fhem/trunk@27552 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/93_DbLog.pm | 104 +++++++++++++++++----------- 1 file changed, 62 insertions(+), 42 deletions(-) diff --git a/fhem/contrib/DS_Starter/93_DbLog.pm b/fhem/contrib/DS_Starter/93_DbLog.pm index 76e96bb3a..223e118a7 100644 --- a/fhem/contrib/DS_Starter/93_DbLog.pm +++ b/fhem/contrib/DS_Starter/93_DbLog.pm @@ -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 # 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: 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 ". "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, ...". @@ -1561,26 +1562,33 @@ sub _DbLog_ParseEvent { # split the event into reading, value and unit # "day-temp: 22.0 (Celsius)" -> "day-temp", "22.0 (Celsius)" - my @parts = split(/: /,$event, 2); - $reading = shift @parts; - - if(@parts == 2) { - $value = $parts[0]; - $unit = $parts[1]; + my @parts = split /: /, $event, 2; + + if(scalar @parts == 2) { + $reading = shift @parts; + my $tail = shift @parts; + @parts = split " ", $tail; + + if (scalar @parts <= 2) { + $value = $parts[0]; + $unit = $parts[1] // q{}; + } + else { + $value = $tail; + $unit = q{}; + } } else { - $value = join(": ", @parts); - $unit = ""; + $value = join ": ", @parts; + $unit = ""; } - # Log3 $name, 2, "DbLog $name - ParseEvent - Event: $event, Reading: $reading, Value: $value, Unit: $unit"; - #default if(!defined($reading)) { $reading = ""; } if(!defined($value)) { $value = ""; } if($value eq "") { # Default Splitting geändert 04.01.20 Forum: #106992 if($event =~ /^.*:\s$/) { # und 21.01.20 Forum: #106769 - $reading = (split(":", $event))[0]; + $reading = (split ":", $event)[0]; } else { $reading = "state"; @@ -1588,11 +1596,8 @@ sub _DbLog_ParseEvent { } } - #globales Abfangen von # changed in Version 4.12.5 - # - temperature + # globales Abfangen von # changed in Version 4.12.5 # - 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 @@ -1615,7 +1620,8 @@ sub _DbLog_ParseEvent { $value =~ s/ \(Celsius\)//; $value =~ s/([-\.\d]+).*/$1/; $unit = "°C"; - } elsif (lc($reading) =~ m/(humidity|vwc)/) { + } + elsif (lc($reading) =~ m/(humidity|vwc)/) { $value =~ s/ \(\%\)//; $unit = "%"; } @@ -1652,7 +1658,7 @@ sub _DbLog_ParseEvent { # MAX elsif(($type eq "MAX")) { $unit = "°C" if(lc($reading) =~ m/temp/); - $unit = "%" if(lc($reading) eq "valveposition"); + $unit = "%" if(lc($reading) eq "valveposition"); } # FS20 @@ -1661,7 +1667,8 @@ sub _DbLog_ParseEvent { $value = $1; $reading = "dim"; $unit = "%"; - } elsif(!defined($value) || $value eq "") { + } + elsif(!defined($value) || $value eq "") { $value = $reading; $reading = "data"; } @@ -1674,35 +1681,43 @@ sub _DbLog_ParseEvent { $reading = $parts[0]; $value = $parts[1]; $unit = ""; - } elsif($reading =~ m(-temp)) { + } + elsif($reading =~ m(-temp)) { $value =~ s/ \(Celsius\)//; $unit= "°C"; - } elsif($reading =~ m(temp-offset)) { + } + elsif($reading =~ m(temp-offset)) { $value =~ s/ \(Celsius\)//; $unit= "°C"; - } elsif($reading =~ m(^actuator[0-9]*)) { + } + elsif($reading =~ m(^actuator[0-9]*)) { if($value eq "lime-protection") { $reading = "actuator-lime-protection"; undef $value; - } elsif($value =~ m(^offset:)) { + } + elsif($value =~ m(^offset:)) { $reading = "actuator-offset"; @parts = split(/: /,$value); $value = $parts[1]; if(defined $value) { $value =~ s/%//; $value = $value*1.; $unit = "%"; } - } elsif($value =~ m(^unknown_)) { + } + elsif($value =~ m(^unknown_)) { @parts = split(/: /,$value); $reading = "actuator-" . $parts[0]; $value = $parts[1]; if(defined $value) { $value =~ s/%//; $value = $value*1.; $unit = "%"; } - } elsif($value =~ m(^synctime)) { + } + elsif($value =~ m(^synctime)) { $reading = "actuator-synctime"; undef $value; - } elsif($value eq "test") { + } + elsif($value eq "test") { $reading = "actuator-test"; undef $value; - } elsif($value eq "pair") { + } + elsif($value eq "pair") { $reading = "actuator-pair"; undef $value; } @@ -1731,13 +1746,16 @@ sub _DbLog_ParseEvent { elsif($type eq "HMS" || $type eq "CUL_WS" || $type eq "OWTHERM") { if($event =~ m(T:.*)) { $reading = "data"; $value= $event; - } elsif($reading eq "temperature") { + } + elsif($reading eq "temperature") { $value =~ s/ \(Celsius\)//; $value =~ s/([-\.\d]+).*/$1/; #OWTHERM $unit = "°C"; - } elsif($reading eq "humidity") { + } + elsif($reading eq "humidity") { $value =~ s/ \(\%\)//; $unit= "%"; - } elsif($reading eq "battery") { + } + elsif($reading eq "battery") { $value =~ s/ok/1/; $value =~ s/replaced/1/; $value =~ s/empty/0/; @@ -1770,9 +1788,11 @@ sub _DbLog_ParseEvent { elsif($type eq "TRX_WEATHER") { if($reading eq "energy_current") { $value =~ s/ W//; - } elsif($reading eq "energy_total") { + } + elsif($reading eq "energy_total") { $value =~ s/ kWh//; - } elsif($reading eq "battery") { + } + elsif($reading eq "battery") { if ($value =~ m/(\d+)\%/) { $value = $1; } @@ -8635,13 +8655,13 @@ sub DbLog_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{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; } else { $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) { # es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen # mit {->VERSION()} im FHEMWEB kann Modulversion abgefragt werden @@ -8829,10 +8849,10 @@ return; @@ -10688,10 +10708,10 @@ attr SMA_Energymeter DbLogValueFn