Skip to content

Commit f872dc8

Browse files
authored
Use base entity class for Whirlpool climate (home-assistant#142548)
* Use base entity class for Whirlpool climate * Set model_id instead of model
1 parent ec520b8 commit f872dc8

File tree

3 files changed

+11
-34
lines changed

3 files changed

+11
-34
lines changed

homeassistant/components/whirlpool/climate.py

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from whirlpool.aircon import Aircon, FanSpeed as AirconFanSpeed, Mode as AirconMode
99

1010
from homeassistant.components.climate import (
11-
ENTITY_ID_FORMAT,
1211
FAN_AUTO,
1312
FAN_HIGH,
1413
FAN_LOW,
@@ -22,12 +21,10 @@
2221
)
2322
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
2423
from homeassistant.core import HomeAssistant
25-
from homeassistant.helpers.device_registry import DeviceInfo
26-
from homeassistant.helpers.entity import generate_entity_id
2724
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
2825

2926
from . import WhirlpoolConfigEntry
30-
from .const import DOMAIN
27+
from .entity import WhirlpoolEntity
3128

3229
_LOGGER = logging.getLogger(__name__)
3330

@@ -71,10 +68,10 @@ async def async_setup_entry(
7168
"""Set up entry."""
7269
appliances_manager = config_entry.runtime_data
7370
aircons = [AirConEntity(hass, aircon) for aircon in appliances_manager.aircons]
74-
async_add_entities(aircons, True)
71+
async_add_entities(aircons)
7572

7673

77-
class AirConEntity(ClimateEntity):
74+
class AirConEntity(WhirlpoolEntity, ClimateEntity):
7875
"""Representation of an air conditioner."""
7976

8077
_attr_fan_modes = SUPPORTED_FAN_MODES
@@ -97,29 +94,8 @@ class AirConEntity(ClimateEntity):
9794

9895
def __init__(self, hass: HomeAssistant, aircon: Aircon) -> None:
9996
"""Initialize the entity."""
97+
super().__init__(aircon)
10098
self._aircon = aircon
101-
self.entity_id = generate_entity_id(ENTITY_ID_FORMAT, aircon.said, hass=hass)
102-
self._attr_unique_id = aircon.said
103-
104-
self._attr_device_info = DeviceInfo(
105-
identifiers={(DOMAIN, aircon.said)},
106-
name=aircon.name if aircon.name is not None else aircon.said,
107-
manufacturer="Whirlpool",
108-
model="Sixth Sense",
109-
)
110-
111-
async def async_added_to_hass(self) -> None:
112-
"""Register updates callback."""
113-
self._aircon.register_attr_callback(self.async_write_ha_state)
114-
115-
async def async_will_remove_from_hass(self) -> None:
116-
"""Unregister updates callback."""
117-
self._aircon.unregister_attr_callback(self.async_write_ha_state)
118-
119-
@property
120-
def available(self) -> bool:
121-
"""Return True if entity is available."""
122-
return self._aircon.get_online()
12399

124100
@property
125101
def current_temperature(self) -> float:

homeassistant/components/whirlpool/entity.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ def __init__(self, appliance: Appliance, unique_id_suffix: str = "") -> None:
1919

2020
self._attr_device_info = DeviceInfo(
2121
identifiers={(DOMAIN, appliance.said)},
22-
name=appliance.name.capitalize(),
22+
name=appliance.name.capitalize() if appliance.name else appliance.said,
2323
manufacturer="Whirlpool",
24+
model_id=appliance.appliance_info.model_number,
2425
)
2526
self._attr_unique_id = f"{appliance.said}{unique_id_suffix}"
2627

tests/components/whirlpool/test_climate.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ async def test_static_attributes(
8181
await init_integration(hass)
8282

8383
for said in ("said1", "said2"):
84-
entity_id = f"climate.{said}"
84+
entity_id = f"climate.aircon_{said}"
8585
entry = entity_registry.async_get(entity_id)
8686
assert entry
8787
assert entry.unique_id == said
@@ -138,8 +138,8 @@ class ClimateTestInstance:
138138
mock_instance_idx: int
139139

140140
for clim_test_instance in (
141-
ClimateTestInstance("climate.said1", mock_aircon1_api, 0),
142-
ClimateTestInstance("climate.said2", mock_aircon2_api, 1),
141+
ClimateTestInstance("climate.aircon_said1", mock_aircon1_api, 0),
142+
ClimateTestInstance("climate.aircon_said2", mock_aircon2_api, 1),
143143
):
144144
entity_id = clim_test_instance.entity_id
145145
mock_instance = clim_test_instance.mock_instance
@@ -225,8 +225,8 @@ class ClimateInstancesData:
225225
mock_instance: MagicMock
226226

227227
for clim_test_instance in (
228-
ClimateInstancesData("climate.said1", mock_aircon1_api),
229-
ClimateInstancesData("climate.said2", mock_aircon2_api),
228+
ClimateInstancesData("climate.aircon_said1", mock_aircon1_api),
229+
ClimateInstancesData("climate.aircon_said2", mock_aircon2_api),
230230
):
231231
mock_instance = clim_test_instance.mock_instance
232232
entity_id = clim_test_instance.entity_id

0 commit comments

Comments
 (0)