From bda4679eacdeb683cff28f8869c9cb2c3bfda832 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Tue, 19 Dec 2017 11:40:04 +0100 Subject: [PATCH] remove IODev in Define and add IODev Attribut --- 73_GardenaSmartBridge.pm | 2 +- 74_GardenaSmartDevice.pm | 48 +++++++++++++++++----------------------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/73_GardenaSmartBridge.pm b/73_GardenaSmartBridge.pm index 69e6b3b..d9844fa 100644 --- a/73_GardenaSmartBridge.pm +++ b/73_GardenaSmartBridge.pm @@ -68,7 +68,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; eval "use IO::Socket::SSL;1" or $missingModul .= "IO::Socket::SSL "; -my $version = "0.2.8"; +my $version = "0.4.0"; diff --git a/74_GardenaSmartDevice.pm b/74_GardenaSmartDevice.pm index 571e444..0c54d02 100644 --- a/74_GardenaSmartDevice.pm +++ b/74_GardenaSmartDevice.pm @@ -65,7 +65,7 @@ use Time::Local; 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->{AttrList} = "readingValueLanguage:de,en ". "model ". + "IODev ". $readingFnAttributes; foreach my $d(sort keys %{$modules{GardenaSmartDevice}{defptr}}) { @@ -112,39 +113,29 @@ sub GardenaSmartDevice_Define($$) { my ( $hash, $def ) = @_; my @a = split( "[ \t]+", $def ); - splice( @a, 1, 1 ); - my $iodev; - my $i = 0; - - foreach my $param ( @a ) { - if( $param =~ m/IODev=([^\s]*)/ ) { - - $iodev = $1; - splice( @a, $i, 3 ); - last; - } - - $i++; - } - - - return "too few parameters: define GardenaSmartDevice " if( @a != 3 ) ; + return "too few parameters: define GardenaSmartDevice " if( @a < 3 ) ; 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} ); if(defined($hash->{IODev}->{NAME})) { - Log3 $name, 3, "GardenaSmartDevice ($name) - I/O device is " . $hash->{IODev}->{NAME}; - } else { - 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." if( defined($d) && $d->{IODev} == $hash->{IODev} && $d->{NAME} ne $name ); + $attr{$name}{room} = "GardenaSmart" if( not defined( $attr{$name}{room} ) ); $attr{$name}{model} = $category if( not defined( $attr{$name}{model} ) ); @@ -310,8 +302,8 @@ sub GardenaSmartDevice_Parse($$) { } 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"; - return "UNDEFINED " . makeDeviceName($decode_json->{name}) . " GardenaSmartDevice $decode_json->{id} $decode_json->{category} 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}"; } } }