From da26e86420dceaae4823a133e4ff904e5bb414d0 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Fri, 5 Jan 2024 19:46:43 +0000 Subject: [PATCH] 93_DbLog: minor change of configCheck git-svn-id: https://svn.fhem.de/fhem/trunk@28345 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/93_DbLog.pm | 89 +++++++++++++++++++++---------------------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index e74fb5878..59c734d0c 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # 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. + - change: 93_DbLog: minor change of configCheck - feature: 76_SolarForecast: externally caused switching of consumers is detected - feature: 10_IT: bei AttrList nicht benötigte Einträge unit und group entf diff --git a/fhem/FHEM/93_DbLog.pm b/fhem/FHEM/93_DbLog.pm index 9df953d24..410a0c1b3 100644 --- a/fhem/FHEM/93_DbLog.pm +++ b/fhem/FHEM/93_DbLog.pm @@ -56,6 +56,7 @@ no if $] >= 5.017011, warnings => 'experimental::smartmatch'; # Version History intern by DS_Starter: my %DbLog_vNotesIntern = ( + "5.9.5" => "04.01.2024 change DbLog_configcheck to select only column width independent from column characteristic ", "5.9.4" => "03.01.2024 make EVENT writable ", "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 ", @@ -7400,32 +7401,31 @@ sub DbLog_configcheck { } if ($dbmodel =~ /SQLITE/) { - my @dev; - ($err, @dev) = _DbLog_prepExecQueryOnly ($name, $dbh, "SELECT sql FROM sqlite_master WHERE name = '$history'"); + my @sql; + ($err, @sql) = _DbLog_prepExecQueryOnly ($name, $dbh, "SELECT sql FROM sqlite_master WHERE name = '$history'"); + my $line = $sql[0] // "no result"; - $cdat_dev = $dev[0] // "no result"; - $cdat_typ = $cdat_evt = $cdat_rdg = $cdat_val = $cdat_unt = $cdat_dev; - ($cdat_dev) = $cdat_dev =~ /DEVICE.varchar\(([\d]+)\)/x; - ($cdat_typ) = $cdat_typ =~ /TYPE.varchar\(([\d]+)\)/x; - ($cdat_evt) = $cdat_evt =~ /EVENT.varchar\(([\d]+)\)/x; - ($cdat_rdg) = $cdat_rdg =~ /READING.varchar\(([\d]+)\)/x; - ($cdat_val) = $cdat_val =~ /VALUE.varchar\(([\d]+)\)/x; - ($cdat_unt) = $cdat_unt =~ /UNIT.varchar\(([\d]+)\)/x; + ($cdat_dev) = (split "DEVICE", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_typ) = (split "TYPE", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_evt) = (split "EVENT", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_rdg) = (split "READING", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_val) = (split "VALUE", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_unt) = (split "UNIT", $line)[1] =~ /\(([\d]+?)\)/x; } if ($dbmodel !~ /SQLITE/) { - $cdat_dev = @sr_dev ? ($sr_dev[1]) : "no result"; - $cdat_dev =~ tr/varchar\(|\)//d if($cdat_dev ne "no result"); - $cdat_typ = @sr_typ ? ($sr_typ[1]) : "no result"; - $cdat_typ =~ tr/varchar\(|\)//d if($cdat_typ ne "no result"); - $cdat_evt = @sr_evt ? ($sr_evt[1]) : "no result"; - $cdat_evt =~ tr/varchar\(|\)//d if($cdat_evt ne "no result"); - $cdat_rdg = @sr_rdg ? ($sr_rdg[1]) : "no result"; - $cdat_rdg =~ tr/varchar\(|\)//d if($cdat_rdg ne "no result"); - $cdat_val = @sr_val ? ($sr_val[1]) : "no result"; - $cdat_val =~ tr/varchar\(|\)//d if($cdat_val ne "no result"); - $cdat_unt = @sr_unt ? ($sr_unt[1]) : "no result"; - $cdat_unt =~ tr/varchar\(|\)//d if($cdat_unt ne "no result"); + $cdat_dev = @sr_dev ? $sr_dev[1] : "no result"; + ($cdat_dev) = $cdat_dev =~ /([\d]+)/x; + $cdat_typ = @sr_typ ? $sr_typ[1] : "no result"; + ($cdat_typ) = $cdat_typ =~ /([\d]+)/x; + $cdat_evt = @sr_evt ? $sr_evt[1] : "no result"; + ($cdat_evt) = $cdat_evt =~ /([\d]+)/x; + $cdat_rdg = @sr_rdg ? $sr_rdg[1] : "no result"; + ($cdat_rdg) = $cdat_rdg =~ /([\d]+)/x; + $cdat_val = @sr_val ? $sr_val[1] : "no result"; + ($cdat_val) = $cdat_val =~ /([\d]+)/x; + $cdat_unt = @sr_unt ? $sr_unt[1] : "no result"; + ($cdat_unt) = $cdat_unt =~ /([\d]+)/x; } $cmod_dev = $hash->{HELPER}{DEVICECOL}; @@ -7502,32 +7502,31 @@ sub DbLog_configcheck { } if ($dbmodel =~ /SQLITE/) { - my @dev; - ($err, @dev) = _DbLog_prepExecQueryOnly ($name, $dbh, "SELECT sql FROM sqlite_master WHERE name = '$current'"); + my @sql; + ($err, @sql) = _DbLog_prepExecQueryOnly ($name, $dbh, "SELECT sql FROM sqlite_master WHERE name = '$current'"); + my $line = $sql[0] // "no result"; - $cdat_dev = $dev[0] // "no result"; - $cdat_typ = $cdat_evt = $cdat_rdg = $cdat_val = $cdat_unt = $cdat_dev; - ($cdat_dev) = $cdat_dev =~ /DEVICE.varchar\(([\d]+)\)/x; - ($cdat_typ) = $cdat_typ =~ /TYPE.varchar\(([\d]+)\)/x; - ($cdat_evt) = $cdat_evt =~ /EVENT.varchar\(([\d]+)\)/x; - ($cdat_rdg) = $cdat_rdg =~ /READING.varchar\(([\d]+)\)/x; - ($cdat_val) = $cdat_val =~ /VALUE.varchar\(([\d]+)\)/x; - ($cdat_unt) = $cdat_unt =~ /UNIT.varchar\(([\d]+)\)/x; + ($cdat_dev) = (split "DEVICE", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_typ) = (split "TYPE", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_evt) = (split "EVENT", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_rdg) = (split "READING", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_val) = (split "VALUE", $line)[1] =~ /\(([\d]+?)\)/x; + ($cdat_unt) = (split "UNIT", $line)[1] =~ /\(([\d]+?)\)/x; } - if ($dbmodel !~ /SQLITE/) { - $cdat_dev = @sr_dev ? ($sr_dev[1]) : "no result"; - $cdat_dev =~ tr/varchar\(|\)//d if($cdat_dev ne "no result"); - $cdat_typ = @sr_typ ? ($sr_typ[1]) : "no result"; - $cdat_typ =~ tr/varchar\(|\)//d if($cdat_typ ne "no result"); - $cdat_evt = @sr_evt ? ($sr_evt[1]) : "no result"; - $cdat_evt =~ tr/varchar\(|\)//d if($cdat_evt ne "no result"); - $cdat_rdg = @sr_rdg ? ($sr_rdg[1]) : "no result"; - $cdat_rdg =~ tr/varchar\(|\)//d if($cdat_rdg ne "no result"); - $cdat_val = @sr_val ? ($sr_val[1]) : "no result"; - $cdat_val =~ tr/varchar\(|\)//d if($cdat_val ne "no result"); - $cdat_unt = @sr_unt ? ($sr_unt[1]) : "no result"; - $cdat_unt =~ tr/varchar\(|\)//d if($cdat_unt ne "no result"); + if ($dbmodel !~ /SQLITE/) { + $cdat_dev = @sr_dev ? $sr_dev[1] : "no result"; + ($cdat_dev) = $cdat_dev =~ /([\d]+)/x; + $cdat_typ = @sr_typ ? $sr_typ[1] : "no result"; + ($cdat_typ) = $cdat_typ =~ /([\d]+)/x; + $cdat_evt = @sr_evt ? $sr_evt[1] : "no result"; + ($cdat_evt) = $cdat_evt =~ /([\d]+)/x; + $cdat_rdg = @sr_rdg ? $sr_rdg[1] : "no result"; + ($cdat_rdg) = $cdat_rdg =~ /([\d]+)/x; + $cdat_val = @sr_val ? $sr_val[1] : "no result"; + ($cdat_val) = $cdat_val =~ /([\d]+)/x; + $cdat_unt = @sr_unt ? $sr_unt[1] : "no result"; + ($cdat_unt) = $cdat_unt =~ /([\d]+)/x; } $cmod_dev = $hash->{HELPER}{DEVICECOL};