From 00a4849f09a050cba163e90b2cfd483684139215 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann Date: Thu, 31 Mar 2022 20:59:59 +0200 Subject: [PATCH] Skip rows without timestamp when parsing reported errors The table with errors encountered by the heat pump controller may contain empty rows, denoted by "----". Fixes #5. --- luxws-exporter/collector.go | 6 ++++-- luxws-exporter/collector_test.go | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/luxws-exporter/collector.go b/luxws-exporter/collector.go index f60abc4..6ebc7b4 100644 --- a/luxws-exporter/collector.go +++ b/luxws-exporter/collector.go @@ -241,11 +241,13 @@ func (c *collector) collectTimetable(ch chan<- prometheus.Metric, desc *promethe latest := map[string]time.Time{} for _, item := range group.Items { - if item.Value == nil { + tsRaw := normalizeSpace(item.Name) + + if item.Value == nil || strings.Trim(tsRaw, "-") == "" { continue } - ts, err := c.terms.ParseTimestamp(item.Name, c.loc) + ts, err := c.terms.ParseTimestamp(tsRaw, c.loc) if err != nil { return err } diff --git a/luxws-exporter/collector_test.go b/luxws-exporter/collector_test.go index 66f67d4..91239ac 100644 --- a/luxws-exporter/collector_test.go +++ b/luxws-exporter/collector_test.go @@ -364,6 +364,27 @@ luxws_latest_error{reason=""} 0 # TYPE luxws_latest_error gauge luxws_latest_error{reason="aaa"} 1296633600 luxws_latest_error{reason="bbb"} 1396566000 +`, + }, + { + name: "latest error with empty rows", + fn: c.collectLatestError, + input: &luxwsclient.ContentRoot{ + Items: []luxwsclient.ContentItem{ + { + Name: "Fehlerspeicher", + Items: []luxwsclient.ContentItem{ + {Name: "----", Value: luxwsclient.String("placeholder")}, + {Name: "08.11.21 21:40:09", Value: luxwsclient.String("text")}, + {Name: "----", Value: luxwsclient.String("----")}, + }, + }, + }, + }, + want: ` +# HELP luxws_latest_error Latest error +# TYPE luxws_latest_error gauge +luxws_latest_error{reason="text"} 1636407609 `, }, {