Use climate enums in freedompro (#70651)
* Use climate enums in freedompro * Adjust tests * Adjust type hints
This commit is contained in:
parent
2efc25c7ca
commit
0fd2a7dc83
2 changed files with 24 additions and 23 deletions
|
@ -1,15 +1,16 @@
|
||||||
"""Support for Freedompro climate."""
|
"""Support for Freedompro climate."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from pyfreedompro import put_state
|
from pyfreedompro import put_state
|
||||||
|
|
||||||
from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature
|
from homeassistant.components.climate import ClimateEntity
|
||||||
from homeassistant.components.climate.const import (
|
from homeassistant.components.climate.const import (
|
||||||
ATTR_HVAC_MODE,
|
ATTR_HVAC_MODE,
|
||||||
HVAC_MODE_COOL,
|
ClimateEntityFeature,
|
||||||
HVAC_MODE_HEAT,
|
HVACMode,
|
||||||
HVAC_MODE_OFF,
|
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import ATTR_TEMPERATURE, CONF_API_KEY, TEMP_CELSIUS
|
from homeassistant.const import ATTR_TEMPERATURE, CONF_API_KEY, TEMP_CELSIUS
|
||||||
|
@ -24,14 +25,18 @@ from .const import DOMAIN
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
HVAC_MAP = {
|
HVAC_MAP = {
|
||||||
0: HVAC_MODE_OFF,
|
0: HVACMode.OFF,
|
||||||
1: HVAC_MODE_HEAT,
|
1: HVACMode.HEAT,
|
||||||
2: HVAC_MODE_COOL,
|
2: HVACMode.COOL,
|
||||||
}
|
}
|
||||||
|
|
||||||
HVAC_INVERT_MAP = {v: k for k, v in HVAC_MAP.items()}
|
HVAC_INVERT_MAP = {v: k for k, v in HVAC_MAP.items()}
|
||||||
|
|
||||||
SUPPORTED_HVAC_MODES = [HVAC_MODE_OFF, HVAC_MODE_HEAT, HVAC_MODE_COOL]
|
SUPPORTED_HVAC_MODES = [
|
||||||
|
HVACMode.OFF,
|
||||||
|
HVACMode.HEAT,
|
||||||
|
HVACMode.COOL,
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
|
@ -74,7 +79,7 @@ class Device(CoordinatorEntity, ClimateEntity):
|
||||||
self._attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
|
self._attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
|
||||||
self._attr_current_temperature = 0
|
self._attr_current_temperature = 0
|
||||||
self._attr_target_temperature = 0
|
self._attr_target_temperature = 0
|
||||||
self._attr_hvac_mode = HVAC_MODE_OFF
|
self._attr_hvac_mode = HVACMode.OFF
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _handle_coordinator_update(self) -> None:
|
def _handle_coordinator_update(self) -> None:
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
"""Tests for the Freedompro climate."""
|
"""Tests for the Freedompro climate."""
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from unittest.mock import ANY, patch
|
from unittest.mock import ANY, patch
|
||||||
|
|
||||||
|
@ -13,13 +12,10 @@ from homeassistant.components.climate import (
|
||||||
ATTR_MIN_TEMP,
|
ATTR_MIN_TEMP,
|
||||||
ATTR_TEMPERATURE,
|
ATTR_TEMPERATURE,
|
||||||
DOMAIN as CLIMATE_DOMAIN,
|
DOMAIN as CLIMATE_DOMAIN,
|
||||||
HVAC_MODE_COOL,
|
|
||||||
HVAC_MODE_HEAT,
|
|
||||||
HVAC_MODE_OFF,
|
|
||||||
SERVICE_SET_HVAC_MODE,
|
SERVICE_SET_HVAC_MODE,
|
||||||
SERVICE_SET_TEMPERATURE,
|
SERVICE_SET_TEMPERATURE,
|
||||||
)
|
)
|
||||||
from homeassistant.components.climate.const import HVAC_MODE_AUTO
|
from homeassistant.components.climate.const import HVACMode
|
||||||
from homeassistant.const import ATTR_ENTITY_ID
|
from homeassistant.const import ATTR_ENTITY_ID
|
||||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||||
from homeassistant.util.dt import utcnow
|
from homeassistant.util.dt import utcnow
|
||||||
|
@ -48,9 +44,9 @@ async def test_climate_get_state(hass, init_integration):
|
||||||
assert state.attributes.get("friendly_name") == "thermostat"
|
assert state.attributes.get("friendly_name") == "thermostat"
|
||||||
|
|
||||||
assert state.attributes[ATTR_HVAC_MODES] == [
|
assert state.attributes[ATTR_HVAC_MODES] == [
|
||||||
HVAC_MODE_OFF,
|
HVACMode.OFF,
|
||||||
HVAC_MODE_HEAT,
|
HVACMode.HEAT,
|
||||||
HVAC_MODE_COOL,
|
HVACMode.COOL,
|
||||||
]
|
]
|
||||||
|
|
||||||
assert state.attributes[ATTR_MIN_TEMP] == 7
|
assert state.attributes[ATTR_MIN_TEMP] == 7
|
||||||
|
@ -58,7 +54,7 @@ async def test_climate_get_state(hass, init_integration):
|
||||||
assert state.attributes[ATTR_TEMPERATURE] == 14
|
assert state.attributes[ATTR_TEMPERATURE] == 14
|
||||||
assert state.attributes[ATTR_CURRENT_TEMPERATURE] == 14
|
assert state.attributes[ATTR_CURRENT_TEMPERATURE] == 14
|
||||||
|
|
||||||
assert state.state == HVAC_MODE_HEAT
|
assert state.state == HVACMode.HEAT
|
||||||
|
|
||||||
entry = entity_registry.async_get(entity_id)
|
entry = entity_registry.async_get(entity_id)
|
||||||
assert entry
|
assert entry
|
||||||
|
@ -106,14 +102,14 @@ async def test_climate_set_off(hass, init_integration):
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
CLIMATE_DOMAIN,
|
CLIMATE_DOMAIN,
|
||||||
SERVICE_SET_HVAC_MODE,
|
SERVICE_SET_HVAC_MODE,
|
||||||
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVAC_MODE_OFF},
|
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.OFF},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
mock_put_state.assert_called_once_with(ANY, ANY, ANY, '{"heatingCoolingState": 0}')
|
mock_put_state.assert_called_once_with(ANY, ANY, ANY, '{"heatingCoolingState": 0}')
|
||||||
|
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state.state == HVAC_MODE_HEAT
|
assert state.state == HVACMode.HEAT
|
||||||
|
|
||||||
|
|
||||||
async def test_climate_set_unsupported_hvac_mode(hass, init_integration):
|
async def test_climate_set_unsupported_hvac_mode(hass, init_integration):
|
||||||
|
@ -134,7 +130,7 @@ async def test_climate_set_unsupported_hvac_mode(hass, init_integration):
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
CLIMATE_DOMAIN,
|
CLIMATE_DOMAIN,
|
||||||
SERVICE_SET_HVAC_MODE,
|
SERVICE_SET_HVAC_MODE,
|
||||||
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVAC_MODE_AUTO},
|
{ATTR_ENTITY_ID: [entity_id], ATTR_HVAC_MODE: HVACMode.AUTO},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -161,7 +157,7 @@ async def test_climate_set_temperature(hass, init_integration):
|
||||||
SERVICE_SET_TEMPERATURE,
|
SERVICE_SET_TEMPERATURE,
|
||||||
{
|
{
|
||||||
ATTR_ENTITY_ID: [entity_id],
|
ATTR_ENTITY_ID: [entity_id],
|
||||||
ATTR_HVAC_MODE: HVAC_MODE_OFF,
|
ATTR_HVAC_MODE: HVACMode.OFF,
|
||||||
ATTR_TEMPERATURE: 25,
|
ATTR_TEMPERATURE: 25,
|
||||||
},
|
},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
|
@ -203,7 +199,7 @@ async def test_climate_set_temperature_unsupported_hvac_mode(hass, init_integrat
|
||||||
SERVICE_SET_TEMPERATURE,
|
SERVICE_SET_TEMPERATURE,
|
||||||
{
|
{
|
||||||
ATTR_ENTITY_ID: [entity_id],
|
ATTR_ENTITY_ID: [entity_id],
|
||||||
ATTR_HVAC_MODE: HVAC_MODE_AUTO,
|
ATTR_HVAC_MODE: HVACMode.AUTO,
|
||||||
ATTR_TEMPERATURE: 25,
|
ATTR_TEMPERATURE: 25,
|
||||||
},
|
},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue