Add TemperatureRecords module (#1814)

Adds the temp_record module, exposing thermostat temperature history
oldest first, converting missing readings to None, and refreshing every
15 minutes. Includes registration, exports, its missing-fixture
fallback, and module tests.
This commit is contained in:
ogent
2026-10-31 23:34:58 +00:00
committed by GitHub
parent 36f72ca753
commit df343f9d7d
5 changed files with 65 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
"""Implementation of the thermostat temperature records module."""
from __future__ import annotations
from datetime import timedelta
from ..smartmodule import SmartModule
#: Value the device uses for slots without a reading.
NO_READING = -1000
class TemperatureRecords(SmartModule):
"""Implementation of the temperature history of a thermostat.
The device keeps a reading for every 15 minutes of the last 24 hours,
ordered oldest first, with the most recent reading last.
"""
REQUIRED_COMPONENT = "temp_record"
QUERY_GETTER_NAME = "get_temperature_records"
INTERVAL = timedelta(minutes=15)
MINIMUM_UPDATE_INTERVAL_SECS = 15 * 60
MINIMUM_HUB_CHILD_UPDATE_INTERVAL_SECS = 15 * 60
@property
def temperatures(self) -> list[float | None]:
"""Return the readings oldest first, None where there is no reading."""
return [
None if value == NO_READING else value / 10
for value in self.data.get("temp_data", [])
]