Skip to content

Commit 4e59e29

Browse files
committed
fix: Handle temperature and retrieved at times not being provided for heat pumps (15 minutes dev time)
1 parent b65ca55 commit 4e59e29

File tree

5 files changed

+8
-8
lines changed

5 files changed

+8
-8
lines changed

custom_components/octopus_energy/api_client/heat_pump.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ class Connectivity(BaseModel):
1111

1212

1313
class Telemetry(BaseModel):
14-
temperatureInCelsius: float
14+
temperatureInCelsius: Optional[float]
1515
humidityPercentage: Optional[float]
16-
retrievedAt: str
16+
retrievedAt: Optional[str]
1717

1818

1919
class Sensor(BaseModel):

custom_components/octopus_energy/heat_pump/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ def mock_heat_pump_status_and_configuration():
4444
"retrievedAt": (now - timedelta(seconds=random.randrange(1, 120))).strftime("%Y-%m-%dT%H:%M:%S.%f%z")
4545
},
4646
"telemetry": {
47-
"temperatureInCelsius": -273 + (random.randrange(1, 20) * 0.1),
47+
"temperatureInCelsius": None,
4848
"humidityPercentage": None,
49-
"retrievedAt": (now - timedelta(seconds=random.randrange(1, 120))).strftime("%Y-%m-%dT%H:%M:%S.%f%z")
49+
"retrievedAt": None
5050
}
5151
},
5252
{

custom_components/octopus_energy/heat_pump/sensor_humidity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def _handle_coordinator_update(self) -> None:
9292
for sensor in sensors:
9393
if sensor.code == self._sensor.code and sensor.telemetry is not None:
9494
self._state = sensor.telemetry.humidityPercentage
95-
self._attributes["retrieved_at"] = datetime.fromisoformat(sensor.telemetry.retrievedAt)
95+
self._attributes["retrieved_at"] = datetime.fromisoformat(sensor.telemetry.retrievedAt) if sensor.telemetry.retrievedAt is not None else None
9696

9797
self._last_updated = current
9898

custom_components/octopus_energy/heat_pump/sensor_temperature.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def _handle_coordinator_update(self) -> None:
9393
for sensor in sensors:
9494
if sensor.code == self._sensor.code and sensor.telemetry is not None:
9595
self._state = sensor.telemetry.temperatureInCelsius
96-
self._attributes["retrieved_at"] = datetime.fromisoformat(sensor.telemetry.retrievedAt)
96+
self._attributes["retrieved_at"] = datetime.fromisoformat(sensor.telemetry.retrievedAt) if sensor.telemetry.retrievedAt is not None else None
9797

9898
self._last_updated = current
9999

tests/unit/api_client/test_heat_pump.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ def test_when_valid_dictionary_returned_then_it_can_be_parsed_into_heat_pump_obj
3636
"retrievedAt": "2025-05-09T17:28:51.555000+00:00"
3737
},
3838
"telemetry": {
39-
"temperatureInCelsius": -90.3,
39+
"temperatureInCelsius": None,
4040
"humidityPercentage": None,
41-
"retrievedAt": "2025-05-09T17:28:44.152000+00:00"
41+
"retrievedAt": None
4242
}
4343
},
4444
{

0 commit comments

Comments
 (0)