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:
parent
5daeddbf3b
commit
8c415d9d28
@ -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
|
||||||
|
@ -610,7 +610,7 @@ sub weekprofile_assignDev($)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!defined($prf)) {
|
if (!defined($prf)) {
|
||||||
Log3 $me, 5, "create default profile";
|
Log3 $me, 5, "create default profile";
|
||||||
my $prfDev = weekprofile_createDefaultProfile($hash);
|
my $prfDev = weekprofile_createDefaultProfile($hash);
|
||||||
if(defined($prfDev)) {
|
if(defined($prfDev)) {
|
||||||
$prf = {};
|
$prf = {};
|
||||||
@ -1348,25 +1348,30 @@ 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]));
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
weekprofile_updateReadings($hash);
|
||||||
}
|
}
|
||||||
close $fh;
|
|
||||||
DoTrigger($me,"PROFILES_SAVED",1);
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
##############################################
|
##############################################
|
||||||
|
Loading…
x
Reference in New Issue
Block a user