mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Allow arm levels be in order for google assistant (#119645)
This commit is contained in:
parent
95b9e15306
commit
097844aca6
@ -1553,19 +1553,20 @@ class ArmDisArmTrait(_Trait):
|
||||
|
||||
state_to_service = {
|
||||
STATE_ALARM_ARMED_HOME: SERVICE_ALARM_ARM_HOME,
|
||||
STATE_ALARM_ARMED_AWAY: SERVICE_ALARM_ARM_AWAY,
|
||||
STATE_ALARM_ARMED_NIGHT: SERVICE_ALARM_ARM_NIGHT,
|
||||
STATE_ALARM_ARMED_AWAY: SERVICE_ALARM_ARM_AWAY,
|
||||
STATE_ALARM_ARMED_CUSTOM_BYPASS: SERVICE_ALARM_ARM_CUSTOM_BYPASS,
|
||||
STATE_ALARM_TRIGGERED: SERVICE_ALARM_TRIGGER,
|
||||
}
|
||||
|
||||
state_to_support = {
|
||||
STATE_ALARM_ARMED_HOME: AlarmControlPanelEntityFeature.ARM_HOME,
|
||||
STATE_ALARM_ARMED_AWAY: AlarmControlPanelEntityFeature.ARM_AWAY,
|
||||
STATE_ALARM_ARMED_NIGHT: AlarmControlPanelEntityFeature.ARM_NIGHT,
|
||||
STATE_ALARM_ARMED_AWAY: AlarmControlPanelEntityFeature.ARM_AWAY,
|
||||
STATE_ALARM_ARMED_CUSTOM_BYPASS: AlarmControlPanelEntityFeature.ARM_CUSTOM_BYPASS,
|
||||
STATE_ALARM_TRIGGERED: AlarmControlPanelEntityFeature.TRIGGER,
|
||||
}
|
||||
"""The list of states to support in increasing security state."""
|
||||
|
||||
@staticmethod
|
||||
def supported(domain, features, device_class, _):
|
||||
@ -1592,7 +1593,7 @@ class ArmDisArmTrait(_Trait):
|
||||
if STATE_ALARM_TRIGGERED in states:
|
||||
states.remove(STATE_ALARM_TRIGGERED)
|
||||
|
||||
if len(states) != 1:
|
||||
if not states:
|
||||
raise SmartHomeError(ERR_NOT_SUPPORTED, "ArmLevel missing")
|
||||
|
||||
return states[0]
|
||||
@ -1614,7 +1615,7 @@ class ArmDisArmTrait(_Trait):
|
||||
}
|
||||
levels.append(level)
|
||||
|
||||
response["availableArmLevels"] = {"levels": levels, "ordered": False}
|
||||
response["availableArmLevels"] = {"levels": levels, "ordered": True}
|
||||
return response
|
||||
|
||||
def query_attributes(self):
|
||||
@ -1631,8 +1632,8 @@ class ArmDisArmTrait(_Trait):
|
||||
async def execute(self, command, data, params, challenge):
|
||||
"""Execute an ArmDisarm command."""
|
||||
if params["arm"] and not params.get("cancel"):
|
||||
# If no arm level given, we can only arm it if there is
|
||||
# only one supported arm type. We never default to triggered.
|
||||
# If no arm level given, we we arm the first supported
|
||||
# level in state_to_support.
|
||||
if not (arm_level := params.get("armLevel")):
|
||||
arm_level = self._default_arm_state()
|
||||
|
||||
|
@ -1763,7 +1763,7 @@ async def test_arm_disarm_arm_away(hass: HomeAssistant) -> None:
|
||||
],
|
||||
},
|
||||
],
|
||||
"ordered": False,
|
||||
"ordered": True,
|
||||
}
|
||||
}
|
||||
|
||||
@ -1905,7 +1905,8 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
{
|
||||
alarm_control_panel.ATTR_CODE_ARM_REQUIRED: True,
|
||||
ATTR_SUPPORTED_FEATURES: AlarmControlPanelEntityFeature.TRIGGER
|
||||
| AlarmControlPanelEntityFeature.ARM_CUSTOM_BYPASS,
|
||||
| AlarmControlPanelEntityFeature.ARM_HOME
|
||||
| AlarmControlPanelEntityFeature.ARM_AWAY,
|
||||
},
|
||||
),
|
||||
PIN_CONFIG,
|
||||
@ -1914,10 +1915,19 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
"availableArmLevels": {
|
||||
"levels": [
|
||||
{
|
||||
"level_name": "armed_custom_bypass",
|
||||
"level_name": "armed_home",
|
||||
"level_values": [
|
||||
{
|
||||
"level_synonym": ["armed custom bypass", "custom"],
|
||||
"level_synonym": ["armed home", "home"],
|
||||
"lang": "en",
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
"level_name": "armed_away",
|
||||
"level_values": [
|
||||
{
|
||||
"level_synonym": ["armed away", "away"],
|
||||
"lang": "en",
|
||||
}
|
||||
],
|
||||
@ -1927,12 +1937,12 @@ async def test_arm_disarm_disarm(hass: HomeAssistant) -> None:
|
||||
"level_values": [{"level_synonym": ["triggered"], "lang": "en"}],
|
||||
},
|
||||
],
|
||||
"ordered": False,
|
||||
"ordered": True,
|
||||
}
|
||||
}
|
||||
|
||||
assert trt.query_attributes() == {
|
||||
"currentArmLevel": "armed_custom_bypass",
|
||||
"currentArmLevel": "armed_home",
|
||||
"isArmed": False,
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user