Use climate enums in freedompro (#70651)

* Use climate enums in freedompro

* Adjust tests

* Adjust type hints
This commit is contained in:
epenet 2022-04-25 13:33:19 +02:00 committed by GitHub
parent 2efc25c7ca
commit 0fd2a7dc83
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 23 deletions

View file

@ -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:

View file

@ -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,