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) } }