2022-07-09 00:09:49 +00:00
|
|
|
package ziggy
|
2022-03-04 05:36:52 +00:00
|
|
|
|
2022-09-06 23:31:44 +00:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"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
|
|
|
|
}
|
2022-09-06 23:31:44 +00:00
|
|
|
|
|
|
|
func GetGroupMap() (map[string]*huego.Group, error) {
|
|
|
|
var groupmap = make(map[string]*huego.Group)
|
|
|
|
for _, br := range Lucifer.Bridges {
|
|
|
|
gs, err := br.GetGroups()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2022-09-15 05:17:32 +00:00
|
|
|
for _, g := range gs {
|
|
|
|
grp, gerr := br.GetGroup(g.ID)
|
2022-09-06 23:31:44 +00:00
|
|
|
if gerr != nil {
|
2022-09-22 03:48:13 +00:00
|
|
|
log.Warn().Msgf("[%s] %v", g.Name, gerr)
|
2022-09-06 23:31:44 +00:00
|
|
|
continue
|
|
|
|
}
|
|
|
|
var count = 1
|
|
|
|
groupName := g.Name
|
|
|
|
for _, ok := groupmap[groupName]; ok; _, ok = groupmap[groupName] {
|
|
|
|
groupName = fmt.Sprintf("%s_%d", g.Name, count)
|
|
|
|
}
|
|
|
|
groupmap[groupName] = grp
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return groupmap, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetLightMap() map[string]*huego.Light {
|
|
|
|
var lightMap = make(map[string]*huego.Light)
|
|
|
|
for _, l := range Lucifer.Lights {
|
|
|
|
realLight, err := l.GetPtr()
|
|
|
|
if err != nil {
|
|
|
|
l.Log().Warn().Err(err).Msg("failed to get light pointer")
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
lightMap[realLight.Name] = realLight
|
|
|
|
}
|
|
|
|
return lightMap
|
|
|
|
}
|