mirror of
https://github.com/home-assistant/core.git
synced 2025-04-26 18:27:51 +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:
|
) -> CALLBACK_TYPE:
|
||||||
"""Attach a trigger."""
|
"""Attach a trigger."""
|
||||||
config = TRIGGER_SCHEMA(config)
|
config = TRIGGER_SCHEMA(config)
|
||||||
from_state = None
|
|
||||||
|
|
||||||
if config[CONF_TYPE] == "triggered":
|
if config[CONF_TYPE] == "triggered":
|
||||||
to_state = STATE_ALARM_TRIGGERED
|
to_state = STATE_ALARM_TRIGGERED
|
||||||
elif config[CONF_TYPE] == "disarmed":
|
elif config[CONF_TYPE] == "disarmed":
|
||||||
to_state = STATE_ALARM_DISARMED
|
to_state = STATE_ALARM_DISARMED
|
||||||
elif config[CONF_TYPE] == "arming":
|
elif config[CONF_TYPE] == "arming":
|
||||||
from_state = STATE_ALARM_DISARMED
|
|
||||||
to_state = STATE_ALARM_ARMING
|
to_state = STATE_ALARM_ARMING
|
||||||
elif config[CONF_TYPE] == "armed_home":
|
elif config[CONF_TYPE] == "armed_home":
|
||||||
to_state = STATE_ALARM_ARMED_HOME
|
to_state = STATE_ALARM_ARMED_HOME
|
||||||
@ -153,8 +151,6 @@ async def async_attach_trigger(
|
|||||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||||
state_trigger.CONF_TO: to_state,
|
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)
|
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
||||||
return await state_trigger.async_attach_trigger(
|
return await state_trigger.async_attach_trigger(
|
||||||
hass, state_config, action, automation_info, platform_type="device"
|
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."""
|
"""Listen for state changes based on configuration."""
|
||||||
trigger_type = config[CONF_TYPE]
|
trigger_type = config[CONF_TYPE]
|
||||||
if trigger_type in TURNED_ON:
|
if trigger_type in TURNED_ON:
|
||||||
from_state = "off"
|
|
||||||
to_state = "on"
|
to_state = "on"
|
||||||
else:
|
else:
|
||||||
from_state = "on"
|
|
||||||
to_state = "off"
|
to_state = "off"
|
||||||
|
|
||||||
state_config = {
|
state_config = {
|
||||||
state_trigger.CONF_PLATFORM: "state",
|
state_trigger.CONF_PLATFORM: "state",
|
||||||
state_trigger.CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
state_trigger.CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||||
state_trigger.CONF_FROM: from_state,
|
|
||||||
state_trigger.CONF_TO: to_state,
|
state_trigger.CONF_TO: to_state,
|
||||||
}
|
}
|
||||||
if CONF_FOR in config:
|
if CONF_FOR in config:
|
||||||
|
@ -74,16 +74,13 @@ async def async_attach_trigger(
|
|||||||
config = TRIGGER_SCHEMA(config)
|
config = TRIGGER_SCHEMA(config)
|
||||||
|
|
||||||
if config[CONF_TYPE] == "turned_on":
|
if config[CONF_TYPE] == "turned_on":
|
||||||
from_state = STATE_OFF
|
|
||||||
to_state = STATE_ON
|
to_state = STATE_ON
|
||||||
else:
|
else:
|
||||||
from_state = STATE_ON
|
|
||||||
to_state = STATE_OFF
|
to_state = STATE_OFF
|
||||||
|
|
||||||
state_config = {
|
state_config = {
|
||||||
state_trigger.CONF_PLATFORM: "state",
|
state_trigger.CONF_PLATFORM: "state",
|
||||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||||
state_trigger.CONF_FROM: from_state,
|
|
||||||
state_trigger.CONF_TO: to_state,
|
state_trigger.CONF_TO: to_state,
|
||||||
}
|
}
|
||||||
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
||||||
|
@ -74,16 +74,13 @@ async def async_attach_trigger(
|
|||||||
config = TRIGGER_SCHEMA(config)
|
config = TRIGGER_SCHEMA(config)
|
||||||
|
|
||||||
if config[CONF_TYPE] == "locked":
|
if config[CONF_TYPE] == "locked":
|
||||||
from_state = STATE_UNLOCKED
|
|
||||||
to_state = STATE_LOCKED
|
to_state = STATE_LOCKED
|
||||||
else:
|
else:
|
||||||
from_state = STATE_LOCKED
|
|
||||||
to_state = STATE_UNLOCKED
|
to_state = STATE_UNLOCKED
|
||||||
|
|
||||||
state_config = {
|
state_config = {
|
||||||
CONF_PLATFORM: "state",
|
CONF_PLATFORM: "state",
|
||||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||||
state_trigger.CONF_FROM: from_state,
|
|
||||||
state_trigger.CONF_TO: to_state,
|
state_trigger.CONF_TO: to_state,
|
||||||
}
|
}
|
||||||
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
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 import config_validation as cv, entity_registry
|
||||||
from homeassistant.helpers.typing import ConfigType
|
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"}
|
TRIGGER_TYPES = {"cleaning", "docked"}
|
||||||
|
|
||||||
@ -71,16 +71,13 @@ async def async_attach_trigger(
|
|||||||
config = TRIGGER_SCHEMA(config)
|
config = TRIGGER_SCHEMA(config)
|
||||||
|
|
||||||
if config[CONF_TYPE] == "cleaning":
|
if config[CONF_TYPE] == "cleaning":
|
||||||
from_state = [state for state in STATES if state != STATE_CLEANING]
|
|
||||||
to_state = STATE_CLEANING
|
to_state = STATE_CLEANING
|
||||||
else:
|
else:
|
||||||
from_state = [state for state in STATES if state != STATE_DOCKED]
|
|
||||||
to_state = STATE_DOCKED
|
to_state = STATE_DOCKED
|
||||||
|
|
||||||
state_config = {
|
state_config = {
|
||||||
CONF_PLATFORM: "state",
|
CONF_PLATFORM: "state",
|
||||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||||
state_trigger.CONF_FROM: from_state,
|
|
||||||
state_trigger.CONF_TO: to_state,
|
state_trigger.CONF_TO: to_state,
|
||||||
}
|
}
|
||||||
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
|
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.
|
# Use the existing state or event triggers from the automation integration.
|
||||||
|
|
||||||
if config[CONF_TYPE] == "turned_on":
|
if config[CONF_TYPE] == "turned_on":
|
||||||
from_state = STATE_OFF
|
|
||||||
to_state = STATE_ON
|
to_state = STATE_ON
|
||||||
else:
|
else:
|
||||||
from_state = STATE_ON
|
|
||||||
to_state = STATE_OFF
|
to_state = STATE_OFF
|
||||||
|
|
||||||
state_config = {
|
state_config = {
|
||||||
state.CONF_PLATFORM: "state",
|
state.CONF_PLATFORM: "state",
|
||||||
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
|
||||||
state.CONF_FROM: from_state,
|
|
||||||
state.CONF_TO: to_state,
|
state.CONF_TO: to_state,
|
||||||
}
|
}
|
||||||
state_config = state.TRIGGER_SCHEMA(state_config)
|
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.
|
# 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)
|
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_ARMED_HOME)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert len(calls) == 3
|
assert len(calls) == 3
|
||||||
assert (
|
assert (
|
||||||
calls[2].data["some"]
|
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.
|
# 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)
|
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_ARMED_AWAY)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert len(calls) == 4
|
assert len(calls) == 4
|
||||||
assert (
|
assert (
|
||||||
calls[3].data["some"]
|
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.
|
# 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)
|
hass.states.async_set("alarm_control_panel.entity", STATE_ALARM_ARMED_NIGHT)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert len(calls) == 5
|
assert len(calls) == 5
|
||||||
assert (
|
assert (
|
||||||
calls[4].data["some"]
|
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