10_MQTT2_DEVICE.pm: allow setList FHEMWEB options (Forum #90145)

git-svn-id: https://svn.fhem.de/fhem/trunk@17472 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2018-10-07 10:31:28 +00:00
parent 2de8820f11
commit 57405b4a9d
2 changed files with 24 additions and 14 deletions

View File

@@ -153,12 +153,29 @@ MQTT2_DEVICE_Parse($$)
return keys %fnd;
}
# compatibility: the first version was implemented as MQTT2_JSON and published.
sub
MQTT2_JSON($;$)
{
return json2nameValue($_[0], $_[1]);
}
sub
MQTT2_getCmdHash($)
{
my ($list) = @_;
my (%h, @cmd);
map {
my ($k,$v) = split(" ",$_,2);
push @cmd, $k;
$k =~ s/:.*//; # potential arguments
$h{$k} = $v;
}
grep /./,
split("\n", $list);
return (\%h, join(" ",@cmd));
}
#############################
sub
@@ -167,15 +184,11 @@ MQTT2_DEVICE_Get($@)
my ($hash, @a) = @_;
return "Not enough arguments for get" if(!defined($a[1]));
my %gets;
map { my ($k,$v) = split(" ",$_,2); $gets{$k} = $v; }
grep /./,
split("\n", AttrVal($hash->{NAME}, "getList", ""));
return "Unknown argument $a[1], choose one of ".join(" ",sort keys %gets)
if(!$gets{$a[1]});
my ($gets,$cmdList) = MQTT2_getCmdHash(AttrVal($hash->{NAME}, "getList", ""));
return "Unknown argument $a[1], choose one of $cmdList" if(!$gets->{$a[1]});
return undef if(IsDisabled($hash->{NAME}));
my ($getReading, $cmd) = split(" ",$gets{$a[1]},2);
my ($getReading, $cmd) = split(" ",$gets->{$a[1]},2);
if($hash->{CL}) {
my $tHash = { hash=>$hash, CL=>$hash->{CL}, reading=>$getReading };
$hash->{asyncGet} = $tHash;
@@ -207,13 +220,10 @@ MQTT2_DEVICE_Set($@)
my ($hash, @a) = @_;
return "Not enough arguments for set" if(!defined($a[1]));
my %sets;
map { my ($k,$v) = split(" ",$_,2); $sets{$k} = $v; }
grep /./,
split("\n", AttrVal($hash->{NAME}, "setList", ""));
my ($sets,$cmdList) = MQTT2_getCmdHash(AttrVal($hash->{NAME}, "setList", ""));
my $cmdName = $a[1];
my $cmd = $sets{$cmdName};
return SetExtensions($hash, join(" ", sort keys %sets), @a) if(!$cmd);
my $cmd = $sets->{$cmdName};
return SetExtensions($hash, $cmdList, @a) if(!$cmd);
return undef if(IsDisabled($hash->{NAME}));
shift @a;

View File

@@ -201,7 +201,7 @@ allowed_Authenticate($$$$)
return ($pw eq $param) ? 1 : 2;
} else {
$param =~ m/^basicAuth:(.*)/;
$param =~ m/^basicAuth:(.*)/ if($param);
return allowed_CheckBasicAuth($me, $cl, $1,
AttrVal($aName,"basicAuth",undef), $param);