From d12e39d6fa44986fdcfeca4c8b2e2822586e7b65 Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Wed, 18 Sep 2024 22:26:40 +0200 Subject: [PATCH] display msg from home assistant --- img.go | 33 ++++++++++++++++++++++----------- run_darwin_arm64.go | 3 ++- run_linux_arm64.go | 1 + 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/img.go b/img.go index 34f25bf..1c6c246 100644 --- a/img.go +++ b/img.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/Crocmagnon/display-epaper/epd" "github.com/Crocmagnon/display-epaper/fete" + "github.com/Crocmagnon/display-epaper/home_assistant" "github.com/Crocmagnon/display-epaper/quotes" "github.com/Crocmagnon/display-epaper/transports" "github.com/Crocmagnon/display-epaper/weather" @@ -29,23 +30,18 @@ const ( rightX = 530 ) -func getImg( - ctx context.Context, - nowFunc func() time.Time, - transportsClient *transports.Client, - feteClient *fete.Client, - weatherClient *weather.Client, -) (*image.RGBA, error) { +func getImg(ctx context.Context, nowFunc func() time.Time, transportsClient *transports.Client, feteClient *fete.Client, weatherClient *weather.Client, hassClient *home_assistant.Client) (*image.RGBA, error) { var ( bus *transports.Passages tram *transports.Passages velovRoc *transports.Station fetes *fete.Fete wthr *weather.Prevision + msg string ) wg := &sync.WaitGroup{} - wg.Add(5) + wg.Add(6) go func() { defer wg.Done() @@ -112,8 +108,19 @@ func getImg( log.Println("error getting weather:", err) } }() + go func() { + defer wg.Done() - quote := quotes.GetQuote(nowFunc()) + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + + var err error + + msg, err = hassClient.GetState(ctx, "input_text.e_paper_message") + if err != nil { + log.Println("error getting hass message:", err) + } + }() img := newWhite() @@ -125,18 +132,22 @@ func getImg( wg.Wait() + if msg == "" { + msg = quotes.GetQuote(nowFunc()) + } + drawTCL(gc, bus, 55) drawTCL(gc, tram, 190) drawVelov(gc, velovRoc, 350) drawDate(gc, nowFunc()) drawFete(gc, fetes) drawWeather(gc, wthr) - drawQuote(gc, quote) + drawMsg(gc, msg) return img, nil } -func drawQuote(gc *draw2dimg.GraphicContext, quote string) { +func drawMsg(gc *draw2dimg.GraphicContext, quote string) { text(gc, quote, 15, leftX, 450) } diff --git a/run_darwin_arm64.go b/run_darwin_arm64.go index 266a48f..d93b788 100644 --- a/run_darwin_arm64.go +++ b/run_darwin_arm64.go @@ -18,7 +18,7 @@ func run( transportsClient *transports.Client, feteClient *fete.Client, weatherClient *weather.Client, - _ *home_assistant.Client, + hassClient *home_assistant.Client, ) error { img, err := getImg( ctx, @@ -32,6 +32,7 @@ func run( transportsClient, feteClient, weatherClient, + hassClient, ) if err != nil { log.Fatal(err) diff --git a/run_linux_arm64.go b/run_linux_arm64.go index fcd0dd3..19714b1 100644 --- a/run_linux_arm64.go +++ b/run_linux_arm64.go @@ -87,6 +87,7 @@ func loop( transportsClient, feteClient, weatherClient, + hassClient, ) if err != nil { return nil, fmt.Errorf("getting black: %w", err)