remove IODev in Define and add IODev Attribut

This commit is contained in:
Marko Oldenburg 2017-12-19 11:40:04 +01:00
parent bb72f0284b
commit bda4679eac
2 changed files with 21 additions and 29 deletions

View File

@ -68,7 +68,7 @@ eval "use JSON;1" or $missingModul .= "JSON ";
eval "use IO::Socket::SSL;1" or $missingModul .= "IO::Socket::SSL "; eval "use IO::Socket::SSL;1" or $missingModul .= "IO::Socket::SSL ";
my $version = "0.2.8"; my $version = "0.4.0";

View File

@ -65,7 +65,7 @@ use Time::Local;
eval "use JSON;1" or $missingModul .= "JSON "; eval "use JSON;1" or $missingModul .= "JSON ";
my $version = "0.2.4"; my $version = "0.4.0";
@ -99,6 +99,7 @@ sub GardenaSmartDevice_Initialize($) {
$hash->{AttrFn} = "GardenaSmartDevice_Attr"; $hash->{AttrFn} = "GardenaSmartDevice_Attr";
$hash->{AttrList} = "readingValueLanguage:de,en ". $hash->{AttrList} = "readingValueLanguage:de,en ".
"model ". "model ".
"IODev ".
$readingFnAttributes; $readingFnAttributes;
foreach my $d(sort keys %{$modules{GardenaSmartDevice}{defptr}}) { foreach my $d(sort keys %{$modules{GardenaSmartDevice}{defptr}}) {
@ -112,39 +113,29 @@ sub GardenaSmartDevice_Define($$) {
my ( $hash, $def ) = @_; my ( $hash, $def ) = @_;
my @a = split( "[ \t]+", $def ); my @a = split( "[ \t]+", $def );
splice( @a, 1, 1 );
my $iodev;
my $i = 0;
return "too few parameters: define <NAME> GardenaSmartDevice <device_Id> <model>" if( @a < 3 ) ;
foreach my $param ( @a ) {
if( $param =~ m/IODev=([^\s]*)/ ) {
$iodev = $1;
splice( @a, $i, 3 );
last;
}
$i++;
}
return "too few parameters: define <NAME> GardenaSmartDevice <device_Id> <model>" if( @a != 3 ) ;
return "Cannot define Gardena Bridge device. Perl modul $missingModul is missing." if ( $missingModul ); return "Cannot define Gardena Bridge device. Perl modul $missingModul is missing." if ( $missingModul );
my ($name,$deviceId,$category) = @a;
$hash->{DEVICEID} = $deviceId;
$hash->{VERSION} = $version;
my $name = $a[0];
my $deviceId = $a[2];
my $category = $a[3];
$hash->{DEVICEID} = $deviceId;
$hash->{VERSION} = $version;
CommandAttr(undef,"$name IODev $modules{GardenaSmartBridge}{defptr}{BRIDGE}->{NAME}") if(AttrVal($name,'IODev','none') eq 'none');
my $iodev = AttrVal($name,'IODev','none');
AssignIoPort($hash,$iodev) if( !$hash->{IODev} ); AssignIoPort($hash,$iodev) if( !$hash->{IODev} );
if(defined($hash->{IODev}->{NAME})) { if(defined($hash->{IODev}->{NAME})) {
Log3 $name, 3, "GardenaSmartDevice ($name) - I/O device is " . $hash->{IODev}->{NAME}; Log3 $name, 3, "GardenaSmartDevice ($name) - I/O device is " . $hash->{IODev}->{NAME};
} else { } else {
Log3 $name, 1, "GardenaSmartDevice ($name) - no I/O device"; Log3 $name, 1, "GardenaSmartDevice ($name) - no I/O device";
} }
@ -155,6 +146,7 @@ sub GardenaSmartDevice_Define($$) {
return "GardenaSmartDevice device $name on GardenaSmartBridge $iodev already defined." return "GardenaSmartDevice device $name on GardenaSmartBridge $iodev already defined."
if( defined($d) && $d->{IODev} == $hash->{IODev} && $d->{NAME} ne $name ); if( defined($d) && $d->{IODev} == $hash->{IODev} && $d->{NAME} ne $name );
$attr{$name}{room} = "GardenaSmart" if( not defined( $attr{$name}{room} ) ); $attr{$name}{room} = "GardenaSmart" if( not defined( $attr{$name}{room} ) );
$attr{$name}{model} = $category if( not defined( $attr{$name}{model} ) ); $attr{$name}{model} = $category if( not defined( $attr{$name}{model} ) );
@ -310,8 +302,8 @@ sub GardenaSmartDevice_Parse($$) {
} else { } else {
Log3 $name, 3, "GardenaSmartDevice ($name) - autocreate new device " . makeDeviceName($decode_json->{name}) . " with deviceId $decode_json->{id}, model $decode_json->{category} and IODev IODev=$name"; Log3 $name, 3, "GardenaSmartDevice ($name) - autocreate new device " . makeDeviceName($decode_json->{name}) . " with deviceId $decode_json->{id}, model $decode_json->{category}";
return "UNDEFINED " . makeDeviceName($decode_json->{name}) . " GardenaSmartDevice $decode_json->{id} $decode_json->{category} IODev=$name"; return "UNDEFINED " . makeDeviceName($decode_json->{name}) . " GardenaSmartDevice $decode_json->{id} $decode_json->{category}";
} }
} }
} }