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

98_weekprofile: change file functions to support configdb

git-svn-id: https://svn.fhem.de/fhem/trunk@21228 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Risiko 2020-02-19 16:30:53 +00:00
parent 5daeddbf3b
commit 8c415d9d28
2 changed files with 38 additions and 30 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.
- change: 98_weekprofile: change file functions to support configdb
- new: 66_EseraShutter: new module that supports the Esera 1-wire shutter - new: 66_EseraShutter: new module that supports the Esera 1-wire shutter
- new: 98_DSBMobile: Module to read DSBMobile substitution plan - new: 98_DSBMobile: Module to read DSBMobile substitution plan
- bugfix: 95_Dashboard: fix Perl warning in Docker environment - bugfix: 95_Dashboard: fix Perl warning in Docker environment

View File

@ -1348,26 +1348,31 @@ sub weekprofile_writeProfilesToFile(@)
my $prfCnt = scalar(@{$hash->{PROFILES}}); my $prfCnt = scalar(@{$hash->{PROFILES}});
return if ($prfCnt <= $start); return if ($prfCnt <= $start);
my $filename = "./log/weekprofile-$me.cfg"; my $defname = "./log/weekprofile-$me.cfg";
$filename = AttrVal($me,"configFile",$filename); my $filename = AttrVal($me,"configFile",$defname);
my $forceFile = undef;
my $ret = open(my $fh, '>', $filename); if ( !$defname eq $filename) {
if (!$ret){ $forceFile = "file";
Log3 $me, 1, "$me(writeProfileToFile): Could not open file '$filename' $!";
return;
} }
print $fh "__version__=".$CONFIG_VERSION."\n"; my @content;
my $idstring = "__version__=$CONFIG_VERSION";
push (@content, $idstring);
Log3 $me, 5, "$me(writeProfileToFile): write profiles to $filename"; Log3 $me, 5, "$me(writeProfileToFile): write profiles to $filename";
my $json = JSON->new->allow_nonref; my $json = JSON->new->allow_nonref;
for (my $i = $start; $i < $prfCnt; $i++) { for (my $i = $start; $i < $prfCnt; $i++) {
print $fh "entry=".$json->encode($hash->{PROFILES}[$i])."\n"; push (@content, "entry=".$json->encode($hash->{PROFILES}[$i]));
} }
close $fh; my $param = { FileName => $filename, ForceType => $forceFile, NoNL=>0 };
my $ret = FileWrite($param,@content);
if ($ret){
Log3 $me, 1, "$me(writeProfileToFile): write profiles to $filename failed $ret";
} else {
DoTrigger($me,"PROFILES_SAVED",1); DoTrigger($me,"PROFILES_SAVED",1);
weekprofile_updateReadings($hash); weekprofile_updateReadings($hash);
} }
}
############################################## ##############################################
sub weekprofile_readProfilesFromFile(@) sub weekprofile_readProfilesFromFile(@)
{ {
@ -1376,18 +1381,21 @@ sub weekprofile_readProfilesFromFile(@)
my $useTopics = AttrVal($me,"useTopics",0); my $useTopics = AttrVal($me,"useTopics",0);
my $filename = "./log/weekprofile-$me.cfg"; my $defname = "./log/weekprofile-$me.cfg";
$filename = AttrVal($me,"configFile",$filename); my $filename = AttrVal($me,"configFile",$defname);
my $forceFile = undef;
unless (-e $filename) { if (!$defname eq $filename) {
Log3 $me, 5, "$me(readProfilesFromFile): file do not exist '$filename'"; $forceFile = "file";
return;
} }
#my $ret = open(my $fh, '<:encoding(UTF-8)', $filename); my ($ret, @content) = FileRead({ FileName => $filename, ForceType => $forceFile});
my $ret = open(my $fh, '<', $filename);
if (!$ret){ if ($ret && !defined($forceFile) && $ret =~ /from database/){
Log3 $me, 1, "$me(readProfilesFromFile): Could not open file '$filename' $!"; Log3 $me, 1, "$me(readProfilesFromFile): $ret, retrying from local filesystem";
($ret, @content) = FileRead({ FileName => $filename, ForceType => "file" });
}
if ($ret) {
Log3 $me, 1, "$me(readProfilesFromFile): $ret";
return; return;
} }
@ -1396,7 +1404,8 @@ sub weekprofile_readProfilesFromFile(@)
my $json = JSON->new->allow_nonref; my $json = JSON->new->allow_nonref;
my $rowCnt = 0; my $rowCnt = 0;
my $version = undef; my $version = undef;
while (my $row = <$fh>) { foreach (@content) {
my $row = $_;
chomp $row; chomp $row;
Log3 $me, 5, "$me(readProfilesFromFile): data row $row"; Log3 $me, 5, "$me(readProfilesFromFile): data row $row";
my @data = split('=',$row); my @data = split('=',$row);
@ -1449,11 +1458,9 @@ sub weekprofile_readProfilesFromFile(@)
$rowCnt++; $rowCnt++;
} else { } else {
Log3 $me, 1, "$me(readProfilesFromFile): Error unknown version $version"; Log3 $me, 1, "$me(readProfilesFromFile): Error unknown version $version";
close $fh;
return; return;
} }
} }
close $fh;
} }
############################################## ##############################################