mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 09:47:13 +00:00
Use climate enums in balboa (#70626)
This commit is contained in:
parent
df2a4223da
commit
7fb0691a8b
@ -3,17 +3,15 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
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 (
|
||||||
CURRENT_HVAC_HEAT,
|
|
||||||
CURRENT_HVAC_IDLE,
|
|
||||||
FAN_HIGH,
|
FAN_HIGH,
|
||||||
FAN_LOW,
|
FAN_LOW,
|
||||||
FAN_MEDIUM,
|
FAN_MEDIUM,
|
||||||
FAN_OFF,
|
FAN_OFF,
|
||||||
HVAC_MODE_AUTO,
|
ClimateEntityFeature,
|
||||||
HVAC_MODE_HEAT,
|
HVACAction,
|
||||||
HVAC_MODE_OFF,
|
HVACMode,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
@ -67,9 +65,9 @@ class BalboaSpaClimate(BalboaEntity, ClimateEntity):
|
|||||||
value: key for key, value in self._balboa_to_ha_blower_map.items()
|
value: key for key, value in self._balboa_to_ha_blower_map.items()
|
||||||
}
|
}
|
||||||
self._balboa_to_ha_heatmode_map = {
|
self._balboa_to_ha_heatmode_map = {
|
||||||
self._client.HEATMODE_READY: HVAC_MODE_HEAT,
|
self._client.HEATMODE_READY: HVACMode.HEAT,
|
||||||
self._client.HEATMODE_RNR: HVAC_MODE_AUTO,
|
self._client.HEATMODE_RNR: HVACMode.AUTO,
|
||||||
self._client.HEATMODE_REST: HVAC_MODE_OFF,
|
self._client.HEATMODE_REST: HVACMode.OFF,
|
||||||
}
|
}
|
||||||
self._ha_heatmode_to_balboa_map = {
|
self._ha_heatmode_to_balboa_map = {
|
||||||
value: key for key, value in self._balboa_to_ha_heatmode_map.items()
|
value: key for key, value in self._balboa_to_ha_heatmode_map.items()
|
||||||
@ -99,8 +97,8 @@ class BalboaSpaClimate(BalboaEntity, ClimateEntity):
|
|||||||
def hvac_action(self) -> str:
|
def hvac_action(self) -> str:
|
||||||
"""Return the current operation mode."""
|
"""Return the current operation mode."""
|
||||||
if self._client.get_heatstate() >= self._client.ON:
|
if self._client.get_heatstate() >= self._client.ON:
|
||||||
return CURRENT_HVAC_HEAT
|
return HVACAction.HEATING
|
||||||
return CURRENT_HVAC_IDLE
|
return HVACAction.IDLE
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def fan_mode(self) -> str:
|
def fan_mode(self) -> str:
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
"""Constants for the Balboa Spa Client integration."""
|
"""Constants for the Balboa Spa Client integration."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from homeassistant.components.climate.const import (
|
from homeassistant.components.climate.const import (
|
||||||
@ -6,9 +8,7 @@ from homeassistant.components.climate.const import (
|
|||||||
FAN_LOW,
|
FAN_LOW,
|
||||||
FAN_MEDIUM,
|
FAN_MEDIUM,
|
||||||
FAN_OFF,
|
FAN_OFF,
|
||||||
HVAC_MODE_AUTO,
|
HVACMode,
|
||||||
HVAC_MODE_HEAT,
|
|
||||||
HVAC_MODE_OFF,
|
|
||||||
)
|
)
|
||||||
from homeassistant.const import Platform
|
from homeassistant.const import Platform
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
DOMAIN = "balboa"
|
DOMAIN = "balboa"
|
||||||
|
|
||||||
CLIMATE_SUPPORTED_FANSTATES = [FAN_OFF, FAN_LOW, FAN_MEDIUM, FAN_HIGH]
|
CLIMATE_SUPPORTED_FANSTATES = [FAN_OFF, FAN_LOW, FAN_MEDIUM, FAN_HIGH]
|
||||||
CLIMATE_SUPPORTED_MODES = [HVAC_MODE_AUTO, HVAC_MODE_HEAT, HVAC_MODE_OFF]
|
CLIMATE_SUPPORTED_MODES = [HVACMode.AUTO, HVACMode.HEAT, HVACMode.OFF]
|
||||||
CONF_SYNC_TIME = "sync_time"
|
CONF_SYNC_TIME = "sync_time"
|
||||||
DEFAULT_SYNC_TIME = False
|
DEFAULT_SYNC_TIME = False
|
||||||
PLATFORMS = [Platform.BINARY_SENSOR, Platform.CLIMATE]
|
PLATFORMS = [Platform.BINARY_SENSOR, Platform.CLIMATE]
|
||||||
|
@ -13,18 +13,13 @@ from homeassistant.components.climate.const import (
|
|||||||
ATTR_MIN_TEMP,
|
ATTR_MIN_TEMP,
|
||||||
ATTR_PRESET_MODE,
|
ATTR_PRESET_MODE,
|
||||||
ATTR_PRESET_MODES,
|
ATTR_PRESET_MODES,
|
||||||
CURRENT_HVAC_HEAT,
|
|
||||||
CURRENT_HVAC_IDLE,
|
|
||||||
FAN_HIGH,
|
FAN_HIGH,
|
||||||
FAN_LOW,
|
FAN_LOW,
|
||||||
FAN_MEDIUM,
|
FAN_MEDIUM,
|
||||||
FAN_OFF,
|
FAN_OFF,
|
||||||
HVAC_MODE_AUTO,
|
ClimateEntityFeature,
|
||||||
HVAC_MODE_HEAT,
|
HVACAction,
|
||||||
HVAC_MODE_OFF,
|
HVACMode,
|
||||||
SUPPORT_FAN_MODE,
|
|
||||||
SUPPORT_PRESET_MODE,
|
|
||||||
SUPPORT_TARGET_TEMPERATURE,
|
|
||||||
)
|
)
|
||||||
from homeassistant.const import ATTR_TEMPERATURE, TEMP_FAHRENHEIT
|
from homeassistant.const import ATTR_TEMPERATURE, TEMP_FAHRENHEIT
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
@ -41,9 +36,9 @@ FAN_SETTINGS = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
HVAC_SETTINGS = [
|
HVAC_SETTINGS = [
|
||||||
HVAC_MODE_HEAT,
|
HVACMode.HEAT,
|
||||||
HVAC_MODE_OFF,
|
HVACMode.OFF,
|
||||||
HVAC_MODE_AUTO,
|
HVACMode.AUTO,
|
||||||
]
|
]
|
||||||
|
|
||||||
ENTITY_CLIMATE = "climate.fakespa_climate"
|
ENTITY_CLIMATE = "climate.fakespa_climate"
|
||||||
@ -58,13 +53,13 @@ async def test_spa_defaults(hass: HomeAssistant, client: MagicMock) -> None:
|
|||||||
assert state
|
assert state
|
||||||
assert (
|
assert (
|
||||||
state.attributes["supported_features"]
|
state.attributes["supported_features"]
|
||||||
== SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE
|
== ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.PRESET_MODE
|
||||||
)
|
)
|
||||||
assert state.state == HVAC_MODE_HEAT
|
assert state.state == HVACMode.HEAT
|
||||||
assert state.attributes[ATTR_MIN_TEMP] == 10.0
|
assert state.attributes[ATTR_MIN_TEMP] == 10.0
|
||||||
assert state.attributes[ATTR_MAX_TEMP] == 40.0
|
assert state.attributes[ATTR_MAX_TEMP] == 40.0
|
||||||
assert state.attributes[ATTR_PRESET_MODE] == "Ready"
|
assert state.attributes[ATTR_PRESET_MODE] == "Ready"
|
||||||
assert state.attributes[ATTR_HVAC_ACTION] == CURRENT_HVAC_IDLE
|
assert state.attributes[ATTR_HVAC_ACTION] == HVACAction.IDLE
|
||||||
|
|
||||||
|
|
||||||
async def test_spa_defaults_fake_tscale(hass: HomeAssistant, client: MagicMock) -> None:
|
async def test_spa_defaults_fake_tscale(hass: HomeAssistant, client: MagicMock) -> None:
|
||||||
@ -78,13 +73,13 @@ async def test_spa_defaults_fake_tscale(hass: HomeAssistant, client: MagicMock)
|
|||||||
assert state
|
assert state
|
||||||
assert (
|
assert (
|
||||||
state.attributes["supported_features"]
|
state.attributes["supported_features"]
|
||||||
== SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE
|
== ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.PRESET_MODE
|
||||||
)
|
)
|
||||||
assert state.state == HVAC_MODE_HEAT
|
assert state.state == HVACMode.HEAT
|
||||||
assert state.attributes[ATTR_MIN_TEMP] == 10.0
|
assert state.attributes[ATTR_MIN_TEMP] == 10.0
|
||||||
assert state.attributes[ATTR_MAX_TEMP] == 40.0
|
assert state.attributes[ATTR_MAX_TEMP] == 40.0
|
||||||
assert state.attributes[ATTR_PRESET_MODE] == "Ready"
|
assert state.attributes[ATTR_PRESET_MODE] == "Ready"
|
||||||
assert state.attributes[ATTR_HVAC_ACTION] == CURRENT_HVAC_IDLE
|
assert state.attributes[ATTR_HVAC_ACTION] == HVACAction.IDLE
|
||||||
|
|
||||||
|
|
||||||
async def test_spa_with_blower(hass: HomeAssistant, client: MagicMock) -> None:
|
async def test_spa_with_blower(hass: HomeAssistant, client: MagicMock) -> None:
|
||||||
@ -102,7 +97,9 @@ async def test_spa_with_blower(hass: HomeAssistant, client: MagicMock) -> None:
|
|||||||
assert state
|
assert state
|
||||||
assert (
|
assert (
|
||||||
state.attributes["supported_features"]
|
state.attributes["supported_features"]
|
||||||
== SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE | SUPPORT_FAN_MODE
|
== ClimateEntityFeature.TARGET_TEMPERATURE
|
||||||
|
| ClimateEntityFeature.PRESET_MODE
|
||||||
|
| ClimateEntityFeature.FAN_MODE
|
||||||
)
|
)
|
||||||
|
|
||||||
for fan_state in range(4):
|
for fan_state in range(4):
|
||||||
@ -151,7 +148,7 @@ async def test_spa_hvac_modes(hass: HomeAssistant, client: MagicMock) -> None:
|
|||||||
state = await _patch_spa_heatmode(hass, config_entry, heat_mode, client)
|
state = await _patch_spa_heatmode(hass, config_entry, heat_mode, client)
|
||||||
assert state
|
assert state
|
||||||
modes = state.attributes.get(ATTR_HVAC_MODES)
|
modes = state.attributes.get(ATTR_HVAC_MODES)
|
||||||
assert [HVAC_MODE_AUTO, HVAC_MODE_HEAT, HVAC_MODE_OFF] == modes
|
assert [HVACMode.AUTO, HVACMode.HEAT, HVACMode.OFF] == modes
|
||||||
assert state.state == HVAC_SETTINGS[heat_mode]
|
assert state.state == HVAC_SETTINGS[heat_mode]
|
||||||
|
|
||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
@ -166,10 +163,10 @@ async def test_spa_hvac_action(hass: HomeAssistant, client: MagicMock) -> None:
|
|||||||
# try out the different heat states
|
# try out the different heat states
|
||||||
state = await _patch_spa_heatstate(hass, config_entry, 1, client)
|
state = await _patch_spa_heatstate(hass, config_entry, 1, client)
|
||||||
assert state
|
assert state
|
||||||
assert state.attributes[ATTR_HVAC_ACTION] == CURRENT_HVAC_HEAT
|
assert state.attributes[ATTR_HVAC_ACTION] == HVACAction.HEATING
|
||||||
|
|
||||||
state = await _patch_spa_heatstate(hass, config_entry, 0, client)
|
state = await _patch_spa_heatstate(hass, config_entry, 0, client)
|
||||||
assert state.attributes[ATTR_HVAC_ACTION] == CURRENT_HVAC_IDLE
|
assert state.attributes[ATTR_HVAC_ACTION] == HVACAction.IDLE
|
||||||
|
|
||||||
|
|
||||||
async def test_spa_preset_modes(hass: HomeAssistant, client: MagicMock) -> None:
|
async def test_spa_preset_modes(hass: HomeAssistant, client: MagicMock) -> None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user