diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2017-01-17 21:38:02 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2017-01-17 21:38:02 +0100 |
commit | 24f5e5ca264add178f62f80664b03b0f513a5b17 (patch) | |
tree | 359d84d4c9a5b92f80a3be11822c4e4964856256 | |
parent | 24319c73f774fb6661e843353fe3117784497c99 (diff) | |
download | hue-24f5e5ca264add178f62f80664b03b0f513a5b17.tar.gz |
multibridge: light
-rwxr-xr-x | hue | 28 |
1 files changed, 22 insertions, 6 deletions
@@ -606,7 +606,7 @@ sub parse_light_state { return $cmd; } -sub find_object { +sub try_find_object { my $state = shift; my $type = shift; my $name = shift; @@ -623,6 +623,15 @@ sub find_object { } } } + return $index; +} + +sub find_object { + my $state = shift; + my $type = shift; + my $name = shift; + + my $index = try_find_object($state, $type, $name); die "$type $name not found" unless defined($index); return $index; } @@ -640,14 +649,21 @@ sub find_lights { } sub set_light { - my $state = shift; + my $states = shift; my $when = shift; my $name = shift; my $body = parse_light_state(@_); + my ($br,$i,$state); - my $i = find_object($state, 'lights', $name); + for my $item (@bridges) { + $br = $item; + $state = $states->{$br}; + $i = try_find_object($state, 'lights', $name); + last if defined($i); + } + die "lights $name not found" unless defined($i); my $l = $state->{'lights'}->{$i}; - my $cmd = create_command($bridge, "PUT", "/lights/$i/state", $body); + my $cmd = create_command($br, "PUT", "/lights/$i/state", $body); if (defined($when)) { printf("schedule #%d [%s] at %s [utc] ", $i, $l->{'name'}, $when); @@ -656,7 +672,7 @@ sub set_light { } else { printf("configure #%d [%s] ", $i, $l->{'name'}); - my $rc = execute_command($bridge, $cmd); + my $rc = execute_command($br, $cmd); printf("-- %s\n", format_result($rc)); } } @@ -1046,7 +1062,7 @@ if (!defined($mode) or $mode eq "state") { # program lights if ($mode eq "l" || $mode eq "light") { - set_light($state, $cmdtime, @ARGV); + set_light($states, $cmdtime, @ARGV); exit; } |