From b834226ba60ca27b0415aa6cd439b5f03c6a5f5c Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Wed, 15 Oct 2014 17:59:23 +0000 Subject: [PATCH] 10_FBDECT.pm/00_FBAHA.pm: support more than one AHA server. git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@6771 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_FBAHA.pm | 2 +- fhem/FHEM/10_FBDECT.pm | 28 ++++++++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/fhem/FHEM/00_FBAHA.pm b/fhem/FHEM/00_FBAHA.pm index 9aa8c988e..10e897a18 100644 --- a/fhem/FHEM/00_FBAHA.pm +++ b/fhem/FHEM/00_FBAHA.pm @@ -82,7 +82,7 @@ FBAHA_Set($@) foreach my $arg (@arg) { if($arg =~ m/ID:(\d+).*PROP:(.*)/) { my ($i,$p) = ($1,$2,$3); - my $msg = "UNDEFINED FBDECT_$i FBDECT $i $p"; + my $msg = "UNDEFINED FBDECT_$i FBDECT $name:$i $p"; DoTrigger("global", $msg, 1); Log3 $name, 3, "$msg, please define it"; } diff --git a/fhem/FHEM/10_FBDECT.pm b/fhem/FHEM/10_FBDECT.pm index e4477c960..46aaf0d87 100644 --- a/fhem/FHEM/10_FBDECT.pm +++ b/fhem/FHEM/10_FBDECT.pm @@ -65,17 +65,21 @@ FBDECT_Define($$) my $name = shift @a; my $type = shift(@a); # always FBDECT - my $u = "wrong syntax for $name: define FBDECT id props"; + my $u = "wrong syntax for $name: define FBDECT [FBAHAname:]id props"; return $u if(int(@a) != 2); - my $id = shift @a; + my $ioNameAndId = shift @a; + my ($ioName, $id) = (undef, $ioNameAndId); + if($ioNameAndId =~ m/^([^:]*):(.*)$/) { + $ioName = $1; $id = $2; + } return "define $name: wrong id ($id): need a number" if( $id !~ m/^\d+$/i ); $hash->{id} = $id; $hash->{props} = shift @a; - $modules{FBDECT}{defptr}{$id} = $hash; - AssignIoPort($hash); + $modules{FBDECT}{defptr}{$ioNameAndId} = $hash; + AssignIoPort($hash, $ioName); return undef; } @@ -161,9 +165,10 @@ FBDECT_Parse($$@) } my $id = hex(substr($msg, 16, 4)); - my $hash = $modules{FBDECT}{defptr}{$id}; + my $hash = $modules{FBDECT}{defptr}{"$ioName:$id"}; + $hash = $modules{FBDECT}{defptr}{$id} if(!$hash); if(!$hash) { - my $ret = "UNDEFINED FBDECT_$id FBDECT $id switch"; + my $ret = "UNDEFINED FBDECT_$id FBDECT $ioName:$id switch"; Log3 $ioName, 3, "$ret, please define it"; DoTrigger("global", $ret); return ""; @@ -353,7 +358,7 @@ FBDECT_Undef($$) Define
    - define <name> FBDECT <homeId> <id> [classes] + define <name> FBDECT [<FBAHAname>:]<homeId> <id> [classes]

    <id> is the id of the device, the classes argument ist ignored for now. @@ -363,7 +368,9 @@ FBDECT_Undef($$) define lamp FBDECT 16 switch,powerMeter
Note:Usually the device is created via - autocreate + autocreate. If you rename the corresponding FBAHA + device, take care to modify the FBDECT definitions, as it is not done + automatically.

@@ -439,7 +446,7 @@ FBDECT_Undef($$) Define
    - define <name> FBDECT <homeId> <id> [classes] + define <name> FBDECT [<FBAHAname>:]<homeId> <id> [classes]

    <id> ist das Geräte-ID, das Argument wird z.Zt ignoriert. @@ -449,7 +456,8 @@ FBDECT_Undef($$) define lampe FBDECT 16 switch,powerMeter
Achtung:FBDECT Einträge werden noralerweise per - autocreate angelegt. + autocreate angelegt. Falls sie die zugeordnete FBAHA + Instanz umbenennen, dann muss die FBDECT Definition manuell angepasst werden.