diff --git a/homeassistant/components/light/trigger.py b/homeassistant/components/light/trigger.py index 4fcf178ec72..03a0d516022 100644 --- a/homeassistant/components/light/trigger.py +++ b/homeassistant/components/light/trigger.py @@ -8,6 +8,7 @@ from homeassistant.const import ( ATTR_ENTITY_ID, CONF_PLATFORM, CONF_STATE, + CONF_TARGET, STATE_OFF, STATE_ON, ) @@ -42,10 +43,9 @@ STATE_TRIGGER_SCHEMA = vol.All( vol.Required(ATTR_BEHAVIOR, default=BEHAVIOR_ANY): vol.In( [BEHAVIOR_FIRST, BEHAVIOR_LAST, BEHAVIOR_ANY] ), - **cv.ENTITY_SERVICE_FIELDS, + vol.Required(CONF_TARGET): cv.ENTITY_SERVICE_FIELDS, }, - ), - cv.has_at_least_one_key(*cv.ENTITY_SERVICE_FIELDS), + ) ) @@ -73,7 +73,6 @@ class StateTrigger(Trigger): job = HassJob(action, f"light state trigger {trigger_info}") trigger_data = trigger_info["trigger_data"] - behavior = self.config.get(ATTR_BEHAVIOR) match_config_state = process_state_match(self.config.get(CONF_STATE)) def check_all_match(entity_ids: set[str]) -> bool: @@ -95,6 +94,8 @@ class StateTrigger(Trigger): == 1 ) + behavior = self.config.get(ATTR_BEHAVIOR) + @callback def state_change_listener( target_state_change_data: TargetStateChangedData, @@ -144,8 +145,9 @@ class StateTrigger(Trigger): if split_entity_id(entity_id)[0] == DOMAIN } + target_config = self.config.get(CONF_TARGET, {}) return async_track_target_selector_state_change_event( - self.hass, self.config, state_change_listener, entity_filter + self.hass, target_config, state_change_listener, entity_filter ) diff --git a/tests/components/light/test_trigger.py b/tests/components/light/test_trigger.py index deb7c94765e..659e0656142 100644 --- a/tests/components/light/test_trigger.py +++ b/tests/components/light/test_trigger.py @@ -11,6 +11,7 @@ from homeassistant.const import ( CONF_ENTITY_ID, CONF_PLATFORM, CONF_STATE, + CONF_TARGET, STATE_OFF, STATE_ON, ) @@ -125,7 +126,7 @@ async def test_light_state_trigger_behavior_any( "trigger": { CONF_PLATFORM: "light.state", CONF_STATE: state, - **trigger_target_config, + CONF_TARGET: {**trigger_target_config}, }, "action": { "service": "test.automation", @@ -185,7 +186,7 @@ async def test_light_state_trigger_behavior_first( CONF_PLATFORM: "light.state", CONF_STATE: state, "behavior": "first", - **trigger_target_config, + CONF_TARGET: {**trigger_target_config}, }, "action": { "service": "test.automation", @@ -254,7 +255,7 @@ async def test_light_state_trigger_behavior_last( CONF_PLATFORM: "light.state", CONF_STATE: state, "behavior": "last", - **trigger_target_config, + CONF_TARGET: {**trigger_target_config}, }, "action": { "service": "test.automation",