diff --git a/internal/drivers/nanoleaf/bridge.go b/internal/drivers/nanoleaf/bridge.go index 864eff3..c371b59 100644 --- a/internal/drivers/nanoleaf/bridge.go +++ b/internal/drivers/nanoleaf/bridge.go @@ -37,12 +37,22 @@ func (b *bridge) Devices() []models.Device { hue, sat, value := colorful.LinearRgb(red, green, blue).Hsv() + shapeType, shapeTypeOK := shapeTypeMap[panel.ShapeType] + if !shapeTypeOK { + shapeType = "NanoLeaf" + } + + shapeIcon, shapeIconOK := shapeIconMap[panel.ShapeType] + if !shapeIconOK { + shapeIcon = "lightbulb" + } + results = append(results, models.Device{ ID: -1, BridgeID: b.externalID, InternalID: strconv.Itoa(int(panel.ID)), - Icon: "hexagon", - Name: fmt.Sprintf("Hexagon %d", i), + Icon: shapeIcon, + Name: fmt.Sprintf("%s %d", shapeType, i), Capabilities: []models.DeviceCapability{ models.DCPower, models.DCColorHS, @@ -83,7 +93,7 @@ func (b *bridge) Refresh(ctx context.Context) error { b.mu.Lock() PanelLoop: for _, panelInfo := range overview.PanelLayout.Data.PositionData { - if panelInfo.PanelID == 0 { + if shapeTypeMap[panelInfo.ShapeType] == "Shapes Controller" { continue } diff --git a/internal/drivers/nanoleaf/data.go b/internal/drivers/nanoleaf/data.go index 97ba26f..79c6399 100644 --- a/internal/drivers/nanoleaf/data.go +++ b/internal/drivers/nanoleaf/data.go @@ -135,6 +135,18 @@ var shapeTypeMap = map[int]string{ 12: "Shapes Controller", } +var shapeIconMap = map[int]string{ + 0: "triangle", + 1: "rhythm", + 2: "Square", + 3: "square", + 4: "square", + 7: "hexagon", + 8: "triangle", + 9: "triangle-small", + 12: "hexagon", +} + var shapeWidthMap = map[int]int{ 0: 150, 1: -1,