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

SetExtension.pm: Fix(?) eventMap handling (Forum #84561)

git-svn-id: https://svn.fhem.de/fhem/trunk@16211 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2018-02-18 11:59:09 +00:00
parent c1f4aa023b
commit e2c1bedb44
2 changed files with 14 additions and 14 deletions

View File

@ -60,19 +60,18 @@ SetExtensions($$@)
my $hasOn = ($list =~ m/(^| )on\b/);
my $hasOff = ($list =~ m/(^| )off\b/);
my $value = Value($name);
my $em = AttrVal($name, "eventMap", undef);
if($em) {
if(!$hasOn || !$hasOff) {
$hasOn = ($em =~ m/:on\b/) if(!$hasOn);
$hasOff = ($em =~ m/:off\b/) if(!$hasOff);
if((!$hasOn || !$hasOff) && AttrVal($name, "eventMap", undef)) {
if(!$hasOn) {
my (undef,$value) = ReplaceEventMap($name, [$name, "on"], 0);
$hasOn = ($value ne "on");
}
# Following is fix for P#1: /B0:on/on-for-timer 300:5Min/
# $cmd = ReplaceEventMap($name, $cmd, 1) if($cmd ne "?");
# Has problem with P#2 (Forum #28855): /on-for-timer 300:5Min/on:Ein/
# Workaround for P#1 /on-for-timer 300:5Min/on-for-timer:on-for-timer/B0:on/
(undef,$value) = ReplaceEventMap($name, [$name, $value], 0) if($cmd ne "?");
if(!$hasOff) {
my (undef,$value) = ReplaceEventMap($name, [$name, "off"], 0);
$hasOff = ($value ne "off");
}
}
if(!$hasOn || !$hasOff) { # No extension
return "Unknown argument $cmd, choose one of $list";
}
@ -169,6 +168,7 @@ SetExtensions($$@)
}
} elsif($cmd eq "toggle") {
my $value = Value($name);
$value = ($1==0 ? "off" : "on") if($value =~ m/dim (\d+)/); # Forum #49391
SE_DoSet($name, $value =~ m/^on/ ? "off" : "on");

View File

@ -255,8 +255,8 @@ use vars qw($fhemForked); # 1 in a fhemFork()'ed process, else undef
$selectTimestamp = gettimeofday();
$cvsid = '$Id$';
my $AttrList = "alias comment:textField-long eventMap group room ".
"suppressReading userReadings:textField-long ".
my $AttrList = "alias comment:textField-long eventMap:textField-long ".
"group room suppressReading userReadings:textField-long ".
"verbose:0,1,2,3,4,5";
my $currcfgfile=""; # current config/include file
@ -3981,7 +3981,7 @@ ReplaceEventMap($$$)
}
# $dir: 0:usr,$str is array pointer, 1:dev, $str is string
# perl notation: { dev=>{"re1"=>"Evt1",...}, dpy=>{"re2"=>"Set 1",...}}
# perl notation: { dev=>{"re1"=>"Evt1",...}, fw=>{"re1"=>"Set 1",...}}
sub
ReplaceEventMap2($$$)
{