From 6fd387d4f3b79fe90c84f96a767ebc764031cb53 Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 17 Mar 2024 17:39:27 +0100 Subject: [PATCH] chore: collect tickers --- charger/mennekes-compact.go | 3 ++- charger/ocpp/connector.go | 3 ++- server/updater/watch.go | 3 ++- tariff/amber.go | 3 ++- tariff/awattar.go | 3 ++- tariff/edf-tempo.go | 3 ++- tariff/electricitymaps.go | 3 ++- tariff/elering.go | 3 ++- tariff/energinet.go | 3 ++- tariff/entsoe.go | 3 ++- tariff/groupe-e.go | 3 ++- tariff/gruenstromindex.go | 3 ++- tariff/ngeso.go | 3 ++- tariff/octopus.go | 3 ++- tariff/pun.go | 5 +++-- tariff/smartenergy.go | 3 ++- tariff/tibber.go | 3 ++- 17 files changed, 35 insertions(+), 18 deletions(-) diff --git a/charger/mennekes-compact.go b/charger/mennekes-compact.go index b35b4ebf6..b713d0cc8 100644 --- a/charger/mennekes-compact.go +++ b/charger/mennekes-compact.go @@ -116,7 +116,8 @@ func NewMennekesCompact(uri, device, comset string, baudrate int, proto modbus.P } func (wb *MennekesCompact) heartbeat(timeout time.Duration) { - for ; true; <-time.Tick(timeout) { + tick := time.NewTicker(timeout) + for ; true; <-tick.C { if _, err := wb.conn.WriteSingleRegister(mennekesRegHeartbeat, mennekesHeartbeatToken); err != nil { wb.log.ERROR.Println("heartbeat:", err) } diff --git a/charger/ocpp/connector.go b/charger/ocpp/connector.go index 3dc4e6aa6..9ffbd1948 100644 --- a/charger/ocpp/connector.go +++ b/charger/ocpp/connector.go @@ -73,7 +73,8 @@ func (conn *Connector) TriggerMessageRequest(feature remotetrigger.MessageTrigge // WatchDog triggers meter values messages if older than timeout. // Must be wrapped in a goroutine. func (conn *Connector) WatchDog(timeout time.Duration) { - for ; true; <-time.Tick(timeout) { + tick := time.NewTicker(timeout) + for ; true; <-tick.C { conn.mu.Lock() update := conn.txnId != 0 && conn.clock.Since(conn.meterUpdated) > timeout conn.mu.Unlock() diff --git a/server/updater/watch.go b/server/updater/watch.go index e6978d64f..41995d9f2 100644 --- a/server/updater/watch.go +++ b/server/updater/watch.go @@ -28,7 +28,8 @@ func (u *watch) Send(key string, val interface{}) { } func (u *watch) watchReleases(installed string, out chan *github.RepositoryRelease) { - for ; true; <-time.Tick(6 * time.Hour) { + tick := time.NewTicker(6 * time.Hour) + for ; true; <-tick.C { rel, err := u.findReleaseUpdate(installed) if err != nil { u.log.ERROR.Printf("version check failed: %v (installed: %s)", err, installed) diff --git a/tariff/amber.go b/tariff/amber.go index 4c3bc6126..6b2824503 100644 --- a/tariff/amber.go +++ b/tariff/amber.go @@ -84,7 +84,8 @@ func (t *Amber) run(done chan error) { var once sync.Once bo := newBackoff() - for ; true; <-time.Tick(time.Minute) { + tick := time.NewTicker(time.Minute) + for ; true; <-tick.C { var res []amber.PriceInfo if err := backoff.Retry(func() error { diff --git a/tariff/awattar.go b/tariff/awattar.go index 2175629d8..02344e737 100644 --- a/tariff/awattar.go +++ b/tariff/awattar.go @@ -58,7 +58,8 @@ func (t *Awattar) run(done chan error) { bo := newBackoff() client := request.NewHelper(t.log) - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res awattar.Prices if err := backoff.Retry(func() error { diff --git a/tariff/edf-tempo.go b/tariff/edf-tempo.go index 6ea38b08b..812e6f4e6 100644 --- a/tariff/edf-tempo.go +++ b/tariff/edf-tempo.go @@ -104,7 +104,8 @@ func (t *EdfTempo) run(done chan error) { var once sync.Once bo := newBackoff() - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res struct { Data struct { Values []struct { diff --git a/tariff/electricitymaps.go b/tariff/electricitymaps.go index 574923e98..43ccecff5 100644 --- a/tariff/electricitymaps.go +++ b/tariff/electricitymaps.go @@ -82,7 +82,8 @@ func (t *ElectricityMaps) run(done chan error) { bo := newBackoff() uri := fmt.Sprintf("%s/carbon-intensity/forecast?zone=%s", t.uri, t.zone) - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res CarbonIntensity if err := backoff.Retry(func() error { diff --git a/tariff/elering.go b/tariff/elering.go index a3d42d9d1..7ff5bc73e 100644 --- a/tariff/elering.go +++ b/tariff/elering.go @@ -62,7 +62,8 @@ func (t *Elering) run(done chan error) { client := request.NewHelper(t.log) bo := newBackoff() - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res elering.NpsPrice ts := time.Now().Truncate(time.Hour) diff --git a/tariff/energinet.go b/tariff/energinet.go index 8b4f94cc5..eac20df90 100644 --- a/tariff/energinet.go +++ b/tariff/energinet.go @@ -61,7 +61,8 @@ func (t *Energinet) run(done chan error) { client := request.NewHelper(t.log) bo := newBackoff() - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res energinet.Prices ts := time.Now().Truncate(time.Hour) diff --git a/tariff/entsoe.go b/tariff/entsoe.go index 7394e1562..db2c63409 100644 --- a/tariff/entsoe.go +++ b/tariff/entsoe.go @@ -89,7 +89,8 @@ func (t *Entsoe) run(done chan error) { bo := newBackoff() // Data updated by ESO every half hour, but we only need data every hour to stay current. - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var tr entsoe.PublicationMarketDocument if err := backoff.Retry(func() error { diff --git a/tariff/groupe-e.go b/tariff/groupe-e.go index 5df5b1281..6c13d9537 100644 --- a/tariff/groupe-e.go +++ b/tariff/groupe-e.go @@ -44,7 +44,8 @@ func (t *GroupeE) run(done chan error) { bo := newBackoff() client := request.NewHelper(t.log) - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res []struct { StartTimestamp time.Time `json:"start_timestamp"` EndTimestamp time.Time `json:"end_timestamp"` diff --git a/tariff/gruenstromindex.go b/tariff/gruenstromindex.go index fa027ce22..abccf6956 100644 --- a/tariff/gruenstromindex.go +++ b/tariff/gruenstromindex.go @@ -92,7 +92,8 @@ func (t *GrünStromIndex) run(done chan error) { bo := newBackoff() uri := fmt.Sprintf("https://api.corrently.io/v2.0/gsi/prediction?zip=%s", t.zip) - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res gsiForecast err := backoff.Retry(func() error { diff --git a/tariff/ngeso.go b/tariff/ngeso.go index bd51d4721..9b47b8dbb 100644 --- a/tariff/ngeso.go +++ b/tariff/ngeso.go @@ -75,7 +75,8 @@ func (t *Ngeso) run(done chan error) { } // Data updated by ESO every half hour, but we only need data every hour to stay current. - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { res, err := backoff.RetryWithData(func() (ngeso.CarbonForecastResponse, error) { res, err := tReq.DoRequest(client) var se request.StatusError diff --git a/tariff/octopus.go b/tariff/octopus.go index 35d1c8bd9..a1b31835a 100644 --- a/tariff/octopus.go +++ b/tariff/octopus.go @@ -62,7 +62,8 @@ func (t *Octopus) run(done chan error) { client := request.NewHelper(t.log) bo := newBackoff() - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res octopus.UnitRates if err := backoff.Retry(func() error { diff --git a/tariff/pun.go b/tariff/pun.go index 2b6eb75a2..9cc720a10 100644 --- a/tariff/pun.go +++ b/tariff/pun.go @@ -81,7 +81,8 @@ func (t *Pun) run(done chan error) { var once sync.Once bo := newBackoff() - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var today api.Rates if err := backoff.Retry(func() error { var err error @@ -109,7 +110,7 @@ func (t *Pun) run(done chan error) { continue } - //merge today and tomorrow data + // merge today and tomorrow data data := append(today, tomorrow...) t.data.Set(data) diff --git a/tariff/smartenergy.go b/tariff/smartenergy.go index 20fbc65a6..de532ba51 100644 --- a/tariff/smartenergy.go +++ b/tariff/smartenergy.go @@ -51,7 +51,8 @@ func (t *SmartEnergy) run(done chan error) { client := request.NewHelper(t.log) bo := newBackoff() - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res smartenergy.Prices if err := backoff.Retry(func() error { diff --git a/tariff/tibber.go b/tariff/tibber.go index c6fe7145d..b422ebb4b 100644 --- a/tariff/tibber.go +++ b/tariff/tibber.go @@ -78,7 +78,8 @@ func (t *Tibber) run(done chan error) { "id": graphql.ID(t.homeID), } - for ; true; <-time.Tick(time.Hour) { + tick := time.NewTicker(time.Hour) + for ; true; <-tick.C { var res struct { Viewer struct { Home struct {