Remove state attributes in Totalconnect (#142625)
parent
1480b77461
commit
583eb1a80e
|
@ -97,22 +97,6 @@ class TotalConnectAlarm(TotalConnectLocationEntity, AlarmControlPanelEntity):
|
|||
@property
|
||||
def alarm_state(self) -> AlarmControlPanelState | None:
|
||||
"""Return the state of the device."""
|
||||
# State attributes can be removed in 2025.3
|
||||
attr = {
|
||||
"location_id": self._location.location_id,
|
||||
"partition": self._partition_id,
|
||||
"ac_loss": self._location.ac_loss,
|
||||
"low_battery": self._location.low_battery,
|
||||
"cover_tampered": self._location.is_cover_tampered(),
|
||||
"triggered_source": None,
|
||||
"triggered_zone": None,
|
||||
}
|
||||
|
||||
if self._partition_id == 1:
|
||||
attr["location_name"] = self.device.name
|
||||
else:
|
||||
attr["location_name"] = f"{self.device.name} partition {self._partition_id}"
|
||||
|
||||
state: AlarmControlPanelState | None = None
|
||||
if self._partition.arming_state.is_disarmed():
|
||||
state = AlarmControlPanelState.DISARMED
|
||||
|
@ -128,17 +112,12 @@ class TotalConnectAlarm(TotalConnectLocationEntity, AlarmControlPanelEntity):
|
|||
state = AlarmControlPanelState.ARMING
|
||||
elif self._partition.arming_state.is_disarming():
|
||||
state = AlarmControlPanelState.DISARMING
|
||||
elif self._partition.arming_state.is_triggered_police():
|
||||
elif (
|
||||
self._partition.arming_state.is_triggered_police()
|
||||
or self._partition.arming_state.is_triggered_fire()
|
||||
or self._partition.arming_state.is_triggered_gas()
|
||||
):
|
||||
state = AlarmControlPanelState.TRIGGERED
|
||||
attr["triggered_source"] = "Police/Medical"
|
||||
elif self._partition.arming_state.is_triggered_fire():
|
||||
state = AlarmControlPanelState.TRIGGERED
|
||||
attr["triggered_source"] = "Fire/Smoke"
|
||||
elif self._partition.arming_state.is_triggered_gas():
|
||||
state = AlarmControlPanelState.TRIGGERED
|
||||
attr["triggered_source"] = "Carbon Monoxide"
|
||||
|
||||
self._attr_extra_state_attributes = attr
|
||||
|
||||
return state
|
||||
|
||||
|
|
|
@ -36,19 +36,11 @@
|
|||
# name: test_attributes[alarm_control_panel.test-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'ac_loss': False,
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
'cover_tampered': False,
|
||||
'friendly_name': 'test',
|
||||
'location_id': 123456,
|
||||
'location_name': 'test',
|
||||
'low_battery': False,
|
||||
'partition': 1,
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 7>,
|
||||
'triggered_source': None,
|
||||
'triggered_zone': None,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'alarm_control_panel.test',
|
||||
|
@ -95,19 +87,11 @@
|
|||
# name: test_attributes[alarm_control_panel.test_partition_2-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'ac_loss': False,
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
'cover_tampered': False,
|
||||
'friendly_name': 'test Partition 2',
|
||||
'location_id': 123456,
|
||||
'location_name': 'test partition 2',
|
||||
'low_battery': False,
|
||||
'partition': 2,
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 7>,
|
||||
'triggered_source': None,
|
||||
'triggered_zone': None,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'alarm_control_panel.test_partition_2',
|
||||
|
|
|
@ -50,9 +50,6 @@ from .common import (
|
|||
RESPONSE_DISARMED,
|
||||
RESPONSE_DISARMING,
|
||||
RESPONSE_SUCCESS,
|
||||
RESPONSE_TRIGGERED_CARBON_MONOXIDE,
|
||||
RESPONSE_TRIGGERED_FIRE,
|
||||
RESPONSE_TRIGGERED_POLICE,
|
||||
RESPONSE_UNKNOWN,
|
||||
RESPONSE_USER_CODE_INVALID,
|
||||
TOTALCONNECT_REQUEST,
|
||||
|
@ -195,7 +192,7 @@ async def test_arm_home_instant_failure(hass: HomeAssistant) -> None:
|
|||
DOMAIN, SERVICE_ALARM_ARM_HOME_INSTANT, DATA, blocking=True
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
assert f"{err.value}" == "Usercode is invalid, did not arm home instant"
|
||||
assert str(err.value) == "Usercode is invalid, did not arm home instant"
|
||||
assert hass.states.get(ENTITY_ID).state == AlarmControlPanelState.DISARMED
|
||||
# should have started a re-auth flow
|
||||
assert len(hass.config_entries.flow.async_progress_by_handler(DOMAIN)) == 1
|
||||
|
@ -513,45 +510,6 @@ async def test_disarming(hass: HomeAssistant, freezer: FrozenDateTimeFactory) ->
|
|||
assert hass.states.get(ENTITY_ID).state == AlarmControlPanelState.DISARMING
|
||||
|
||||
|
||||
async def test_triggered_fire(hass: HomeAssistant) -> None:
|
||||
"""Test triggered by fire."""
|
||||
responses = [RESPONSE_TRIGGERED_FIRE]
|
||||
await setup_platform(hass, ALARM_DOMAIN)
|
||||
with patch(TOTALCONNECT_REQUEST, side_effect=responses) as mock_request:
|
||||
await async_update_entity(hass, ENTITY_ID)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get(ENTITY_ID)
|
||||
assert state.state == AlarmControlPanelState.TRIGGERED
|
||||
assert state.attributes.get("triggered_source") == "Fire/Smoke"
|
||||
assert mock_request.call_count == 1
|
||||
|
||||
|
||||
async def test_triggered_police(hass: HomeAssistant) -> None:
|
||||
"""Test triggered by police."""
|
||||
responses = [RESPONSE_TRIGGERED_POLICE]
|
||||
await setup_platform(hass, ALARM_DOMAIN)
|
||||
with patch(TOTALCONNECT_REQUEST, side_effect=responses) as mock_request:
|
||||
await async_update_entity(hass, ENTITY_ID)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get(ENTITY_ID)
|
||||
assert state.state == AlarmControlPanelState.TRIGGERED
|
||||
assert state.attributes.get("triggered_source") == "Police/Medical"
|
||||
assert mock_request.call_count == 1
|
||||
|
||||
|
||||
async def test_triggered_carbon_monoxide(hass: HomeAssistant) -> None:
|
||||
"""Test triggered by carbon monoxide."""
|
||||
responses = [RESPONSE_TRIGGERED_CARBON_MONOXIDE]
|
||||
await setup_platform(hass, ALARM_DOMAIN)
|
||||
with patch(TOTALCONNECT_REQUEST, side_effect=responses) as mock_request:
|
||||
await async_update_entity(hass, ENTITY_ID)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get(ENTITY_ID)
|
||||
assert state.state == AlarmControlPanelState.TRIGGERED
|
||||
assert state.attributes.get("triggered_source") == "Carbon Monoxide"
|
||||
assert mock_request.call_count == 1
|
||||
|
||||
|
||||
async def test_armed_custom(hass: HomeAssistant) -> None:
|
||||
"""Test armed custom."""
|
||||
responses = [RESPONSE_ARMED_CUSTOM]
|
||||
|
|
Loading…
Reference in New Issue