mirror of
https://github.com/home-assistant/core.git
synced 2025-07-29 08:07:45 +00:00
Osoenergy holiday mode services (#149430)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
parent
d088fccb88
commit
386f709fd3
@ -164,7 +164,9 @@ class OSOEnergyWaterHeater(
|
||||
|
||||
_attr_name = None
|
||||
_attr_supported_features = (
|
||||
WaterHeaterEntityFeature.TARGET_TEMPERATURE | WaterHeaterEntityFeature.ON_OFF
|
||||
WaterHeaterEntityFeature.TARGET_TEMPERATURE
|
||||
| WaterHeaterEntityFeature.AWAY_MODE
|
||||
| WaterHeaterEntityFeature.ON_OFF
|
||||
)
|
||||
_attr_temperature_unit = UnitOfTemperature.CELSIUS
|
||||
|
||||
@ -203,6 +205,11 @@ class OSOEnergyWaterHeater(
|
||||
"""Return the current temperature of the heater."""
|
||||
return self.entity_data.current_temperature
|
||||
|
||||
@property
|
||||
def is_away_mode_on(self) -> bool:
|
||||
"""Return if the heater is in away mode."""
|
||||
return self.entity_data.isInPowerSave
|
||||
|
||||
@property
|
||||
def target_temperature(self) -> float:
|
||||
"""Return the temperature we try to reach."""
|
||||
@ -228,6 +235,14 @@ class OSOEnergyWaterHeater(
|
||||
"""Return the maximum temperature."""
|
||||
return self.entity_data.max_temperature
|
||||
|
||||
async def async_turn_away_mode_on(self) -> None:
|
||||
"""Turn on away mode."""
|
||||
await self.osoenergy.hotwater.enable_holiday_mode(self.entity_data)
|
||||
|
||||
async def async_turn_away_mode_off(self) -> None:
|
||||
"""Turn off away mode."""
|
||||
await self.osoenergy.hotwater.disable_holiday_mode(self.entity_data)
|
||||
|
||||
async def async_turn_on(self, **kwargs) -> None:
|
||||
"""Turn on hotwater."""
|
||||
await self.osoenergy.hotwater.turn_on(self.entity_data, True)
|
||||
|
@ -74,6 +74,8 @@ async def mock_osoenergy_client(mock_water_heater) -> Generator[AsyncMock]:
|
||||
mock_client().session = mock_session
|
||||
|
||||
mock_hotwater = MagicMock()
|
||||
mock_hotwater.enable_holiday_mode = AsyncMock(return_value=True)
|
||||
mock_hotwater.disable_holiday_mode = AsyncMock(return_value=True)
|
||||
mock_hotwater.get_water_heater = AsyncMock(return_value=mock_water_heater)
|
||||
mock_hotwater.set_profile = AsyncMock(return_value=True)
|
||||
mock_hotwater.set_v40_min = AsyncMock(return_value=True)
|
||||
|
@ -16,5 +16,6 @@
|
||||
"profile": [
|
||||
10, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
|
||||
60, 60, 60, 60, 60
|
||||
]
|
||||
],
|
||||
"isInPowerSave": false
|
||||
}
|
||||
|
@ -31,7 +31,7 @@
|
||||
'platform': 'osoenergy',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': <WaterHeaterEntityFeature: 9>,
|
||||
'supported_features': <WaterHeaterEntityFeature: 13>,
|
||||
'translation_key': None,
|
||||
'unique_id': 'osoenergy_water_heater',
|
||||
'unit_of_measurement': None,
|
||||
@ -40,11 +40,12 @@
|
||||
# name: test_water_heater[water_heater.test_device-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'away_mode': 'off',
|
||||
'current_temperature': 60,
|
||||
'friendly_name': 'TEST DEVICE',
|
||||
'max_temp': 75,
|
||||
'min_temp': 10,
|
||||
'supported_features': <WaterHeaterEntityFeature: 9>,
|
||||
'supported_features': <WaterHeaterEntityFeature: 13>,
|
||||
'target_temp_high': 63,
|
||||
'target_temp_low': 57,
|
||||
'temperature': 60,
|
||||
|
@ -14,7 +14,9 @@ from homeassistant.components.osoenergy.water_heater import (
|
||||
SERVICE_SET_V40MIN,
|
||||
)
|
||||
from homeassistant.components.water_heater import (
|
||||
ATTR_AWAY_MODE,
|
||||
DOMAIN as WATER_HEATER_DOMAIN,
|
||||
SERVICE_SET_AWAY_MODE,
|
||||
SERVICE_SET_TEMPERATURE,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
@ -274,3 +276,37 @@ async def test_oso_turn_off(
|
||||
)
|
||||
|
||||
mock_osoenergy_client().hotwater.turn_off.assert_called_once_with(ANY, False)
|
||||
|
||||
|
||||
async def test_turn_away_mode_on(
|
||||
hass: HomeAssistant,
|
||||
mock_osoenergy_client: MagicMock,
|
||||
mock_config_entry: ConfigEntry,
|
||||
) -> None:
|
||||
"""Test turning the heater away mode on."""
|
||||
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||
await hass.services.async_call(
|
||||
WATER_HEATER_DOMAIN,
|
||||
SERVICE_SET_AWAY_MODE,
|
||||
{ATTR_ENTITY_ID: "water_heater.test_device", ATTR_AWAY_MODE: "on"},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
mock_osoenergy_client().hotwater.enable_holiday_mode.assert_called_once_with(ANY)
|
||||
|
||||
|
||||
async def test_turn_away_mode_off(
|
||||
hass: HomeAssistant,
|
||||
mock_osoenergy_client: MagicMock,
|
||||
mock_config_entry: ConfigEntry,
|
||||
) -> None:
|
||||
"""Test turning the heater away mode off."""
|
||||
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||
await hass.services.async_call(
|
||||
WATER_HEATER_DOMAIN,
|
||||
SERVICE_SET_AWAY_MODE,
|
||||
{ATTR_ENTITY_ID: "water_heater.test_device", ATTR_AWAY_MODE: "off"},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
mock_osoenergy_client().hotwater.disable_holiday_mode.assert_called_once_with(ANY)
|
||||
|
Loading…
x
Reference in New Issue
Block a user