From d8a135ee969a3324fa1c49c5d24f60503aa649b2 Mon Sep 17 00:00:00 2001 From: justme-1968 Date: Mon, 8 Aug 2016 18:13:53 +0000 Subject: [PATCH] 30_HUEBridge.pm: some cleanups git-svn-id: https://svn.fhem.de/fhem/trunk@11925 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/30_HUEBridge.pm | 66 ++++++++++----------------------------- 1 file changed, 17 insertions(+), 49 deletions(-) diff --git a/fhem/FHEM/30_HUEBridge.pm b/fhem/FHEM/30_HUEBridge.pm index 28d7efbab..80712fbcb 100644 --- a/fhem/FHEM/30_HUEBridge.pm +++ b/fhem/FHEM/30_HUEBridge.pm @@ -340,7 +340,6 @@ HUEBridge_Set($@) if( defined $defs{$arg} && $defs{$arg}{TYPE} eq 'HUEDevice' ) { $arg = $defs{$arg}{ID}; } - return "$arg is not a hue light number" if( $arg !~ m/^\d+$/ ); my $code = $name ."-". $arg; @@ -502,7 +501,6 @@ HUEBridge_Set($@) } elsif($cmd eq 'deleterule') { return "usage: deleterule " if( @args != 1 ); - return "$arg is not a hue rule number" if( $arg !~ m/^\d+$/ ); my $result = HUEBridge_Call($hash, undef, "rules/$arg", undef, 'DELETE'); @@ -547,7 +545,7 @@ HUEBridge_Set($@) return "usage: deletesensor " if( @args != 1 ); if( defined $defs{$arg} && $defs{$arg}{TYPE} eq 'HUEDevice' ) { - return "$arg is not a hue sensors" if( $defs{$arg}{ID} !~ m/^S/ ); + return "$arg is not a hue sensor" if( $defs{$arg}{ID} !~ m/^S/ ); $defs{$arg}{ID} =~ m/S(.*)/; $arg = $1; } @@ -558,67 +556,35 @@ HUEBridge_Set($@) CommandSave(undef,undef) if( AttrVal( "autocreate", "autosave", 1 ) ); } - return "$arg is not a hue sensors number" if( $arg !~ m/^\d+$/ ); + return "$arg is not a hue sensor number" if( $arg !~ m/^\d+$/ ); my $result = HUEBridge_Call($hash, undef, "sensors/$arg", undef, 'DELETE'); return $result->{error}{description} if( $result->{error} ); return undef; - } elsif($cmd eq 'configsensor') { - return "usage: configsensor " if( @args < 2 ); + } elsif($cmd eq 'configsensor' || $cmd eq 'setsensor') { + return "usage: $cmd " if( @args < 2 ); - my $id = $args[0]; - if( defined $defs{$id} && $defs{$id}{TYPE} eq 'HUEDevice' ) { - return "$arg is not a hue sensors" if( $defs{$id}{ID} !~ m/^S/ ); - $defs{$id}{ID} =~ m/S(.*)/; - $id = $1; + if( defined $defs{$arg} && $defs{$arg}{TYPE} eq 'HUEDevice' ) { + return "$arg is not a hue sensor" if( $defs{$arg}{ID} !~ m/^S/ ); + $defs{$arg}{ID} =~ m/S(.*)/; + $arg = $1; } + return "$arg is not a hue sensor number" if( $arg !~ m/^\d+$/ ); - return "$id is not a hue sensors number" if( $id !~ m/^\d+$/ ); - - my $config = join( ' ', @args[1..@args-1]); - my $decoded = eval { decode_json($config) }; + my $json = join( ' ', @args[1..@args-1]); + my $decoded = eval { decode_json($json) }; if( $@ ) { - Log3 $name, 2, "$name: json error: $@ in $config"; + Log3 $name, 2, "$name: json error: $@ in $json"; return undef; } - $config = $decoded; + $json = $decoded; - my $result = HUEBridge_Call($hash, undef, "sensors/$id/config", $config, 'PUT'); + my $result = HUEBridge_Call($hash, undef, "sensors/$arg/".($cmd eq 'configsensor'?'config':'state'), $json, 'PUT'); return $result->{error}{description} if( $result->{error} ); - my $code = $name ."-S". $id; - if( my $chash = $modules{HUEDevice}{defptr}{$code} ) { - HUEDevice_GetUpdate($chash); - } - - return undef; - - } elsif($cmd eq 'setsensor') { - return "usage: setsensor " if( @args < 2 ); - - my $id = $args[0]; - if( defined $defs{$id} && $defs{$id}{TYPE} eq 'HUEDevice' ) { - return "$arg is not a hue sensors" if( $defs{$id}{ID} !~ m/^S/ ); - $defs{$id}{ID} =~ m/S(.*)/; - $id = $1; - } - - return "$id is not a hue sensors number" if( $id !~ m/^\d+$/ ); - - my $state = join( ' ', @args[1..@args-1]); - my $decoded = eval { decode_json($state) }; - if( $@ ) { - Log3 $name, 2, "$name: json error: $@ in $state"; - return undef; - } - $state = $decoded; - - my $result = HUEBridge_Call($hash, undef, "sensors/$id/state", $state, 'PUT'); - return $result->{error}{description} if( $result->{error} ); - - my $code = $name ."-S". $id; + my $code = $name ."-S". $arg; if( my $chash = $modules{HUEDevice}{defptr}{$code} ) { HUEDevice_GetUpdate($chash); } @@ -727,6 +693,7 @@ HUEBridge_Get($@) } elsif($cmd eq 'rule') { return "usage: rule " if( @args != 1 ); return "$arg is not a hue rule number" if( $arg !~ m/^\d+$/ ); + my $result = HUEBridge_Call($hash, undef, "rules/$arg", undef); return $result->{error}{description} if( $result->{error} ); my $ret = encode_json($result->{conditions}) ."\n". encode_json($result->{actions}); @@ -735,6 +702,7 @@ HUEBridge_Get($@) } elsif($cmd eq 'rules') { my $result = HUEBridge_Call($hash, undef, 'rules', undef); return $result->{error}{description} if( $result->{error} ); + my $ret = ""; foreach my $key ( sort {$a<=>$b} keys %{$result} ) { $ret .= sprintf( "%2i: %-20s", $key, $result->{$key}{name} );