Add restore temperature to modbus climate (#50963)
* Add restore temperature to climate. * please mypy. * Review 2.pull/51031/head
parent
60e65a4bc2
commit
1546dbbf25
|
@ -20,6 +20,7 @@ from homeassistant.const import (
|
||||||
TEMP_FAHRENHEIT,
|
TEMP_FAHRENHEIT,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.helpers.restore_state import RestoreEntity
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
|
||||||
from .base_platform import BasePlatform
|
from .base_platform import BasePlatform
|
||||||
|
@ -98,7 +99,7 @@ async def async_setup_platform(
|
||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
class ModbusThermostat(BasePlatform, ClimateEntity):
|
class ModbusThermostat(BasePlatform, RestoreEntity, ClimateEntity):
|
||||||
"""Representation of a Modbus Thermostat."""
|
"""Representation of a Modbus Thermostat."""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
|
@ -131,6 +132,9 @@ class ModbusThermostat(BasePlatform, ClimateEntity):
|
||||||
async def async_added_to_hass(self):
|
async def async_added_to_hass(self):
|
||||||
"""Handle entity which will be added."""
|
"""Handle entity which will be added."""
|
||||||
await self.async_base_added_to_hass()
|
await self.async_base_added_to_hass()
|
||||||
|
state = await self.async_get_last_state()
|
||||||
|
if state and state.attributes.get(ATTR_TEMPERATURE):
|
||||||
|
self._target_temperature = float(state.attributes[ATTR_TEMPERATURE])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self):
|
def supported_features(self):
|
||||||
|
|
|
@ -2,16 +2,25 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.climate import DOMAIN as CLIMATE_DOMAIN
|
from homeassistant.components.climate import DOMAIN as CLIMATE_DOMAIN
|
||||||
|
from homeassistant.components.climate.const import HVAC_MODE_AUTO
|
||||||
from homeassistant.components.modbus.const import (
|
from homeassistant.components.modbus.const import (
|
||||||
CONF_CLIMATES,
|
CONF_CLIMATES,
|
||||||
CONF_CURRENT_TEMP,
|
CONF_CURRENT_TEMP,
|
||||||
CONF_DATA_COUNT,
|
CONF_DATA_COUNT,
|
||||||
CONF_TARGET_TEMP,
|
CONF_TARGET_TEMP,
|
||||||
)
|
)
|
||||||
from homeassistant.const import CONF_NAME, CONF_SCAN_INTERVAL, CONF_SLAVE
|
from homeassistant.const import (
|
||||||
|
ATTR_TEMPERATURE,
|
||||||
|
CONF_NAME,
|
||||||
|
CONF_SCAN_INTERVAL,
|
||||||
|
CONF_SLAVE,
|
||||||
|
)
|
||||||
|
from homeassistant.core import State
|
||||||
|
|
||||||
from .conftest import ReadResult, base_config_test, base_test, prepare_service_update
|
from .conftest import ReadResult, base_config_test, base_test, prepare_service_update
|
||||||
|
|
||||||
|
from tests.common import mock_restore_cache
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"do_options",
|
"do_options",
|
||||||
|
@ -101,3 +110,34 @@ async def test_service_climate_update(hass, mock_pymodbus):
|
||||||
"homeassistant", "update_entity", {"entity_id": entity_id}, blocking=True
|
"homeassistant", "update_entity", {"entity_id": entity_id}, blocking=True
|
||||||
)
|
)
|
||||||
assert hass.states.get(entity_id).state == "auto"
|
assert hass.states.get(entity_id).state == "auto"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_restore_state_climate(hass):
|
||||||
|
"""Run test for sensor restore state."""
|
||||||
|
|
||||||
|
climate_name = "test_climate"
|
||||||
|
test_temp = 37
|
||||||
|
entity_id = f"{CLIMATE_DOMAIN}.{climate_name}"
|
||||||
|
test_value = State(entity_id, 35)
|
||||||
|
test_value.attributes = {ATTR_TEMPERATURE: test_temp}
|
||||||
|
config_sensor = {
|
||||||
|
CONF_NAME: climate_name,
|
||||||
|
CONF_TARGET_TEMP: 117,
|
||||||
|
CONF_CURRENT_TEMP: 117,
|
||||||
|
}
|
||||||
|
mock_restore_cache(
|
||||||
|
hass,
|
||||||
|
(test_value,),
|
||||||
|
)
|
||||||
|
await base_config_test(
|
||||||
|
hass,
|
||||||
|
config_sensor,
|
||||||
|
climate_name,
|
||||||
|
CLIMATE_DOMAIN,
|
||||||
|
CONF_CLIMATES,
|
||||||
|
None,
|
||||||
|
method_discovery=True,
|
||||||
|
)
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state.state == HVAC_MODE_AUTO
|
||||||
|
assert state.attributes[ATTR_TEMPERATURE] == test_temp
|
Loading…
Reference in New Issue