Remove unneeded from_state from device triggers (#45152)

This commit is contained in:
Erik Montnemery 2021-02-08 11:09:45 +01:00 committed by GitHub
parent 8efb5eea4d
commit f99c27c6d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 4 additions and 26 deletions

View File

@ -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"

View File

@ -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:

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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"
) )