mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Correct devices in Advantage Air (#75395)
This commit is contained in:
parent
8b912d1d91
commit
5928a7d494
@ -43,11 +43,11 @@ class AdvantageAirFilter(AdvantageAirEntity, BinarySensorEntity):
|
|||||||
|
|
||||||
_attr_device_class = BinarySensorDeviceClass.PROBLEM
|
_attr_device_class = BinarySensorDeviceClass.PROBLEM
|
||||||
_attr_entity_category = EntityCategory.DIAGNOSTIC
|
_attr_entity_category = EntityCategory.DIAGNOSTIC
|
||||||
|
_attr_name = "Filter"
|
||||||
|
|
||||||
def __init__(self, instance, ac_key):
|
def __init__(self, instance, ac_key):
|
||||||
"""Initialize an Advantage Air Filter sensor."""
|
"""Initialize an Advantage Air Filter sensor."""
|
||||||
super().__init__(instance, ac_key)
|
super().__init__(instance, ac_key)
|
||||||
self._attr_name = f'{self._ac["name"]} filter'
|
|
||||||
self._attr_unique_id = (
|
self._attr_unique_id = (
|
||||||
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-filter'
|
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-filter'
|
||||||
)
|
)
|
||||||
|
@ -108,7 +108,6 @@ class AdvantageAirAC(AdvantageAirClimateEntity):
|
|||||||
def __init__(self, instance, ac_key):
|
def __init__(self, instance, ac_key):
|
||||||
"""Initialize an AdvantageAir AC unit."""
|
"""Initialize an AdvantageAir AC unit."""
|
||||||
super().__init__(instance, ac_key)
|
super().__init__(instance, ac_key)
|
||||||
self._attr_name = self._ac["name"]
|
|
||||||
self._attr_unique_id = f'{self.coordinator.data["system"]["rid"]}-{ac_key}'
|
self._attr_unique_id = f'{self.coordinator.data["system"]["rid"]}-{ac_key}'
|
||||||
if self._ac.get("myAutoModeEnabled"):
|
if self._ac.get("myAutoModeEnabled"):
|
||||||
self._attr_hvac_modes = AC_HVAC_MODES + [HVACMode.AUTO]
|
self._attr_hvac_modes = AC_HVAC_MODES + [HVACMode.AUTO]
|
||||||
|
@ -18,11 +18,13 @@ class AdvantageAirEntity(CoordinatorEntity):
|
|||||||
self.ac_key = ac_key
|
self.ac_key = ac_key
|
||||||
self.zone_key = zone_key
|
self.zone_key = zone_key
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = DeviceInfo(
|
||||||
identifiers={(DOMAIN, self.coordinator.data["system"]["rid"])},
|
via_device=(DOMAIN, self.coordinator.data["system"]["rid"]),
|
||||||
|
identifiers={
|
||||||
|
(DOMAIN, f"{self.coordinator.data['system']['rid']}_{ac_key}")
|
||||||
|
},
|
||||||
manufacturer="Advantage Air",
|
manufacturer="Advantage Air",
|
||||||
model=self.coordinator.data["system"]["sysType"],
|
model=self.coordinator.data["system"]["sysType"],
|
||||||
name=self.coordinator.data["system"]["name"],
|
name=self._ac["name"],
|
||||||
sw_version=self.coordinator.data["system"]["myAppRev"],
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -32,11 +32,11 @@ class AdvantageAirMyZone(AdvantageAirEntity, SelectEntity):
|
|||||||
_attr_options = [ADVANTAGE_AIR_INACTIVE]
|
_attr_options = [ADVANTAGE_AIR_INACTIVE]
|
||||||
_number_to_name = {0: ADVANTAGE_AIR_INACTIVE}
|
_number_to_name = {0: ADVANTAGE_AIR_INACTIVE}
|
||||||
_name_to_number = {ADVANTAGE_AIR_INACTIVE: 0}
|
_name_to_number = {ADVANTAGE_AIR_INACTIVE: 0}
|
||||||
|
_attr_name = "MyZone"
|
||||||
|
|
||||||
def __init__(self, instance, ac_key):
|
def __init__(self, instance, ac_key):
|
||||||
"""Initialize an Advantage Air MyZone control."""
|
"""Initialize an Advantage Air MyZone control."""
|
||||||
super().__init__(instance, ac_key)
|
super().__init__(instance, ac_key)
|
||||||
self._attr_name = f'{self._ac["name"]} myZone'
|
|
||||||
self._attr_unique_id = (
|
self._attr_unique_id = (
|
||||||
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-myzone'
|
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-myzone'
|
||||||
)
|
)
|
||||||
|
@ -67,7 +67,7 @@ class AdvantageAirTimeTo(AdvantageAirEntity, SensorEntity):
|
|||||||
super().__init__(instance, ac_key)
|
super().__init__(instance, ac_key)
|
||||||
self.action = action
|
self.action = action
|
||||||
self._time_key = f"countDownTo{action}"
|
self._time_key = f"countDownTo{action}"
|
||||||
self._attr_name = f'{self._ac["name"]} time to {action}'
|
self._attr_name = f"Time to {action}"
|
||||||
self._attr_unique_id = (
|
self._attr_unique_id = (
|
||||||
f'{self.coordinator.data["system"]["rid"]}-{self.ac_key}-timeto{action}'
|
f'{self.coordinator.data["system"]["rid"]}-{self.ac_key}-timeto{action}'
|
||||||
)
|
)
|
||||||
|
@ -32,11 +32,11 @@ class AdvantageAirFreshAir(AdvantageAirEntity, SwitchEntity):
|
|||||||
"""Representation of Advantage Air fresh air control."""
|
"""Representation of Advantage Air fresh air control."""
|
||||||
|
|
||||||
_attr_icon = "mdi:air-filter"
|
_attr_icon = "mdi:air-filter"
|
||||||
|
_attr_name = "Fresh air"
|
||||||
|
|
||||||
def __init__(self, instance, ac_key):
|
def __init__(self, instance, ac_key):
|
||||||
"""Initialize an Advantage Air fresh air control."""
|
"""Initialize an Advantage Air fresh air control."""
|
||||||
super().__init__(instance, ac_key)
|
super().__init__(instance, ac_key)
|
||||||
self._attr_name = f'{self._ac["name"]} Fresh Air'
|
|
||||||
self._attr_unique_id = (
|
self._attr_unique_id = (
|
||||||
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-freshair'
|
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-freshair'
|
||||||
)
|
)
|
||||||
|
@ -34,7 +34,7 @@ async def test_binary_sensor_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert len(aioclient_mock.mock_calls) == 1
|
assert len(aioclient_mock.mock_calls) == 1
|
||||||
|
|
||||||
# Test First Air Filter
|
# Test First Air Filter
|
||||||
entity_id = "binary_sensor.testname_ac_one_filter"
|
entity_id = "binary_sensor.ac_one_filter"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_OFF
|
assert state.state == STATE_OFF
|
||||||
@ -44,7 +44,7 @@ async def test_binary_sensor_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac1-filter"
|
assert entry.unique_id == "uniqueid-ac1-filter"
|
||||||
|
|
||||||
# Test Second Air Filter
|
# Test Second Air Filter
|
||||||
entity_id = "binary_sensor.testname_ac_two_filter"
|
entity_id = "binary_sensor.ac_two_filter"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
@ -54,7 +54,7 @@ async def test_binary_sensor_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac2-filter"
|
assert entry.unique_id == "uniqueid-ac2-filter"
|
||||||
|
|
||||||
# Test First Motion Sensor
|
# Test First Motion Sensor
|
||||||
entity_id = "binary_sensor.testname_zone_open_with_sensor_motion"
|
entity_id = "binary_sensor.ac_one_zone_open_with_sensor_motion"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
@ -64,7 +64,7 @@ async def test_binary_sensor_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac1-z01-motion"
|
assert entry.unique_id == "uniqueid-ac1-z01-motion"
|
||||||
|
|
||||||
# Test Second Motion Sensor
|
# Test Second Motion Sensor
|
||||||
entity_id = "binary_sensor.testname_zone_closed_with_sensor_motion"
|
entity_id = "binary_sensor.ac_one_zone_closed_with_sensor_motion"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_OFF
|
assert state.state == STATE_OFF
|
||||||
@ -74,7 +74,7 @@ async def test_binary_sensor_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac1-z02-motion"
|
assert entry.unique_id == "uniqueid-ac1-z02-motion"
|
||||||
|
|
||||||
# Test First MyZone Sensor (disabled by default)
|
# Test First MyZone Sensor (disabled by default)
|
||||||
entity_id = "binary_sensor.testname_zone_open_with_sensor_myzone"
|
entity_id = "binary_sensor.ac_one_zone_open_with_sensor_myzone"
|
||||||
|
|
||||||
assert not hass.states.get(entity_id)
|
assert not hass.states.get(entity_id)
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ async def test_binary_sensor_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac1-z01-myzone"
|
assert entry.unique_id == "uniqueid-ac1-z01-myzone"
|
||||||
|
|
||||||
# Test Second Motion Sensor (disabled by default)
|
# Test Second Motion Sensor (disabled by default)
|
||||||
entity_id = "binary_sensor.testname_zone_closed_with_sensor_myzone"
|
entity_id = "binary_sensor.ac_one_zone_closed_with_sensor_myzone"
|
||||||
|
|
||||||
assert not hass.states.get(entity_id)
|
assert not hass.states.get(entity_id)
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ async def test_climate_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert len(aioclient_mock.mock_calls) == 1
|
assert len(aioclient_mock.mock_calls) == 1
|
||||||
|
|
||||||
# Test Main Climate Entity
|
# Test Main Climate Entity
|
||||||
entity_id = "climate.testname_ac_one"
|
entity_id = "climate.ac_one"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == HVACMode.FAN_ONLY
|
assert state.state == HVACMode.FAN_ONLY
|
||||||
@ -122,7 +122,7 @@ async def test_climate_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert aioclient_mock.mock_calls[-1][1].path == "/getSystemData"
|
assert aioclient_mock.mock_calls[-1][1].path == "/getSystemData"
|
||||||
|
|
||||||
# Test Climate Zone Entity
|
# Test Climate Zone Entity
|
||||||
entity_id = "climate.testname_zone_open_with_sensor"
|
entity_id = "climate.ac_one_zone_open_with_sensor"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.attributes.get("min_temp") == 16
|
assert state.attributes.get("min_temp") == 16
|
||||||
@ -204,7 +204,7 @@ async def test_climate_async_failed_update(hass, aioclient_mock):
|
|||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
CLIMATE_DOMAIN,
|
CLIMATE_DOMAIN,
|
||||||
SERVICE_SET_TEMPERATURE,
|
SERVICE_SET_TEMPERATURE,
|
||||||
{ATTR_ENTITY_ID: ["climate.testname_ac_one"], ATTR_TEMPERATURE: 25},
|
{ATTR_ENTITY_ID: ["climate.ac_one"], ATTR_TEMPERATURE: 25},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
assert len(aioclient_mock.mock_calls) == 2
|
assert len(aioclient_mock.mock_calls) == 2
|
||||||
|
@ -45,7 +45,7 @@ async def test_cover_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert len(aioclient_mock.mock_calls) == 1
|
assert len(aioclient_mock.mock_calls) == 1
|
||||||
|
|
||||||
# Test Cover Zone Entity
|
# Test Cover Zone Entity
|
||||||
entity_id = "cover.testname_zone_open_without_sensor"
|
entity_id = "cover.ac_two_zone_open_without_sensor"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_OPEN
|
assert state.state == STATE_OPEN
|
||||||
@ -119,8 +119,8 @@ async def test_cover_async_setup_entry(hass, aioclient_mock):
|
|||||||
SERVICE_CLOSE_COVER,
|
SERVICE_CLOSE_COVER,
|
||||||
{
|
{
|
||||||
ATTR_ENTITY_ID: [
|
ATTR_ENTITY_ID: [
|
||||||
"cover.testname_zone_open_without_sensor",
|
"cover.ac_two_zone_open_without_sensor",
|
||||||
"cover.testname_zone_closed_without_sensor",
|
"cover.ac_two_zone_closed_without_sensor",
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
@ -134,8 +134,8 @@ async def test_cover_async_setup_entry(hass, aioclient_mock):
|
|||||||
SERVICE_OPEN_COVER,
|
SERVICE_OPEN_COVER,
|
||||||
{
|
{
|
||||||
ATTR_ENTITY_ID: [
|
ATTR_ENTITY_ID: [
|
||||||
"cover.testname_zone_open_without_sensor",
|
"cover.ac_two_zone_open_without_sensor",
|
||||||
"cover.testname_zone_closed_without_sensor",
|
"cover.ac_two_zone_closed_without_sensor",
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
blocking=True,
|
blocking=True,
|
||||||
|
@ -37,7 +37,7 @@ async def test_select_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert len(aioclient_mock.mock_calls) == 1
|
assert len(aioclient_mock.mock_calls) == 1
|
||||||
|
|
||||||
# Test MyZone Select Entity
|
# Test MyZone Select Entity
|
||||||
entity_id = "select.testname_ac_one_myzone"
|
entity_id = "select.ac_one_myzone"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == "Zone open with Sensor"
|
assert state.state == "Zone open with Sensor"
|
||||||
|
@ -41,7 +41,7 @@ async def test_sensor_platform(hass, aioclient_mock):
|
|||||||
assert len(aioclient_mock.mock_calls) == 1
|
assert len(aioclient_mock.mock_calls) == 1
|
||||||
|
|
||||||
# Test First TimeToOn Sensor
|
# Test First TimeToOn Sensor
|
||||||
entity_id = "sensor.testname_ac_one_time_to_on"
|
entity_id = "sensor.ac_one_time_to_on"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert int(state.state) == 0
|
assert int(state.state) == 0
|
||||||
@ -66,7 +66,7 @@ async def test_sensor_platform(hass, aioclient_mock):
|
|||||||
assert aioclient_mock.mock_calls[-1][1].path == "/getSystemData"
|
assert aioclient_mock.mock_calls[-1][1].path == "/getSystemData"
|
||||||
|
|
||||||
# Test First TimeToOff Sensor
|
# Test First TimeToOff Sensor
|
||||||
entity_id = "sensor.testname_ac_one_time_to_off"
|
entity_id = "sensor.ac_one_time_to_off"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert int(state.state) == 10
|
assert int(state.state) == 10
|
||||||
@ -91,7 +91,7 @@ async def test_sensor_platform(hass, aioclient_mock):
|
|||||||
assert aioclient_mock.mock_calls[-1][1].path == "/getSystemData"
|
assert aioclient_mock.mock_calls[-1][1].path == "/getSystemData"
|
||||||
|
|
||||||
# Test First Zone Vent Sensor
|
# Test First Zone Vent Sensor
|
||||||
entity_id = "sensor.testname_zone_open_with_sensor_vent"
|
entity_id = "sensor.ac_one_zone_open_with_sensor_vent"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert int(state.state) == 100
|
assert int(state.state) == 100
|
||||||
@ -101,7 +101,7 @@ async def test_sensor_platform(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac1-z01-vent"
|
assert entry.unique_id == "uniqueid-ac1-z01-vent"
|
||||||
|
|
||||||
# Test Second Zone Vent Sensor
|
# Test Second Zone Vent Sensor
|
||||||
entity_id = "sensor.testname_zone_closed_with_sensor_vent"
|
entity_id = "sensor.ac_one_zone_closed_with_sensor_vent"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert int(state.state) == 0
|
assert int(state.state) == 0
|
||||||
@ -111,7 +111,7 @@ async def test_sensor_platform(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac1-z02-vent"
|
assert entry.unique_id == "uniqueid-ac1-z02-vent"
|
||||||
|
|
||||||
# Test First Zone Signal Sensor
|
# Test First Zone Signal Sensor
|
||||||
entity_id = "sensor.testname_zone_open_with_sensor_signal"
|
entity_id = "sensor.ac_one_zone_open_with_sensor_signal"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert int(state.state) == 40
|
assert int(state.state) == 40
|
||||||
@ -121,7 +121,7 @@ async def test_sensor_platform(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac1-z01-signal"
|
assert entry.unique_id == "uniqueid-ac1-z01-signal"
|
||||||
|
|
||||||
# Test Second Zone Signal Sensor
|
# Test Second Zone Signal Sensor
|
||||||
entity_id = "sensor.testname_zone_closed_with_sensor_signal"
|
entity_id = "sensor.ac_one_zone_closed_with_sensor_signal"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert int(state.state) == 10
|
assert int(state.state) == 10
|
||||||
@ -131,7 +131,7 @@ async def test_sensor_platform(hass, aioclient_mock):
|
|||||||
assert entry.unique_id == "uniqueid-ac1-z02-signal"
|
assert entry.unique_id == "uniqueid-ac1-z02-signal"
|
||||||
|
|
||||||
# Test First Zone Temp Sensor (disabled by default)
|
# Test First Zone Temp Sensor (disabled by default)
|
||||||
entity_id = "sensor.testname_zone_open_with_sensor_temperature"
|
entity_id = "sensor.ac_one_zone_open_with_sensor_temperature"
|
||||||
|
|
||||||
assert not hass.states.get(entity_id)
|
assert not hass.states.get(entity_id)
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ async def test_cover_async_setup_entry(hass, aioclient_mock):
|
|||||||
assert len(aioclient_mock.mock_calls) == 1
|
assert len(aioclient_mock.mock_calls) == 1
|
||||||
|
|
||||||
# Test Switch Entity
|
# Test Switch Entity
|
||||||
entity_id = "switch.testname_ac_one_fresh_air"
|
entity_id = "switch.ac_one_fresh_air"
|
||||||
state = hass.states.get(entity_id)
|
state = hass.states.get(entity_id)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_OFF
|
assert state.state == STATE_OFF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user