ha-rgb-screen/cmd/main.go
Simon Vieille 4e84cc2ad4
feat: use input entity to enable the service
feat: add new params

BREAKING CHANGE: new cli params
2026-01-12 20:04:22 +01:00

66 lines
1.3 KiB
Go

package main
import (
"log"
"os"
"time"
"gitnet.fr/deblan/ha-rgb-screen/internal/color"
"gitnet.fr/deblan/ha-rgb-screen/internal/config"
"gitnet.fr/deblan/ha-rgb-screen/internal/ha"
"gitnet.fr/deblan/ha-rgb-screen/internal/screen"
)
func main() {
params := config.GetConfig()
if !params.IsValid() {
params.Usage()
os.Exit(1)
}
s := screen.NewScreen(params)
client := ha.NewClient(params)
var prevValue color.RGB
for {
enabled, err := client.IsAmbianceEnabled()
if err != nil {
log.Printf("[error] %s\n", err.Error())
time.Sleep(3 * time.Second)
continue
}
if !enabled {
if params.Debug {
log.Print("[debug] Ambiance is disabled\n")
time.Sleep(3 * time.Second)
continue
}
}
capture, err := s.Capture()
if err == nil {
nextValue := color.GetRgbAverage(capture)
delta := color.Delta(nextValue, prevValue)
if params.Debug {
log.Printf("[debug] Delta=%f Prev=%f Next=%f \n", delta, prevValue, nextValue)
}
if delta > params.Delta {
prevValue = nextValue
if err := client.UpdateLight(nextValue); err != nil && !params.Debug {
log.Printf("[error] %s\n", err.Error())
}
}
} else {
log.Fatalf("[fatal error]: %s", err.Error())
}
time.Sleep(time.Duration(params.Delay) * time.Millisecond)
}
}