mirror of
https://github.com/gosticks/go-hue-interface.git
synced 2025-10-16 11:45:35 +00:00
add lunair groupID to group struct
This commit is contained in:
parent
36b85a3980
commit
7a8b062212
61
groups.go
61
groups.go
@ -57,6 +57,8 @@ type Group struct {
|
|||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
State *GroupState `json:"state"`
|
State *GroupState `json:"state"`
|
||||||
Recycle bool `json:"recycle"`
|
Recycle bool `json:"recycle"`
|
||||||
|
ModelID string `json:"modelid,omitempty"`
|
||||||
|
UniqueID string `json:"uniqueid,omitempty"`
|
||||||
Class string `json:"class,omitempty"`
|
Class string `json:"class,omitempty"`
|
||||||
Action LightState `json:"action"`
|
Action LightState `json:"action"`
|
||||||
}
|
}
|
||||||
@ -68,11 +70,19 @@ type GroupCreateResponse struct {
|
|||||||
} `json:"success"`
|
} `json:"success"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GroupState describes the state of a group
|
||||||
type GroupState struct {
|
type GroupState struct {
|
||||||
AllOn bool `json:"all_on"`
|
AllOn bool `json:"all_on"`
|
||||||
AnyOn bool `json:"any_on"`
|
AnyOn bool `json:"any_on"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GroupAttributes that can be changed
|
||||||
|
type GroupAttributes struct {
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
LightIDs []string `json:"lights,omitempty"`
|
||||||
|
Class string `json:"class"`
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
// ~ String conversions
|
// ~ String conversions
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
@ -124,17 +134,6 @@ func (b *Bridge) CreateGroup(name string, groupType GroupType, lights []string)
|
|||||||
return b.createGroup(groupConfig)
|
return b.createGroup(groupConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAllGroups returns all the groups for a hue bridge
|
|
||||||
func (b *Bridge) GetAllGroups() (map[string]*Group, error) {
|
|
||||||
result := make(map[string]*Group)
|
|
||||||
errCom := b.getAndDecode(groupsEndpoint, &result)
|
|
||||||
if errCom != nil {
|
|
||||||
return nil, errCom
|
|
||||||
}
|
|
||||||
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateRoom creates a new hue room.
|
// CreateRoom creates a new hue room.
|
||||||
func (b *Bridge) CreateRoom(name string, class RoomClasses, lights []string) (string, error) {
|
func (b *Bridge) CreateRoom(name string, class RoomClasses, lights []string) (string, error) {
|
||||||
groupConfig := &Group{
|
groupConfig := &Group{
|
||||||
@ -146,7 +145,45 @@ func (b *Bridge) CreateRoom(name string, class RoomClasses, lights []string) (st
|
|||||||
return b.createGroup(groupConfig)
|
return b.createGroup(groupConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (b *Bridge) SetGroupAttributes(id string)
|
// GetAllGroups returns all the groups for a hue bridge
|
||||||
|
func (b *Bridge) GetAllGroups() (map[string]*Group, error) {
|
||||||
|
result := make(map[string]*Group)
|
||||||
|
errCom := b.getAndDecode(groupsEndpoint, &result)
|
||||||
|
if errCom != nil {
|
||||||
|
return nil, errCom
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGroupAttributes returns the state of a group by id
|
||||||
|
func (b *Bridge) GetGroupAttributes(id string) (*Group, error) {
|
||||||
|
result := &Group{}
|
||||||
|
errCom := b.getAndDecode(groupsEndpoint+"/"+id, &result)
|
||||||
|
if errCom != nil {
|
||||||
|
return nil, errCom
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetGroupAttributes updates a groups settings by adding devices or changing name or class
|
||||||
|
func (b *Bridge) SetGroupAttributes(id string, attributes *GroupAttributes) (*BridgeResponse, error) {
|
||||||
|
res, errCom := b.putToBridge(groupsEndpoint+"/"+id, attributes)
|
||||||
|
if errCom != nil {
|
||||||
|
return nil, errCom
|
||||||
|
}
|
||||||
|
|
||||||
|
result := &BridgeResponse{}
|
||||||
|
|
||||||
|
// Unmarshal data
|
||||||
|
errDecode := json.NewDecoder(res.Body).Decode(result)
|
||||||
|
if errDecode != nil {
|
||||||
|
return nil, errDecode
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
// ~ Private methods
|
// ~ Private methods
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user