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
This commit is contained in:
rudolfkoenig 2017-01-06 10:01:25 +00:00
parent e686d93552
commit 159bb41f69
2 changed files with 16 additions and 8 deletions

View File

@ -45,14 +45,17 @@ my %sets = (
my @ampllist = (24, 27, 30, 33, 36, 38, 40, 42); # rAmpl(dB) 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: ". my $clientsSlowRF = ":FS20:FHT.*:KS300:USF1000:BS:HMS: ".
":CUL_EM:CUL_WS:CUL_FHTTK:CUL_HOERMANN: ". ":CUL_EM:CUL_WS:CUL_FHTTK:CUL_HOERMANN: ".
":ESA2000:CUL_IR:CUL_TX:Revolt:IT:UNIRoll:SOMFY: ". ":ESA2000:CUL_IR:CUL_TX:Revolt:IT:UNIRoll:SOMFY: ".
":STACKABLE_CC:CUL_RFR::CUL_TCM97001:CUL_REDIRECT:"; ":$sccMods:CUL_RFR::CUL_TCM97001:CUL_REDIRECT:";
my $clientsHomeMatic = ":CUL_HM:HMS:CUL_IR:STACKABLE_CC:"; my $clientsHomeMatic = ":CUL_HM:HMS:CUL_IR:$sccMods:";
my $clientsMAX = ":CUL_MAX:HMS:CUL_IR:STACKABLE_CC:"; my $clientsMAX = ":CUL_MAX:HMS:CUL_IR:$sccMods:";
my $clientsWMBus = ":WMBUS:HMS:CUL_IR:STACKABLE_CC:"; my $clientsWMBus = ":WMBUS:HMS:CUL_IR:$sccMods:";
my $clientsKOPP_FC = ":KOPP_FC:HMS:CUL_IR:STACKABLE_CC:"; my $clientsKOPP_FC = ":KOPP_FC:HMS:CUL_IR:$sccMods:";
my %matchListSlowRF = ( my %matchListSlowRF = (
"1:USF1000" => "^81..(04|0c)..0101a001a5ceaa00....", "1:USF1000" => "^81..(04|0c)..0101a001a5ceaa00....",
@ -76,6 +79,7 @@ my %matchListSlowRF = (
"J:SOMFY" => "^Y[r|t|s]:?[A-F0-9]+", "J:SOMFY" => "^Y[r|t|s]:?[A-F0-9]+",
"K:CUL_TCM97001" => "^s[A-F0-9]+", "K:CUL_TCM97001" => "^s[A-F0-9]+",
"L:CUL_REDIRECT" => "^o+", "L:CUL_REDIRECT" => "^o+",
"M:TSSTACKED"=>"^\\*",
); );
my %matchListHomeMatic = ( my %matchListHomeMatic = (
@ -83,6 +87,7 @@ my %matchListHomeMatic = (
"8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation "8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation
"D:CUL_IR" => "^I............", "D:CUL_IR" => "^I............",
"H:STACKABLE_CC"=>"^\\*", "H:STACKABLE_CC"=>"^\\*",
"M:TSSTACKED"=>"^\\*",
); );
my %matchListMAX = ( my %matchListMAX = (
@ -90,6 +95,7 @@ my %matchListMAX = (
"8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation "8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation
"D:CUL_IR" => "^I............", "D:CUL_IR" => "^I............",
"H:STACKABLE_CC"=>"^\\*", "H:STACKABLE_CC"=>"^\\*",
"M:TSSTACKED"=>"^\\*",
); );
my %matchListWMBus = ( my %matchListWMBus = (
@ -97,6 +103,7 @@ my %matchListWMBus = (
"8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation "8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation
"D:CUL_IR" => "^I............", "D:CUL_IR" => "^I............",
"H:STACKABLE_CC"=>"^\\*", "H:STACKABLE_CC"=>"^\\*",
"M:TSSTACKED"=>"^\\*",
); );
my %matchListKOPP_FC = ( my %matchListKOPP_FC = (
@ -104,6 +111,7 @@ my %matchListKOPP_FC = (
"8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation "8:HMS" => "^810e04....(1|5|9).a001", # CUNO OneWire HMS Emulation
"D:CUL_IR" => "^I............", "D:CUL_IR" => "^I............",
"H:STACKABLE_CC"=>"^\\*", "H:STACKABLE_CC"=>"^\\*",
"M:TSSTACKED"=>"^\\*",
); );
@ -180,7 +188,7 @@ CUL_Define($$)
my $x = $1; my $x = $1;
foreach my $d (keys %defs) { foreach my $d (keys %defs) {
next if($d eq $name); next if($d eq $name);
if($defs{$d}{TYPE} eq "CUL") { if($defs{$d}{TYPE} =~ m/$culNameRe/) {
if(uc($defs{$d}{FHTID}) =~ m/^$x/) { if(uc($defs{$d}{FHTID}) =~ m/^$x/) {
my $m = "$name: Cannot define multiple CULs with identical ". my $m = "$name: Cannot define multiple CULs with identical ".
"first two digits ($x)"; "first two digits ($x)";
@ -1131,7 +1139,7 @@ CUL_prefix($$$)
{ {
my ($isadd, $hash, $msg) = @_; my ($isadd, $hash, $msg) = @_;
my $t = $hash->{TYPE}; my $t = $hash->{TYPE};
while($t ne "CUL") { while($t !~ m/$culNameRe/) {
$msg = CallFn($hash->{NAME}, $isadd ? "AddPrefix":"DelPrefix", $hash, $msg); $msg = CallFn($hash->{NAME}, $isadd ? "AddPrefix":"DelPrefix", $hash, $msg);
$hash = $hash->{IODev}; $hash = $hash->{IODev};
last if(!$hash); last if(!$hash);

View File

@ -46,7 +46,7 @@ STACKABLE_CC_Define($$)
my $io = $defs{$a[2]}; my $io = $defs{$a[2]};
return "$a[2] is not a CUL/STACKABLE_CC" 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}" return "$io->{NAME} has alread a stacked device: $io->{STACKED}"
if($io->{STACKED}); if($io->{STACKED});