2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

98_weekprofile: use topic name from reading 'active_topic' if topic name isn't given by get/set

git-svn-id: https://svn.fhem.de/fhem/trunk@18778 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Risiko 2019-03-03 13:58:03 +00:00
parent 22efb2da69
commit 9c04c19085
2 changed files with 26 additions and 15 deletions

View File

@ -1,5 +1,7 @@
# 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.
- changed: 98_weekprofile: use topic name from reading 'active_topic'
if topic name isn't given
- changed: 98_STOCKQUOTES: moved to contrib since not maintained and broken - changed: 98_STOCKQUOTES: moved to contrib since not maintained and broken
due to termination of Yahoo Finance API due to termination of Yahoo Finance API
- feature: 55_DWD_OpenData: - feature: 55_DWD_OpenData:

View File

@ -640,6 +640,8 @@ sub weekprofile_Get($$@)
{ {
my ($hash, $name, $cmd, @params) = @_; my ($hash, $name, $cmd, @params) = @_;
my $me = $hash->{NAME};
my $list = ''; my $list = '';
my $prfCnt = scalar(@{$hash->{PROFILES}}); my $prfCnt = scalar(@{$hash->{PROFILES}});
@ -659,8 +661,7 @@ sub weekprofile_Get($$@)
return 'usage: profile_data <name>' if(@params < 1); return 'usage: profile_data <name>' if(@params < 1);
return "no profile" if ($prfCnt <= 0); return "no profile" if ($prfCnt <= 0);
my ($topic, $name) = weekprofile_splitName($params[0]); my ($topic, $name) = weekprofile_splitName($me, $params[0]);
my ($prf,$idx) = weekprofile_findPRF($hash,$name,$topic,1); my ($prf,$idx) = weekprofile_findPRF($hash,$name,$topic,1);
return "profile $params[0] not found" if (!defined($prf)); return "profile $params[0] not found" if (!defined($prf));
@ -705,7 +706,7 @@ sub weekprofile_Get($$@)
} }
$refs = substr($refs, 0, -1); $refs = substr($refs, 0, -1);
} else { } else {
my ($topic, $name) = weekprofile_splitName($params[0]); my ($topic, $name) = weekprofile_splitName($me, $params[0]);
my ($prf,$idx) = weekprofile_findPRF($hash,$name,$topic,0); my ($prf,$idx) = weekprofile_findPRF($hash,$name,$topic,0);
return "profile $params[0] not found" unless ($prf); return "profile $params[0] not found" unless ($prf);
$refs = '0'; $refs = '0';
@ -745,7 +746,12 @@ sub weekprofile_findPRF($$$$)
{ {
my ($hash, $name, $topic, $followRef) = @_; my ($hash, $name, $topic, $followRef) = @_;
$topic = 'default' if (!$topic); my $me = $hash->{NAME};
if (!$topic) {
$topic = ReadingsVal($me, "active_topic", "default");
Log3 $me, 3, "$me(weekprofile_findPRF): use topic $topic";
}
$followRef = '0' if (!$followRef); $followRef = '0' if (!$followRef);
my $found = undef; my $found = undef;
@ -761,7 +767,7 @@ sub weekprofile_findPRF($$$$)
$idx = -1 if (!defined($found)); $idx = -1 if (!defined($found));
if ($followRef == 1 && defined($found) && defined($found->{REF})) { if ($followRef == 1 && defined($found) && defined($found->{REF})) {
($topic, $name) = weekprofile_splitName($found->{REF}); ($topic, $name) = weekprofile_splitName($me, $found->{REF});
($found,$idx) = weekprofile_findPRF($hash,$name,$topic,0); ($found,$idx) = weekprofile_findPRF($hash,$name,$topic,0);
} }
@ -782,14 +788,17 @@ sub weekprofile_hasREF(@)
return undef; return undef;
} }
############################################## ##############################################
sub weekprofile_splitName($) sub weekprofile_splitName($$)
{ {
my ($in) = @_; my ($me, $in) = @_;
my @parts = split(':',$in); my @parts = split(':',$in);
return ($parts[0],$parts[1]) if (@parts == 2); return ($parts[0],$parts[1]) if (@parts == 2);
return ('default',$in);
my $topic = ReadingsVal($me, "active_topic", "default");
Log3 $me, 5, "$me(weekprofile_splitName): use topic $topic";
return ($topic,$in);
} }
############################################## ##############################################
sub weekprofile_Set($$@) sub weekprofile_Set($$@)
@ -805,7 +814,7 @@ sub weekprofile_Set($$@)
if ($cmd eq 'profile_data') { if ($cmd eq 'profile_data') {
return 'usage: profile_data <name> <json data>' if(@params < 2); return 'usage: profile_data <name> <json data>' if(@params < 2);
my ($topic, $name) = weekprofile_splitName($params[0]); my ($topic, $name) = weekprofile_splitName($me, $params[0]);
return "Error topics not enabled" if (!$useTopics && ($topic ne 'default')); return "Error topics not enabled" if (!$useTopics && ($topic ne 'default'));
@ -847,7 +856,7 @@ sub weekprofile_Set($$@)
if ($cmd eq 'send_to_device') { if ($cmd eq 'send_to_device') {
return 'usage: send_to_device <name> [device(s)]' if(@params < 1); return 'usage: send_to_device <name> [device(s)]' if(@params < 1);
my ($topic, $name) = weekprofile_splitName($params[0]); my ($topic, $name) = weekprofile_splitName($me, $params[0]);
return "Error topics not enabled" if (!$useTopics && ($topic ne 'default')); return "Error topics not enabled" if (!$useTopics && ($topic ne 'default'));
@ -881,8 +890,8 @@ sub weekprofile_Set($$@)
if ($cmd eq 'copy_profile') { if ($cmd eq 'copy_profile') {
return 'usage: copy_profile <source> <target>' if(@params < 2); return 'usage: copy_profile <source> <target>' if(@params < 2);
my ($srcTopic, $srcName) = weekprofile_splitName($params[0]); my ($srcTopic, $srcName) = weekprofile_splitName($me, $params[0]);
my ($destTopic, $destName) = weekprofile_splitName($params[1]); my ($destTopic, $destName) = weekprofile_splitName($me, $params[1]);
return "Error topics not enabled" if (!$useTopics && ( ($srcTopic ne 'default') || ($destTopic ne 'default')) ); return "Error topics not enabled" if (!$useTopics && ( ($srcTopic ne 'default') || ($destTopic ne 'default')) );
@ -915,8 +924,8 @@ sub weekprofile_Set($$@)
if ($cmd eq 'reference_profile') { if ($cmd eq 'reference_profile') {
return 'usage: copy_profile <source> <target>' if(@params < 2); return 'usage: copy_profile <source> <target>' if(@params < 2);
my ($srcTopic, $srcName) = weekprofile_splitName($params[0]); my ($srcTopic, $srcName) = weekprofile_splitName($me, $params[0]);
my ($destTopic, $destName) = weekprofile_splitName($params[1]); my ($destTopic, $destName) = weekprofile_splitName($me, $params[1]);
return "Error topics not enabled" if (!$useTopics && ( ($srcTopic ne 'default') || ($destTopic ne 'default')) ); return "Error topics not enabled" if (!$useTopics && ( ($srcTopic ne 'default') || ($destTopic ne 'default')) );
@ -951,7 +960,7 @@ sub weekprofile_Set($$@)
return 'Error master profile can not removed' if( ($params[0] eq "master") && defined($hash->{MASTERDEV}) ); return 'Error master profile can not removed' if( ($params[0] eq "master") && defined($hash->{MASTERDEV}) );
return 'Error Remove last profile is not allowed' if(scalar(@{$hash->{PROFILES}}) == 1); return 'Error Remove last profile is not allowed' if(scalar(@{$hash->{PROFILES}}) == 1);
my ($topic, $name) = weekprofile_splitName($params[0]); my ($topic, $name) = weekprofile_splitName($me, $params[0]);
return "Error topics not enabled" if (!$useTopics && ($topic ne 'default')); return "Error topics not enabled" if (!$useTopics && ($topic ne 'default'));