mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 09:47:52 +00:00
Remove unneeded from_state from device triggers (#45152)
This commit is contained in:
parent
8efb5eea4d
commit
f99c27c6d4
@ -132,14 +132,12 @@ async def async_attach_trigger(
|
||||
) -> CALLBACK_TYPE:
|
||||
"""Attach a trigger."""
|
||||
config = TRIGGER_SCHEMA(config)
|
||||
from_state = None
|
||||
|
||||
if config[CONF_TYPE] == "triggered":
|
||||
to_state = STATE_ALARM_TRIGGERED
|
||||
elif config[CONF_TYPE] == "disarmed":
|
||||
to_state = STATE_ALARM_DISARMED
|
||||
elif config[CONF_TYPE] == "arming":
|
||||
from_state = STATE_ALARM_DISARMED
|
||||
to_state = STATE_ALARM_ARMING
|
||||
elif config[CONF_TYPE] == "armed_home":
|
||||
to_state = STATE_ALARM_ARMED_HOME
|
||||
@ -153,8 +151,6 @@ async def async_attach_trigger(
|
||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||
state_trigger.CONF_TO: to_state,
|
||||
}
|
||||
if from_state:
|
||||
state_config[state_trigger.CONF_FROM] = from_state
|
||||
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
||||
return await state_trigger.async_attach_trigger(
|
||||
hass, state_config, action, automation_info, platform_type="device"
|
||||
|
@ -190,16 +190,13 @@ async def async_attach_trigger(hass, config, action, automation_info):
|
||||
"""Listen for state changes based on configuration."""
|
||||
trigger_type = config[CONF_TYPE]
|
||||
if trigger_type in TURNED_ON:
|
||||
from_state = "off"
|
||||
to_state = "on"
|
||||
else:
|
||||
from_state = "on"
|
||||
to_state = "off"
|
||||
|
||||
state_config = {
|
||||
state_trigger.CONF_PLATFORM: "state",
|
||||
state_trigger.CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||
state_trigger.CONF_FROM: from_state,
|
||||
state_trigger.CONF_TO: to_state,
|
||||
}
|
||||
if CONF_FOR in config:
|
||||
|
@ -74,16 +74,13 @@ async def async_attach_trigger(
|
||||
config = TRIGGER_SCHEMA(config)
|
||||
|
||||
if config[CONF_TYPE] == "turned_on":
|
||||
from_state = STATE_OFF
|
||||
to_state = STATE_ON
|
||||
else:
|
||||
from_state = STATE_ON
|
||||
to_state = STATE_OFF
|
||||
|
||||
state_config = {
|
||||
state_trigger.CONF_PLATFORM: "state",
|
||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||
state_trigger.CONF_FROM: from_state,
|
||||
state_trigger.CONF_TO: to_state,
|
||||
}
|
||||
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
||||
|
@ -74,16 +74,13 @@ async def async_attach_trigger(
|
||||
config = TRIGGER_SCHEMA(config)
|
||||
|
||||
if config[CONF_TYPE] == "locked":
|
||||
from_state = STATE_UNLOCKED
|
||||
to_state = STATE_LOCKED
|
||||
else:
|
||||
from_state = STATE_LOCKED
|
||||
to_state = STATE_UNLOCKED
|
||||
|
||||
state_config = {
|
||||
CONF_PLATFORM: "state",
|
||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||
state_trigger.CONF_FROM: from_state,
|
||||
state_trigger.CONF_TO: to_state,
|
||||
}
|
||||
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
||||
|
@ -17,7 +17,7 @@ from homeassistant.core import CALLBACK_TYPE, HomeAssistant
|
||||
from homeassistant.helpers import config_validation as cv, entity_registry
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from . import DOMAIN, STATE_CLEANING, STATE_DOCKED, STATES
|
||||
from . import DOMAIN, STATE_CLEANING, STATE_DOCKED
|
||||
|
||||
TRIGGER_TYPES = {"cleaning", "docked"}
|
||||
|
||||
@ -71,16 +71,13 @@ async def async_attach_trigger(
|
||||
config = TRIGGER_SCHEMA(config)
|
||||
|
||||
if config[CONF_TYPE] == "cleaning":
|
||||
from_state = [state for state in STATES if state != STATE_CLEANING]
|
||||
to_state = STATE_CLEANING
|
||||
else:
|
||||
from_state = [state for state in STATES if state != STATE_DOCKED]
|
||||
to_state = STATE_DOCKED
|
||||
|
||||
state_config = {
|
||||
CONF_PLATFORM: "state",
|
||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||
state_trigger.CONF_FROM: from_state,
|
||||
state_trigger.CONF_TO: to_state,
|
||||
}
|
||||
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
||||
|
@ -84,16 +84,13 @@ async def async_attach_trigger(
|
||||
# Use the existing state or event triggers from the automation integration.
|
||||
|
||||
if config[CONF_TYPE] == "turned_on":
|
||||
from_state = STATE_OFF
|
||||
to_state = STATE_ON
|
||||
else:
|
||||
from_state = STATE_ON
|
||||
to_state = STATE_OFF
|
||||
|
||||
state_config = {
|
||||
state.CONF_PLATFORM: "state",
|
||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||
state.CONF_FROM: from_state,
|
||||
state.CONF_TO: to_state,
|
||||
}
|
||||
state_config = state.TRIGGER_SCHEMA(state_config)
|
||||
|
@ -230,31 +230,28 @@ async def test_if_fires_on_state_change(hass, calls):
|
||||
)
|
||||
|
||||
# Fake that the entity is armed home.
|
||||
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_PENDING)
|
||||
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_ARMED_HOME)
|
||||
await hass.async_block_till_done()
|
||||
assert len(calls) == 3
|
||||
assert (
|
||||
calls[2].data["some"]
|
||||
== "armed_home - device - alarm_control_panel.entity - pending - armed_home - None"
|
||||
== "armed_home - device - alarm_control_panel.entity - disarmed - armed_home - None"
|
||||
)
|
||||
|
||||
# Fake that the entity is armed away.
|
||||
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_PENDING)
|
||||
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_ARMED_AWAY)
|
||||
await hass.async_block_till_done()
|
||||
assert len(calls) == 4
|
||||
assert (
|
||||
calls[3].data["some"]
|
||||
== "armed_away - device - alarm_control_panel.entity - pending - armed_away - None"
|
||||
== "armed_away - device - alarm_control_panel.entity - armed_home - armed_away - None"
|
||||
)
|
||||
|
||||
# Fake that the entity is armed night.
|
||||
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_PENDING)
|
||||
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_ARMED_NIGHT)
|
||||
await hass.async_block_till_done()
|
||||
assert len(calls) == 5
|
||||
assert (
|
||||
calls[4].data["some"]
|
||||
== "armed_night - device - alarm_control_panel.entity - pending - armed_night - None"
|
||||
== "armed_night - device - alarm_control_panel.entity - armed_away - armed_night - None"
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user