diff options
Diffstat (limited to 'lights.go')
-rw-r--r-- | lights.go | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/lights.go b/lights.go deleted file mode 100644 index 7c0fda2..0000000 --- a/lights.go +++ /dev/null @@ -1,88 +0,0 @@ -package hue - -import ( - "fmt" - "os" - "net/http" - "io/ioutil" - "encoding/json" - "strings" - "errors" -) - -type Light struct { - State struct { - On bool `json:"on"` - Bri int `json:"bri"` - hue int `json:"hue"` - sat int `json:"sat"` - effect string `json:"effect"` - xy []string `json:"xy"` // TODO: what is this? - ct int `json:"ct"` // TODO: what is this? - alert string `json:"alert"` - colormode string `json:"colormode"` - reachable bool `json:"reachable"` - } `json:"state"` - Type string `json:"type"` - Name string `json:"name"` - ModelID string `json:"modelid"` - ManufacturerName string `json:"manufacturername"` - UniqueID string `json:"uniqueid"` - SWVersion string `json:"swversion"` -} - - - -//http://192.168.1.128/api/319b36233bd2328f3e40731b23479207/lights/ - -// GetAllLights retreives the state of all lights that the bridge is aware of. -func GetAllLights(bridge *Bridge) []Light { - // Loop through all light indicies to see if they exist - // and parse their values. Supports 100 lights. - var lights []Light - for index := 1; index < 101; index++ { - response, err := http.Get( - fmt.Sprintf("http://%s/api/%s/lights/%d", bridge.IPAddress, bridge.Username, index)) - if err != nil { - trace("", err) - os.Exit(1) - } else if response.StatusCode != 200 { - trace(fmt.Sprintf("Bridge status error %d", response.StatusCode), nil) - os.Exit(1) - } - - // Read the response - body, err := ioutil.ReadAll(response.Body) - defer response.Body.Close() - if err != nil { - trace("", err) - os.Exit(1) - } - if strings.Contains(string(body), "not available") { - // Handle end of searchable lights - fmt.Printf("\n\n%d lights found.\n\n", index) - break - } - - // Parse and load the response into the light array - data := Light{} - err = json.Unmarshal(body, &data) - if err != nil { - trace("", err) - os.Exit(1) - } - lights = append(lights, data) - } - return lights -} - -// GetLight will return a light struct containing data on a given name. -func GetLight(bridge *Bridge, name string) (Light, error) { - lights := GetAllLights(bridge) - for index := 0; index < len(lights); index++ { - if lights[index].Name == name { - return lights[index], nil - } - } - return Light{}, errors.New("Light not found.") -} |