refactor tcl times fetching

This commit is contained in:
Gabriel Augendre 2024-12-16 23:25:45 +01:00
parent 16223f2135
commit 10bbeae567

75
img.go
View file

@ -30,15 +30,9 @@ const (
func getImg(ctx context.Context, nowFunc func() time.Time, weatherClient *weather.Client, hassClient *home_assistant.Client) (*image.RGBA, error) { func getImg(ctx context.Context, nowFunc func() time.Time, weatherClient *weather.Client, hassClient *home_assistant.Client) (*image.RGBA, error) {
var ( var (
bus37_1 time.Time bus37 []time.Time
bus37_2 time.Time busC17 []time.Time
bus37_3 time.Time tramT1 []time.Time
busC17_1 time.Time
busC17_2 time.Time
busC17_3 time.Time
tramT1_1 time.Time
tramT1_2 time.Time
tramT1_3 time.Time
velovRocBikes string velovRocBikes string
velovRocStands string velovRocStands string
feteName string feteName string
@ -55,47 +49,9 @@ func getImg(ctx context.Context, nowFunc func() time.Time, weatherClient *weathe
ctx, cancel := context.WithTimeout(ctx, 30*time.Second) ctx, cancel := context.WithTimeout(ctx, 30*time.Second)
defer cancel() defer cancel()
var err error bus37 = getTimeStates(ctx, hassClient, "sensor.tcl_37_1", "sensor.tcl_37_2", "sensor.tcl_37_3")
busC17 = getTimeStates(ctx, hassClient, "sensor.tcl_c17_1", "sensor.tcl_c17_2", "sensor.tcl_c17_3")
bus37_1, err = hassClient.GetTimeState(ctx, "sensor.tcl_37_1") tramT1 = getTimeStates(ctx, hassClient, "sensor.tcl_t1_1", "sensor.tcl_t1_2", "sensor.tcl_t1_3")
if err != nil {
slog.ErrorContext(ctx, "error getting 37_1", "err", err)
}
bus37_2, err = hassClient.GetTimeState(ctx, "sensor.tcl_37_2")
if err != nil {
slog.ErrorContext(ctx, "error getting 37_2", "err", err)
}
bus37_3, err = hassClient.GetTimeState(ctx, "sensor.tcl_37_3")
if err != nil {
slog.ErrorContext(ctx, "error getting 37_3", "err", err)
}
busC17_1, err = hassClient.GetTimeState(ctx, "sensor.tcl_c17_1")
if err != nil {
slog.ErrorContext(ctx, "error getting C17_1", "err", err)
}
busC17_2, err = hassClient.GetTimeState(ctx, "sensor.tcl_c17_2")
if err != nil {
slog.ErrorContext(ctx, "error getting C17_2", "err", err)
}
busC17_3, err = hassClient.GetTimeState(ctx, "sensor.tcl_c17_3")
if err != nil {
slog.ErrorContext(ctx, "error getting C17_3", "err", err)
}
tramT1_1, err = hassClient.GetTimeState(ctx, "sensor.tcl_t1_1")
if err != nil {
slog.ErrorContext(ctx, "error getting T1_1", "err", err)
}
tramT1_2, err = hassClient.GetTimeState(ctx, "sensor.tcl_t1_2")
if err != nil {
slog.ErrorContext(ctx, "error getting T1_2", "err", err)
}
tramT1_3, err = hassClient.GetTimeState(ctx, "sensor.tcl_t1_3")
if err != nil {
slog.ErrorContext(ctx, "error getting T1_3", "err", err)
}
}() }()
go func() { go func() {
defer wg.Done() defer wg.Done()
@ -173,9 +129,9 @@ func getImg(ctx context.Context, nowFunc func() time.Time, weatherClient *weathe
wg.Wait() wg.Wait()
drawTCL(gc, "37", []time.Time{bus37_1, bus37_2, bus37_3}, nowFunc(), rightX, 45) drawTCL(gc, "37", bus37, nowFunc(), rightX, 45)
drawTCL(gc, "C17", []time.Time{busC17_1, busC17_2, busC17_3}, nowFunc(), rightX+120, 45) drawTCL(gc, "C17", busC17, nowFunc(), rightX+120, 45)
drawTCL(gc, "T1", []time.Time{tramT1_1, tramT1_2, tramT1_3}, nowFunc(), rightX+120, 205) drawTCL(gc, "T1", tramT1, nowFunc(), rightX+120, 205)
drawVelov(gc, "Rocard Octavie", velovRocBikes, velovRocStands, 365) drawVelov(gc, "Rocard Octavie", velovRocBikes, velovRocStands, 365)
drawDate(gc, nowFunc()) drawDate(gc, nowFunc())
drawFete(gc, feteName) drawFete(gc, feteName)
@ -185,6 +141,19 @@ func getImg(ctx context.Context, nowFunc func() time.Time, weatherClient *weathe
return img, nil return img, nil
} }
func getTimeStates(ctx context.Context, hassClient *home_assistant.Client, entityIDs ...string) []time.Time {
var times []time.Time
for _, entityID := range entityIDs {
t, err := hassClient.GetTimeState(ctx, entityID)
if err != nil {
slog.ErrorContext(ctx, "error getting time state", "err", err, "entityID", entityID)
}
times = append(times, t)
}
return times
}
func drawMsg(gc *draw2dimg.GraphicContext, quote string) { func drawMsg(gc *draw2dimg.GraphicContext, quote string) {
text(gc, quote, 15, leftX, 450, fonts.Italic) text(gc, quote, 15, leftX, 450, fonts.Italic)
} }