From a85fcc425b5f2df95ec4ce8294dcd29fed0b925a Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 5 Dec 2024 18:10:51 +0100 Subject: [PATCH] chore: use time.Tick (#17601) --- charger/easee.go | 5 ++--- core/site.go | 5 ++--- hems/semp/semp.go | 6 ++---- 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/ostrom.go | 6 ++---- tariff/pun.go | 3 +-- tariff/smartenergy.go | 3 +-- tariff/tariff.go | 3 +-- tariff/tibber.go | 3 +-- 19 files changed, 23 insertions(+), 44 deletions(-) diff --git a/charger/easee.go b/charger/easee.go index ab5c519ba0..11a72576a9 100644 --- a/charger/easee.go +++ b/charger/easee.go @@ -342,12 +342,11 @@ func (c *Easee) ProductUpdate(i json.RawMessage) { c.stopTicker = make(chan struct{}) go func() { - ticker := time.NewTicker(5 * time.Minute) - for { + for tick := time.Tick(5 * time.Minute); ; { select { case <-c.stopTicker: return - case <-ticker.C: + case <-tick: c.requestLifetimeEnergyUpdate() } } diff --git a/core/site.go b/core/site.go index 8e4a4388cc..1e1b2df0d2 100644 --- a/core/site.go +++ b/core/site.go @@ -1082,12 +1082,11 @@ func (site *Site) Run(stopC chan struct{}, interval time.Duration) { loadpointChan := make(chan updater) go site.loopLoadpoints(loadpointChan) - ticker := time.NewTicker(interval) site.update(<-loadpointChan) // start immediately - for { + for tick := time.Tick(interval); ; { select { - case <-ticker.C: + case <-tick: site.update(<-loadpointChan) case lp := <-site.lpUpdateChan: site.update(lp) diff --git a/hems/semp/semp.go b/hems/semp/semp.go index c9e5c73b19..5445a6059d 100644 --- a/hems/semp/semp.go +++ b/hems/semp/semp.go @@ -139,12 +139,10 @@ func (s *SEMP) Run() { ads = append(ads, ad) } - ticker := time.NewTicker(maxAge * time.Second / 2) - ANNOUNCE: - for { + for tick := time.Tick(maxAge * time.Second / 2); ; { select { - case <-ticker.C: + case <-tick: for _, ad := range ads { if err := ad.Alive(); err != nil { s.log.ERROR.Println(err) diff --git a/tariff/amber.go b/tariff/amber.go index 4d099ead0c..b60748bc63 100644 --- a/tariff/amber.go +++ b/tariff/amber.go @@ -83,8 +83,7 @@ func NewAmberFromConfig(other map[string]interface{}) (api.Tariff, error) { func (t *Amber) run(done chan error) { var once sync.Once - tick := time.NewTicker(time.Minute) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res []amber.PriceInfo uri := fmt.Sprintf("%s&endDate=%s", t.uri, time.Now().AddDate(0, 0, 2).Format("2006-01-02")) diff --git a/tariff/awattar.go b/tariff/awattar.go index d2c48418e2..7a6e851022 100644 --- a/tariff/awattar.go +++ b/tariff/awattar.go @@ -62,8 +62,7 @@ func (t *Awattar) run(done chan error) { client := request.NewHelper(t.log) - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res awattar.Prices // Awattar publishes prices for next day around 13:00 CET/CEST, so up to 35h of price data are available diff --git a/tariff/edf-tempo.go b/tariff/edf-tempo.go index 6d1de4a83a..46f50ec0c1 100644 --- a/tariff/edf-tempo.go +++ b/tariff/edf-tempo.go @@ -107,8 +107,7 @@ func (t *EdfTempo) RefreshToken(_ *oauth2.Token) (*oauth2.Token, error) { func (t *EdfTempo) run(done chan error) { var once sync.Once - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res struct { Data struct { Values []struct { diff --git a/tariff/electricitymaps.go b/tariff/electricitymaps.go index 6483bef41d..8b62e6ac20 100644 --- a/tariff/electricitymaps.go +++ b/tariff/electricitymaps.go @@ -82,8 +82,7 @@ func (t *ElectricityMaps) run(done chan error) { uri := fmt.Sprintf("%s/carbon-intensity/forecast?zone=%s", t.uri, t.zone) - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res CarbonIntensity if err := backoff.Retry(func() error { diff --git a/tariff/elering.go b/tariff/elering.go index 4f53637cde..a3b834de58 100644 --- a/tariff/elering.go +++ b/tariff/elering.go @@ -65,8 +65,7 @@ func (t *Elering) run(done chan error) { var once sync.Once client := request.NewHelper(t.log) - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res elering.NpsPrice ts := time.Now().Truncate(time.Hour) diff --git a/tariff/energinet.go b/tariff/energinet.go index 46c74bca78..05fc0030f8 100644 --- a/tariff/energinet.go +++ b/tariff/energinet.go @@ -64,8 +64,7 @@ func (t *Energinet) run(done chan error) { var once sync.Once client := request.NewHelper(t.log) - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res energinet.Prices ts := time.Now().Truncate(time.Hour) diff --git a/tariff/entsoe.go b/tariff/entsoe.go index 13959bd88e..8bbc58ef8c 100644 --- a/tariff/entsoe.go +++ b/tariff/entsoe.go @@ -90,8 +90,7 @@ func (t *Entsoe) run(done chan error) { var once sync.Once // Data updated by ESO every half hour, but we only need data every hour to stay current. - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var tr entsoe.PublicationMarketDocument if err := backoff.Retry(func() error { diff --git a/tariff/groupe-e.go b/tariff/groupe-e.go index c708e38014..41c95f9eb5 100644 --- a/tariff/groupe-e.go +++ b/tariff/groupe-e.go @@ -42,8 +42,7 @@ func (t *GroupeE) run(done chan error) { client := request.NewHelper(t.log) - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { 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 d954a8f409..23eff962dd 100644 --- a/tariff/gruenstromindex.go +++ b/tariff/gruenstromindex.go @@ -92,8 +92,7 @@ func (t *GrünStromIndex) run(done chan error) { uri := fmt.Sprintf("https://api.corrently.io/v2.0/gsi/prediction?zip=%s", t.zip) - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res gsiForecast err := backoff.Retry(func() error { diff --git a/tariff/ngeso.go b/tariff/ngeso.go index 9df5b24d5c..d80282f671 100644 --- a/tariff/ngeso.go +++ b/tariff/ngeso.go @@ -73,8 +73,7 @@ func (t *Ngeso) run(done chan error) { } // Data updated by ESO every half hour, but we only need data every hour to stay current. - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { res, err := backoff.RetryWithData(func() (ngeso.CarbonForecastResponse, error) { res, err := tReq.DoRequest(client) return res, backoffPermanentError(err) diff --git a/tariff/octopus.go b/tariff/octopus.go index 0525ea6666..a1d053c170 100644 --- a/tariff/octopus.go +++ b/tariff/octopus.go @@ -108,8 +108,7 @@ func (t *Octopus) run(done chan error) { } // TODO tick every 15 minutes if GraphQL is available to poll for Intelligent slots. - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res octoRest.UnitRates if err := backoff.Retry(func() error { diff --git a/tariff/ostrom.go b/tariff/ostrom.go index 8ef307a241..24d56fbd50 100644 --- a/tariff/ostrom.go +++ b/tariff/ostrom.go @@ -176,8 +176,7 @@ func (t *Ostrom) RefreshToken(_ *oauth2.Token) (*oauth2.Token, error) { func (t *Ostrom) runStatic(done chan error) { var once sync.Once - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { price, err := t.getFixedPrice() if err != nil { once.Do(func() { done <- err }) @@ -205,8 +204,7 @@ func (t *Ostrom) runStatic(done chan error) { func (t *Ostrom) run(done chan error) { var once sync.Once - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res ostrom.Prices start := now.BeginningOfDay() diff --git a/tariff/pun.go b/tariff/pun.go index 4f7345c004..f9fc1428bc 100644 --- a/tariff/pun.go +++ b/tariff/pun.go @@ -75,8 +75,7 @@ func NewPunFromConfig(other map[string]interface{}) (api.Tariff, error) { func (t *Pun) run(done chan error) { var once sync.Once - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var today api.Rates if err := backoff.Retry(func() error { var err error diff --git a/tariff/smartenergy.go b/tariff/smartenergy.go index 4e2a1d7cc2..3e192a58b4 100644 --- a/tariff/smartenergy.go +++ b/tariff/smartenergy.go @@ -54,8 +54,7 @@ func (t *SmartEnergy) run(done chan error) { var once sync.Once client := request.NewHelper(t.log) - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res smartenergy.Prices if err := backoff.Retry(func() error { diff --git a/tariff/tariff.go b/tariff/tariff.go index f45a171c23..2be698343a 100644 --- a/tariff/tariff.go +++ b/tariff/tariff.go @@ -91,8 +91,7 @@ func NewConfigurableFromConfig(ctx context.Context, other map[string]interface{} func (t *Tariff) run(forecastG func() (string, error), done chan error) { var once sync.Once - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var data api.Rates if err := backoff.Retry(func() error { s, err := forecastG() diff --git a/tariff/tibber.go b/tariff/tibber.go index f303950141..155d10829b 100644 --- a/tariff/tibber.go +++ b/tariff/tibber.go @@ -81,8 +81,7 @@ func (t *Tibber) run(done chan error) { "id": graphql.ID(t.homeID), } - tick := time.NewTicker(time.Hour) - for ; true; <-tick.C { + for tick := time.Tick(time.Hour); ; <-tick { var res struct { Viewer struct { Home struct {