Skip to content

Commit

Permalink
Allow scenes with lights off
Browse files Browse the repository at this point in the history
  • Loading branch information
pokeylope committed Aug 27, 2023
1 parent 7966152 commit 7f54258
Showing 1 changed file with 26 additions and 13 deletions.
39 changes: 26 additions & 13 deletions scenes.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,18 @@ func updateScenes() {
}

func updateSceneForSchedule(scene *hue.Scene, lightSchedule LightSchedule) {
// Scene returned by AllScenes() doesn't have LightStates populated
scene, err := bridge.bridge.SceneByID(scene.Id)
if err != nil {
log.Warningf("🎨 %v", err)
return
}

// Updating lights
var modifyScene hue.ModifyScene
modifyScene.Lights = toStringArray(lightSchedule.AssociatedDeviceIDs)

_, err := scene.Modify(modifyScene)
_, err = scene.Modify(modifyScene)
if err != nil {
log.Warningf("🎨 %v", err)
return
Expand All @@ -68,20 +75,26 @@ func updateSceneForSchedule(scene *hue.Scene, lightSchedule LightSchedule) {

state := interval.calculateLightStateInInterval(time.Now())

var modifyState hue.ModifyLightState
modifyState.On = true // turn lights on when the scene is activated
for i, oldstate := range scene.LightStates {
if !oldstate.On {
continue;
}

if state.ColorTemperature != -1 {
modifyState.ColorTemperature = uint16(mapColorTemperature(state.ColorTemperature))
modifyState.Xy = colorTemperatureToXYColor(state.ColorTemperature)
}
if state.Brightness != -1 {
modifyState.Brightness = uint8(mapBrightness(state.Brightness))
}
var modifyState hue.ModifyLightState
modifyState.On = true // turn lights on when the scene is activated

_, err = scene.ModifyLightStates(modifyState)
if err != nil {
log.Warningf("🎨 %v", err)
if state.ColorTemperature != -1 {
modifyState.ColorTemperature = uint16(mapColorTemperature(state.ColorTemperature))
modifyState.Xy = colorTemperatureToXYColor(state.ColorTemperature)
}
if state.Brightness != -1 {
modifyState.Brightness = uint8(mapBrightness(state.Brightness))
}

_, err = scene.ModifyLightState(i, modifyState)
if err != nil {
log.Warningf("🎨 %v", err)
}
}

log.Debugf("🎨 Successfully updated scene \"%s\"", scene.Name)
Expand Down

0 comments on commit 7f54258

Please sign in to comment.