ziggs/internal/ziggy/multiplexor.go

58 lines
1.5 KiB
Go
Raw Normal View History

2022-07-09 00:09:49 +00:00
package ziggy
2022-03-04 05:36:52 +00:00
2022-10-12 12:50:02 +00:00
import "github.com/amimof/huego"
2022-03-04 05:36:52 +00:00
// Multiplex is all of the lights (all of the lights).
// I'll see myself out.
type Multiplex struct {
bridges []*Bridge
}
func GetLightMap() map[string]*HueLight {
var lightMap = make(map[string]*HueLight)
2022-10-12 12:50:02 +00:00
for _, c := range Lucifer.Bridges {
ls, err := c.GetLights()
if err != nil {
2022-10-12 12:50:02 +00:00
log.Warn().Msgf("error getting lights on bridge %s: %v", c.ID, err)
continue
}
2022-10-12 12:50:02 +00:00
for _, l := range ls {
light, lerr := c.GetLight(l.ID)
if lerr != nil {
log.Warn().Msgf("failed to get pointer for light %s on bridge %s: %v", l.Name, c.ID, lerr)
continue
}
2022-10-12 12:50:02 +00:00
if _, ok := lightMap[l.Name]; ok {
log.Warn().Msgf("duplicate light name %s on bridge %s - please rename", l.Name, c.ID)
continue
}
lightMap[l.Name] = &HueLight{Light: light, controller: c}
}
}
2022-10-12 12:50:02 +00:00
return lightMap
}
2022-10-12 12:50:02 +00:00
func GetGroupMap() map[string]*huego.Group {
var groupMap = make(map[string]*huego.Group)
for _, c := range Lucifer.Bridges {
gs, err := c.GetGroups()
if err != nil {
2022-10-12 12:50:02 +00:00
log.Warn().Msgf("error getting groups on bridge %s: %v", c.ID, err)
continue
}
2022-10-12 12:50:02 +00:00
for _, g := range gs {
group, gerr := c.GetGroup(g.ID)
if gerr != nil {
log.Warn().Msgf("failed to get pointer for group %s on bridge %s: %v", g.Name, c.ID, gerr)
continue
}
if _, ok := groupMap[g.Name]; ok {
log.Warn().Msgf("duplicate group name %s on bridge %s - please rename", g.Name, c.ID)
continue
}
groupMap[g.Name] = group
}
}
2022-10-12 12:50:02 +00:00
return groupMap
}