Implement new state property for alarm_control_panel which is using an enum (#126283)

* Alarm state from enum

* Fixes

* Set final

* Fix rebase

* Test const

* Fix breaking version

* Fix other for alarm_control_panel

* Fix integrations

* More

* More

* More

* More

* Fix zha

* Replace _attr_state

* Fix alarm_control_panel

* Fix tests

* Fixes

* Mods

* Change some

* More

* More

* More

* Tests

* Last tests

* Return enum

* Fix zha

* Remove not needed check

* Fix wording

* Fix homekit

* Mod prometheus

* Fix mypy

* Fix homekit

* Fix ifttt
This commit is contained in:
G Johansson
2024-10-21 22:54:27 +02:00
committed by GitHub
parent 59ad69b637
commit cdfec7ebb4
90 changed files with 2010 additions and 1810 deletions

View File

@@ -33,7 +33,10 @@ from homeassistant.components import (
valve,
water_heater,
)
from homeassistant.components.alarm_control_panel import AlarmControlPanelEntityFeature
from homeassistant.components.alarm_control_panel import (
AlarmControlPanelEntityFeature,
AlarmControlPanelState,
)
from homeassistant.components.camera import CameraEntityFeature
from homeassistant.components.climate import ClimateEntityFeature
from homeassistant.components.cover import CoverEntityFeature
@@ -63,9 +66,6 @@ from homeassistant.const import (
EVENT_CALL_SERVICE,
SERVICE_TURN_OFF,
SERVICE_TURN_ON,
STATE_ALARM_ARMED_AWAY,
STATE_ALARM_DISARMED,
STATE_ALARM_PENDING,
STATE_IDLE,
STATE_OFF,
STATE_ON,
@@ -1734,7 +1734,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_ARMED_AWAY,
AlarmControlPanelState.ARMED_AWAY,
{
alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True,
ATTR_SUPPORTED_FEATURES: AlarmControlPanelEntityFeature.ARM_HOME
@@ -1765,11 +1765,12 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
assert trt.query_attributes() == {
"isArmed": True,
"currentArmLevel": STATE_ALARM_ARMED_AWAY,
"currentArmLevel": AlarmControlPanelState.ARMED_AWAY,
}
assert trt.can_execute(
trait.COMMAND_ARM_DISARM, {"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY}
trait.COMMAND_ARM_DISARM,
{"arm": True, "armLevel": AlarmControlPanelState.ARMED_AWAY},
)
calls = async_mock_service(
@@ -1782,7 +1783,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_DISARMED,
AlarmControlPanelState.DISARMED,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True},
),
BASIC_CONFIG,
@@ -1791,7 +1792,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
await trt.execute(
trait.COMMAND_ARM_DISARM,
BASIC_DATA,
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
{"arm": True, "armLevel": AlarmControlPanelState.ARMED_AWAY},
{},
)
assert len(calls) == 0
@@ -1801,7 +1802,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_DISARMED,
AlarmControlPanelState.DISARMED,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True},
),
PIN_CONFIG,
@@ -1811,7 +1812,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
await trt.execute(
trait.COMMAND_ARM_DISARM,
PIN_DATA,
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
{"arm": True, "armLevel": AlarmControlPanelState.ARMED_AWAY},
{},
)
assert len(calls) == 0
@@ -1823,7 +1824,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
await trt.execute(
trait.COMMAND_ARM_DISARM,
PIN_DATA,
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
{"arm": True, "armLevel": AlarmControlPanelState.ARMED_AWAY},
{"pin": 9999},
)
assert len(calls) == 0
@@ -1834,7 +1835,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
await trt.execute(
trait.COMMAND_ARM_DISARM,
PIN_DATA,
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
{"arm": True, "armLevel": AlarmControlPanelState.ARMED_AWAY},
{"pin": "1234"},
)
@@ -1845,7 +1846,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_ARMED_AWAY,
AlarmControlPanelState.ARMED_AWAY,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True},
),
PIN_CONFIG,
@@ -1854,7 +1855,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
await trt.execute(
trait.COMMAND_ARM_DISARM,
PIN_DATA,
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
{"arm": True, "armLevel": AlarmControlPanelState.ARMED_AWAY},
{},
)
assert len(calls) == 1
@@ -1865,7 +1866,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_DISARMED,
AlarmControlPanelState.DISARMED,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: False},
),
PIN_CONFIG,
@@ -1873,7 +1874,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
await trt.execute(
trait.COMMAND_ARM_DISARM,
PIN_DATA,
{"arm": True, "armLevel": STATE_ALARM_ARMED_AWAY},
{"arm": True, "armLevel": AlarmControlPanelState.ARMED_AWAY},
{},
)
assert len(calls) == 2
@@ -1897,7 +1898,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_DISARMED,
AlarmControlPanelState.DISARMED,
{
alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True,
ATTR_SUPPORTED_FEATURES: AlarmControlPanelEntityFeature.TRIGGER
@@ -1953,7 +1954,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_ARMED_AWAY,
AlarmControlPanelState.ARMED_AWAY,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True},
),
BASIC_CONFIG,
@@ -1968,7 +1969,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_ARMED_AWAY,
AlarmControlPanelState.ARMED_AWAY,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True},
),
PIN_CONFIG,
@@ -2002,7 +2003,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_DISARMED,
AlarmControlPanelState.DISARMED,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True},
),
PIN_CONFIG,
@@ -2016,7 +2017,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_ARMED_AWAY,
AlarmControlPanelState.ARMED_AWAY,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: False},
),
PIN_CONFIG,
@@ -2036,7 +2037,7 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
hass,
State(
"alarm_control_panel.alarm",
STATE_ALARM_PENDING,
AlarmControlPanelState.PENDING,
{alarm_control_panel.ATTR_CODE_ARM_REQUIRED: False},
),
PIN_CONFIG,