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

@@ -96,6 +96,10 @@ class FakeSmartTransport(BaseTransport):
return self._credentials.username + self._credentials.password + "hash"
FIXTURE_MISSING_MAP = {
"get_temperature_records": (
"temp_record",
{"temp_data": [-1000] * 88 + [253, 254, 256, 255, 252, 249, 247, 245]},
),
"get_wireless_scan_info": ("wireless", {"ap_list": [], "wep_supported": False}),
"get_auto_off_config": ("auto_off", {"delay_min": 10, "enable": False}),
"get_led_info": (

View File

@@ -0,0 +1,24 @@
from datetime import timedelta
from kasa import Module
from kasa.smart import SmartDevice
from ...device_fixtures import parametrize
temperature_records = parametrize(
"has temperature records",
component_filter="temp_record",
protocol_filter={"SMART.CHILD"},
)
@temperature_records
async def test_temperature_records(dev: SmartDevice) -> None:
"""Test the thermostat temperature history."""
records = dev.modules[Module.TemperatureRecords]
temps = records.temperatures
assert len(temps) == 96
assert all(t is None or isinstance(t, float) for t in temps)
assert temps[-1] is not None
assert timedelta(minutes=15) == records.INTERVAL