chore: collect tickers

This commit is contained in:
andig 2024-03-17 17:39:27 +01:00
parent b86fbfa76e
commit 6fd387d4f3
17 changed files with 35 additions and 18 deletions

View file

@ -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)
}

View file

@ -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()

View file

@ -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)

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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)

View file

@ -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)

View file

@ -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 {

View file

@ -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"`

View file

@ -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 {

View file

@ -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

View file

@ -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 {

View file

@ -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)

View file

@ -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 {

View file

@ -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 {