From 12ab1e3b0a5339d4d4b5c0b876e9ad34160f78b2 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Wed, 9 Jan 2019 20:50:34 +0000 Subject: [PATCH] SetExtensions.pm: fix the EnOcean on/off eventMap (Forum #95589) git-svn-id: https://svn.fhem.de/fhem/trunk@18197 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/SetExtensions.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fhem/FHEM/SetExtensions.pm b/fhem/FHEM/SetExtensions.pm index 42c4f132f..124c03570 100644 --- a/fhem/FHEM/SetExtensions.pm +++ b/fhem/FHEM/SetExtensions.pm @@ -68,10 +68,11 @@ SetExtensions($$@) ($list =~ m/(^| )$uCmd\b/ ? $uCmd : "")); } + # Must work with EnOceans "attr x eventMap BI:off B0:on" sub getReplCmd($$) { - my ($name, $cmd); + my ($name, $cmd) = @_; my (undef,$value) = ReplaceEventMap($name, [$name, $cmd], 0); return $cmd if($value ne $cmd); @@ -85,15 +86,19 @@ SetExtensions($$@) my $offCmd = getCmd($list, "off"); my $eventMap = AttrVal($name, "eventMap", undef); + my $fixedIt; if((!$onCmd || !$offCmd) && $eventMap) { $onCmd = getReplCmd($name, "on") if(!$onCmd); $offCmd = getReplCmd($name, "off") if(!$offCmd && $onCmd); + $fixedIt = 1; } if(!$onCmd || !$offCmd) { # No extension return AttrTemplate_Set($hash, $list, $name, $cmd, @a); } + $cmd = ReplaceEventMap($name, $cmd, 1) if($fixedIt); + if(!defined($se_list{$cmd})) { # Add only "new" commands my @mylist = grep { $list !~ m/\b$_\b/ } keys %se_list;