UX-11: the meter WARNING names the limit only, as 'over 30 seconds'
checks / unit (pull_request) Successful in 9m4s
infra-pin / fresh (pull_request) Successful in 2s

TEST-23 showed 'No meter reading for 30 seconds, over the limit of 30
seconds': the age is 30.4 s, which rounds to the limit. The limit alone is
always true at the moment the line is logged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LyR88rXETvwhTgx6yHE39p
This commit is contained in:
glenn schrooyen
2026-09-27 13:49:17 +02:00
co-authored by Claude Opus 5.5
parent 29837dfaa7
commit c628099e69
2 changed files with 4 additions and 6 deletions
+2 -3
View File
@@ -1916,9 +1916,8 @@ class Controller:
if (self.p1.stale and not self._meter_quiet_logged
and self.p1.published_age_s > self.p1.max_age_s):
self._meter_quiet_logged = True
_LOG.warning("No meter reading for %s, over the limit of %s, "
"so control waits and then sets the battery to "
"0 W.", messages.seconds(self.p1.published_age_s),
_LOG.warning("No meter reading for over %s, so control "
"waits and then sets the battery to 0 W.",
messages.seconds(self.p1.max_age_s))
elif not self.p1.stale and self._meter_quiet_logged:
self._meter_quiet_logged = False
+2 -3
View File
@@ -877,7 +877,6 @@ DATA = {
"main.py:messages.when(brussels(self.tariff_at))",
"main.py:messages.duration(TARIFF_MAX_AGE_S)",
"main.py:messages.count(len(targets), 'inverter')",
"main.py:messages.seconds(self.p1.published_age_s)",
"main.py:messages.seconds(self.p1.max_age_s)",
# maintenance.py, mqtt.py, p1.py
"maintenance.py:phase", "mqtt.py:err", "p1.py:err", "p1.py:self.host",
@@ -1708,8 +1707,8 @@ _mq_info = [r.getMessage() for r in _mq if r.levelno == logging.INFO]
check(f"a meter that goes quiet logs one WARNING per episode, not per cycle, "
f"and one INFO when readings return ({_mq_warn}, {_mq_info})",
len(_mq_warn) == 2 and _mq_info == ["Meter readings are back."]
and _mq_warn[0].startswith("No meter reading for 40 seconds, over the "
"limit of 30 seconds")
and _mq_warn[0] == "No meter reading for over 30 seconds, so control "
"waits and then sets the battery to 0 W."
and len(words(_mq_warn[0])) <= LINE_WORDS)
# UX-11 item 1: a state file saved before UX-11 holds the long reasons, and