package main import ( "fmt" "log" "strconv" "git.barakmich.com/barak/hue/discovery" "github.com/amimof/huego" "github.com/spf13/pflag" ) var ( group = pflag.String("group", "", "Select a light group") light = pflag.String("light", "", "Select an individual light") listAllScenes = pflag.Bool("list-all-scenes", false, "List all scenes") listScenes = pflag.Bool("list-scenes", false, "List all scenes") scene = pflag.String("scene", "", "Set a scene") ) func main() { pflag.Parse() bridge, err := discovery.DiscoverAndConnectFromConfig("barak-hue-test") if err != nil { log.Fatalln("Couldn't connect to hue bridge:", err) } if *listAllScenes { scenes, _ := bridge.GetScenes() fmt.Println(scenes[0].Group) return } if *group != "" { err := groupMain(bridge) if err != nil { log.Fatalln(err) } else { return } } if *light != "" { err := lightMain(bridge) if err != nil { log.Fatalln(err) } else { return } } log.Fatalln("Need to specify at least one of --group or --light") } func groupMain(bridge *huego.Bridge) error { groups, err := bridge.GetGroups() if err != nil { return err } var g huego.Group found := false for _, x := range groups { if x.Name == *group { found = true g = x break } } if !found { return fmt.Errorf("Couldn't find group named \"%s\"", *group) } switch { case *listScenes: scenes, err := bridge.GetScenes() if err != nil { return err } for _, s := range scenes { if s.Group == strconv.Itoa(g.ID) { fmt.Println(s.Name) } } case *scene != "": scenes, err := bridge.GetScenes() if err != nil { return err } for _, s := range scenes { if s.Group == strconv.Itoa(g.ID) { if s.Name == *scene { return g.Scene(s.ID) } } } } return nil } func lightMain(bridge *huego.Bridge) error { return nil }