mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 19:57:07 +00:00
Use base entity class for Whirlpool climate (#142548)
* Use base entity class for Whirlpool climate * Set model_id instead of model
This commit is contained in:
parent
ec520b8cf5
commit
f872dc8948
@ -8,7 +8,6 @@ from typing import Any
|
||||
from whirlpool.aircon import Aircon, FanSpeed as AirconFanSpeed, Mode as AirconMode
|
||||
|
||||
from homeassistant.components.climate import (
|
||||
ENTITY_ID_FORMAT,
|
||||
FAN_AUTO,
|
||||
FAN_HIGH,
|
||||
FAN_LOW,
|
||||
@ -22,12 +21,10 @@ from homeassistant.components.climate import (
|
||||
)
|
||||
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.device_registry import DeviceInfo
|
||||
from homeassistant.helpers.entity import generate_entity_id
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from . import WhirlpoolConfigEntry
|
||||
from .const import DOMAIN
|
||||
from .entity import WhirlpoolEntity
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -71,10 +68,10 @@ async def async_setup_entry(
|
||||
"""Set up entry."""
|
||||
appliances_manager = config_entry.runtime_data
|
||||
aircons = [AirConEntity(hass, aircon) for aircon in appliances_manager.aircons]
|
||||
async_add_entities(aircons, True)
|
||||
async_add_entities(aircons)
|
||||
|
||||
|
||||
class AirConEntity(ClimateEntity):
|
||||
class AirConEntity(WhirlpoolEntity, ClimateEntity):
|
||||
"""Representation of an air conditioner."""
|
||||
|
||||
_attr_fan_modes = SUPPORTED_FAN_MODES
|
||||
@ -97,29 +94,8 @@ class AirConEntity(ClimateEntity):
|
||||
|
||||
def __init__(self, hass: HomeAssistant, aircon: Aircon) -> None:
|
||||
"""Initialize the entity."""
|
||||
super().__init__(aircon)
|
||||
self._aircon = aircon
|
||||
self.entity_id = generate_entity_id(ENTITY_ID_FORMAT, aircon.said, hass=hass)
|
||||
self._attr_unique_id = aircon.said
|
||||
|
||||
self._attr_device_info = DeviceInfo(
|
||||
identifiers={(DOMAIN, aircon.said)},
|
||||
name=aircon.name if aircon.name is not None else aircon.said,
|
||||
manufacturer="Whirlpool",
|
||||
model="Sixth Sense",
|
||||
)
|
||||
|
||||
async def async_added_to_hass(self) -> None:
|
||||
"""Register updates callback."""
|
||||
self._aircon.register_attr_callback(self.async_write_ha_state)
|
||||
|
||||
async def async_will_remove_from_hass(self) -> None:
|
||||
"""Unregister updates callback."""
|
||||
self._aircon.unregister_attr_callback(self.async_write_ha_state)
|
||||
|
||||
@property
|
||||
def available(self) -> bool:
|
||||
"""Return True if entity is available."""
|
||||
return self._aircon.get_online()
|
||||
|
||||
@property
|
||||
def current_temperature(self) -> float:
|
||||
|
@ -19,8 +19,9 @@ class WhirlpoolEntity(Entity):
|
||||
|
||||
self._attr_device_info = DeviceInfo(
|
||||
identifiers={(DOMAIN, appliance.said)},
|
||||
name=appliance.name.capitalize(),
|
||||
name=appliance.name.capitalize() if appliance.name else appliance.said,
|
||||
manufacturer="Whirlpool",
|
||||
model_id=appliance.appliance_info.model_number,
|
||||
)
|
||||
self._attr_unique_id = f"{appliance.said}{unique_id_suffix}"
|
||||
|
||||
|
@ -81,7 +81,7 @@ async def test_static_attributes(
|
||||
await init_integration(hass)
|
||||
|
||||
for said in ("said1", "said2"):
|
||||
entity_id = f"climate.{said}"
|
||||
entity_id = f"climate.aircon_{said}"
|
||||
entry = entity_registry.async_get(entity_id)
|
||||
assert entry
|
||||
assert entry.unique_id == said
|
||||
@ -138,8 +138,8 @@ async def test_dynamic_attributes(
|
||||
mock_instance_idx: int
|
||||
|
||||
for clim_test_instance in (
|
||||
ClimateTestInstance("climate.said1", mock_aircon1_api, 0),
|
||||
ClimateTestInstance("climate.said2", mock_aircon2_api, 1),
|
||||
ClimateTestInstance("climate.aircon_said1", mock_aircon1_api, 0),
|
||||
ClimateTestInstance("climate.aircon_said2", mock_aircon2_api, 1),
|
||||
):
|
||||
entity_id = clim_test_instance.entity_id
|
||||
mock_instance = clim_test_instance.mock_instance
|
||||
@ -225,8 +225,8 @@ async def test_service_calls(
|
||||
mock_instance: MagicMock
|
||||
|
||||
for clim_test_instance in (
|
||||
ClimateInstancesData("climate.said1", mock_aircon1_api),
|
||||
ClimateInstancesData("climate.said2", mock_aircon2_api),
|
||||
ClimateInstancesData("climate.aircon_said1", mock_aircon1_api),
|
||||
ClimateInstancesData("climate.aircon_said2", mock_aircon2_api),
|
||||
):
|
||||
mock_instance = clim_test_instance.mock_instance
|
||||
entity_id = clim_test_instance.entity_id
|
||||
|
Loading…
x
Reference in New Issue
Block a user