66 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|