aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2017-01-17 21:38:02 +0100
committerGerd Hoffmann <kraxel@redhat.com>2017-01-17 21:38:02 +0100
commit24f5e5ca264add178f62f80664b03b0f513a5b17 (patch)
tree359d84d4c9a5b92f80a3be11822c4e4964856256
parent24319c73f774fb6661e843353fe3117784497c99 (diff)
downloadhue-24f5e5ca264add178f62f80664b03b0f513a5b17.tar.gz
multibridge: light
-rwxr-xr-xhue28
1 files changed, 22 insertions, 6 deletions
diff --git a/hue b/hue
index 69c9bba..e7c73a9 100755
--- a/hue
+++ b/hue
@@ -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;
}