From 159bb41f69dd793bcfc921b99fd73ad6beeaa2be Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Fri, 6 Jan 2017 10:01:25 +0000 Subject: [PATCH] 00_CUL.pm/16_STACKABLE_CC.pm: support noansi's TSSTACKED (Forum #57806) git-svn-id: https://svn.fhem.de/fhem/trunk@12973 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_CUL.pm | 22 +++++++++++++++------- fhem/FHEM/16_STACKABLE_CC.pm | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/fhem/FHEM/00_CUL.pm b/fhem/FHEM/00_CUL.pm index 590e71f45..967b0f85f 100755 --- a/fhem/FHEM/00_CUL.pm +++ b/fhem/FHEM/00_CUL.pm @@ -45,14 +45,17 @@ my %sets = ( my @ampllist = (24, 27, 30, 33, 36, 38, 40, 42); # rAmpl(dB) +my $sccMods = "STACKABLE_CC:TSSTACKED"; # for noansi +my $culNameRe = "^(CUL|TSCUL)\$"; + my $clientsSlowRF = ":FS20:FHT.*:KS300:USF1000:BS:HMS: ". ":CUL_EM:CUL_WS:CUL_FHTTK:CUL_HOERMANN: ". ":ESA2000:CUL_IR:CUL_TX:Revolt:IT:UNIRoll:SOMFY: ". - ":STACKABLE_CC:CUL_RFR::CUL_TCM97001:CUL_REDIRECT:"; -my $clientsHomeMatic = ":CUL_HM:HMS:CUL_IR:STACKABLE_CC:"; -my $clientsMAX = ":CUL_MAX:HMS:CUL_IR:STACKABLE_CC:"; -my $clientsWMBus = ":WMBUS:HMS:CUL_IR:STACKABLE_CC:"; -my $clientsKOPP_FC = ":KOPP_FC:HMS:CUL_IR:STACKABLE_CC:"; + ":$sccMods:CUL_RFR::CUL_TCM97001:CUL_REDIRECT:"; +my $clientsHomeMatic = ":CUL_HM:HMS:CUL_IR:$sccMods:"; +my $clientsMAX = ":CUL_MAX:HMS:CUL_IR:$sccMods:"; +my $clientsWMBus = ":WMBUS:HMS:CUL_IR:$sccMods:"; +my $clientsKOPP_FC = ":KOPP_FC:HMS:CUL_IR:$sccMods:"; my %matchListSlowRF = ( "1:USF1000" => "^81..(04|0c)..0101a001a5ceaa00....", @@ -76,6 +79,7 @@ my %matchListSlowRF = ( "J:SOMFY" => "^Y[r|t|s]:?[A-F0-9]+", "K:CUL_TCM97001" => "^s[A-F0-9]+", "L:CUL_REDIRECT" => "^o+", + "M:TSSTACKED"=>"^\\*", ); my %matchListHomeMatic = ( @@ -83,6 +87,7 @@ my %matchListHomeMatic = ( "8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation "D:CUL_IR" => "^I............", "H:STACKABLE_CC"=>"^\\*", + "M:TSSTACKED"=>"^\\*", ); my %matchListMAX = ( @@ -90,6 +95,7 @@ my %matchListMAX = ( "8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation "D:CUL_IR" => "^I............", "H:STACKABLE_CC"=>"^\\*", + "M:TSSTACKED"=>"^\\*", ); my %matchListWMBus = ( @@ -97,6 +103,7 @@ my %matchListWMBus = ( "8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation "D:CUL_IR" => "^I............", "H:STACKABLE_CC"=>"^\\*", + "M:TSSTACKED"=>"^\\*", ); my %matchListKOPP_FC = ( @@ -104,6 +111,7 @@ my %matchListKOPP_FC = ( "8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation "D:CUL_IR" => "^I............", "H:STACKABLE_CC"=>"^\\*", + "M:TSSTACKED"=>"^\\*", ); @@ -180,7 +188,7 @@ CUL_Define($$) my $x = $1; foreach my $d (keys %defs) { next if($d eq $name); - if($defs{$d}{TYPE} eq "CUL") { + if($defs{$d}{TYPE} =~ m/$culNameRe/) { if(uc($defs{$d}{FHTID}) =~ m/^$x/) { my $m = "$name: Cannot define multiple CULs with identical ". "first two digits ($x)"; @@ -1131,7 +1139,7 @@ CUL_prefix($$$) { my ($isadd, $hash, $msg) = @_; my $t = $hash->{TYPE}; - while($t ne "CUL") { + while($t !~ m/$culNameRe/) { $msg = CallFn($hash->{NAME}, $isadd ? "AddPrefix":"DelPrefix", $hash, $msg); $hash = $hash->{IODev}; last if(!$hash); diff --git a/fhem/FHEM/16_STACKABLE_CC.pm b/fhem/FHEM/16_STACKABLE_CC.pm index 426179023..5b5a18c6e 100644 --- a/fhem/FHEM/16_STACKABLE_CC.pm +++ b/fhem/FHEM/16_STACKABLE_CC.pm @@ -46,7 +46,7 @@ STACKABLE_CC_Define($$) my $io = $defs{$a[2]}; return "$a[2] is not a CUL/STACKABLE_CC" - if(!$io || !($io->{TYPE} eq "CUL" || $io->{TYPE} eq "STACKABLE_CC")); + if(!$io || $io->{TYPE} !~ m/^(CUL|TSCUL|STACKABLE_CC|TSSTACKED)$/); return "$io->{NAME} has alread a stacked device: $io->{STACKED}" if($io->{STACKED});