Gisle Aune
3 years ago
16 changed files with 467 additions and 178 deletions
-
48cmd/xy/main.go
-
8internal/drivers/hue/state.go
-
19internal/drivers/hue2/bridge.go
-
10internal/drivers/lifx/bridge.go
-
25internal/drivers/lifx/state.go
-
30internal/drivers/nanoleaf/bridge.go
-
24internal/mysql/devicerepo.go
-
21internal/mysql/presetrepo.go
-
17models/colorhs.go
-
29models/colorrgb.go
-
327models/colorvalue.go
-
44models/colorxy.go
-
16models/device.go
-
9scripts/20220220121712_color_preset_wipe.sql
-
9scripts/20220220121724_color_preset_add_column_value.sql
-
9scripts/20220220124631_device_state_color.sql
@ -1,49 +1,21 @@ |
|||||
package main |
package main |
||||
|
|
||||
import ( |
import ( |
||||
"context" |
|
||||
"encoding/json" |
"encoding/json" |
||||
"fmt" |
|
||||
"git.aiterp.net/lucifer/new-server/internal/drivers/hue2" |
|
||||
"git.aiterp.net/lucifer/new-server/models" |
"git.aiterp.net/lucifer/new-server/models" |
||||
"log" |
"log" |
||||
) |
) |
||||
|
|
||||
func main() { |
func main() { |
||||
client := hue2.NewClient("10.80.8.8", "o2XKGgmVUGNBghYFdLUCVuinOTMxFH4pHV9PuTbU") |
|
||||
bridge := hue2.NewBridge(client) |
|
||||
|
|
||||
err := bridge.RefreshAll(context.Background()) |
|
||||
if err != nil { |
|
||||
log.Fatalln(err) |
|
||||
} |
|
||||
j, _ := json.Marshal(bridge.GenerateDevices()) |
|
||||
fmt.Println(string(j)) |
|
||||
|
|
||||
ch := make(chan models.Event) |
|
||||
go func() { |
|
||||
for event := range ch { |
|
||||
log.Println("EVENT", event.Name, event.Payload) |
|
||||
} |
|
||||
}() |
|
||||
|
|
||||
for i, dev := range bridge.GenerateDevices() { |
|
||||
device := dev |
|
||||
switch device.InternalID { |
|
||||
case "6d5a45b0-ec69-4417-8588-717358b05086": |
|
||||
c, _ := models.ParseColorValue("xy:0.22,0.18") |
|
||||
device.State.Color = c |
|
||||
device.State.Intensity = 0.3 |
|
||||
case "a71128f4-5295-4ae4-9fbc-5541abc8739b": |
|
||||
c, _ := models.ParseColorValue("k:6500") |
|
||||
device.State.Color = c |
|
||||
device.State.Intensity = 0.2 |
|
||||
} |
|
||||
|
|
||||
device.ID = i + 1 |
|
||||
bridge.Update(device) |
|
||||
} |
|
||||
|
cv, _ := models.ParseColorValue("rgb:#fff") |
||||
|
hs, _ := cv.ToHS() |
||||
|
log.Println(cv.String()) |
||||
|
log.Println(hs.String()) |
||||
|
xy, _ := hs.ToXY() |
||||
|
log.Println(xy.String()) |
||||
|
} |
||||
|
|
||||
err = bridge.Run(context.Background(), ch) |
|
||||
log.Println(err) |
|
||||
|
func toJSON(v interface{}) string { |
||||
|
j, _ := json.Marshal(v) |
||||
|
return string(j) |
||||
} |
} |
@ -0,0 +1,17 @@ |
|||||
|
package models |
||||
|
|
||||
|
import "github.com/lucasb-eyer/go-colorful" |
||||
|
|
||||
|
type ColorHS struct { |
||||
|
Hue float64 `json:"hue"` |
||||
|
Sat float64 `json:"sat"` |
||||
|
} |
||||
|
|
||||
|
func (hs ColorHS) ToXY() ColorXY { |
||||
|
return hs.ToRGB().ToXY() |
||||
|
} |
||||
|
|
||||
|
func (hs ColorHS) ToRGB() ColorRGB { |
||||
|
c := colorful.Hsv(hs.Hue, hs.Sat, 1) |
||||
|
return ColorRGB{Red: c.R, Green: c.G, Blue: c.B} |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
package models |
||||
|
|
||||
|
import "github.com/lucasb-eyer/go-colorful" |
||||
|
|
||||
|
type ColorRGB struct { |
||||
|
Red float64 `json:"red"` |
||||
|
Green float64 `json:"green"` |
||||
|
Blue float64 `json:"blue"` |
||||
|
} |
||||
|
|
||||
|
func (rgb ColorRGB) AtIntensity(intensity float64) ColorRGB { |
||||
|
hue, sat, _ := colorful.Color{R: rgb.Red, G: rgb.Green, B: rgb.Blue}.Hsv() |
||||
|
hsv2 := colorful.Hsv(hue, sat, intensity) |
||||
|
return ColorRGB{Red: hsv2.R, Green: hsv2.G, Blue: hsv2.B} |
||||
|
} |
||||
|
|
||||
|
func (rgb ColorRGB) ToHS() ColorHS { |
||||
|
hue, sat, _ := colorful.Color{R: rgb.Red, G: rgb.Green, B: rgb.Blue}.Hsv() |
||||
|
return ColorHS{Hue: hue, Sat: sat} |
||||
|
} |
||||
|
|
||||
|
func (rgb ColorRGB) ToXY() ColorXY { |
||||
|
x, y, z := (colorful.Color{R: rgb.Red, G: rgb.Green, B: rgb.Blue}).Xyz() |
||||
|
|
||||
|
return ColorXY{ |
||||
|
X: x / (x + y + z), |
||||
|
Y: y / (x + y + z), |
||||
|
} |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
-- +goose Up |
||||
|
-- +goose StatementBegin |
||||
|
TRUNCATE color_preset; |
||||
|
-- +goose StatementEnd |
||||
|
|
||||
|
-- +goose Down |
||||
|
-- +goose StatementBegin |
||||
|
SELECT 'down SQL query'; |
||||
|
-- +goose StatementEnd |
@ -0,0 +1,9 @@ |
|||||
|
-- +goose Up |
||||
|
-- +goose StatementBegin |
||||
|
ALTER TABLE color_preset ADD COLUMN value VARCHAR(255) NOT NULL DEFAULT 'hs:0,0'; |
||||
|
-- +goose StatementEnd |
||||
|
|
||||
|
-- +goose Down |
||||
|
-- +goose StatementBegin |
||||
|
ALTER TABLE color_preset DROP COLUMN value; |
||||
|
-- +goose StatementEnd |
@ -0,0 +1,9 @@ |
|||||
|
-- +goose Up |
||||
|
-- +goose StatementBegin |
||||
|
ALTER TABLE device_state ADD COLUMN color VARCHAR(255) NOT NULL DEFAULT 'hs:0,0'; |
||||
|
-- +goose StatementEnd |
||||
|
|
||||
|
-- +goose Down |
||||
|
-- +goose StatementBegin |
||||
|
ALTER TABLE device_state DROP COLUMN IF EXISTS color; |
||||
|
-- +goose StatementEnd |
Write
Preview
Loading…
Cancel
Save
Reference in new issue