mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 01:08:12 +00:00
Fix current temperature calculation for incomfort boiler (#129496)
This commit is contained in:
parent
d10553d624
commit
2ac0ff03fc
@ -54,12 +54,16 @@ class IncomfortWaterHeater(IncomfortBoilerEntity, WaterHeaterEntity):
|
||||
return {k: v for k, v in self._heater.status.items() if k in HEATER_ATTRS}
|
||||
|
||||
@property
|
||||
def current_temperature(self) -> float:
|
||||
def current_temperature(self) -> float | None:
|
||||
"""Return the current temperature."""
|
||||
if self._heater.is_tapping:
|
||||
return self._heater.tap_temp
|
||||
if self._heater.is_pumping:
|
||||
return self._heater.heater_temp
|
||||
if self._heater.heater_temp is None:
|
||||
return self._heater.tap_temp
|
||||
if self._heater.tap_temp is None:
|
||||
return self._heater.heater_temp
|
||||
return max(self._heater.heater_temp, self._heater.tap_temp)
|
||||
|
||||
@property
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from syrupy import SnapshotAssertion
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
@ -9,6 +10,8 @@ from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
|
||||
from .conftest import MOCK_HEATER_STATUS
|
||||
|
||||
from tests.common import snapshot_platform
|
||||
|
||||
|
||||
@ -23,3 +26,44 @@ async def test_setup_platform(
|
||||
"""Test the incomfort entities are set up correctly."""
|
||||
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("mock_heater_status", "current_temperature"),
|
||||
[
|
||||
(MOCK_HEATER_STATUS, 35.3),
|
||||
(MOCK_HEATER_STATUS | {"is_tapping": True}, 30.2),
|
||||
(MOCK_HEATER_STATUS | {"is_pumping": True}, 35.3),
|
||||
(MOCK_HEATER_STATUS | {"heater_temp": None}, 30.2),
|
||||
(MOCK_HEATER_STATUS | {"tap_temp": None}, 35.3),
|
||||
(MOCK_HEATER_STATUS | {"heater_temp": None, "tap_temp": None}, None),
|
||||
],
|
||||
ids=[
|
||||
"both_temps_available_choose_highest",
|
||||
"is_tapping_choose_tapping_temp",
|
||||
"is_pumping_choose_heater_temp",
|
||||
"heater_temp_not_available_choose_tapping_temp",
|
||||
"tapping_temp_not_available_choose_heater_temp",
|
||||
"tapping_and_heater_temp_not_available_unknown",
|
||||
],
|
||||
)
|
||||
@patch("homeassistant.components.incomfort.PLATFORMS", [Platform.WATER_HEATER])
|
||||
async def test_current_temperature_cases(
|
||||
hass: HomeAssistant,
|
||||
mock_incomfort: MagicMock,
|
||||
entity_registry: er.EntityRegistry,
|
||||
mock_config_entry: ConfigEntry,
|
||||
current_temperature: float | None,
|
||||
) -> None:
|
||||
"""Test incomfort entities with alternate current temperature calculation.
|
||||
|
||||
The boilers current temperature is calculated from the testdata:
|
||||
heater_temp: 35.34
|
||||
tap_temp: 30.21
|
||||
|
||||
It is based on the operating mode as the boiler can heat tap water or
|
||||
the house.
|
||||
"""
|
||||
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||
assert (state := hass.states.get("water_heater.boiler")) is not None
|
||||
assert state.attributes.get("current_temperature") == current_temperature
|
||||
|
Loading…
x
Reference in New Issue
Block a user