mirror of
https://github.com/home-assistant/core.git
synced 2026-05-21 16:00:12 +01:00
11411a880d
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""Provides triggers for texts."""
|
|
|
|
from homeassistant.const import STATE_UNAVAILABLE, STATE_UNKNOWN
|
|
from homeassistant.core import HomeAssistant, State
|
|
from homeassistant.helpers.automation import DomainSpec
|
|
from homeassistant.helpers.trigger import (
|
|
ENTITY_STATE_TRIGGER_SCHEMA,
|
|
EntityTriggerBase,
|
|
Trigger,
|
|
)
|
|
|
|
from .const import DOMAIN
|
|
|
|
|
|
class TextChangedTrigger(EntityTriggerBase):
|
|
"""Trigger for text entity when its content changes."""
|
|
|
|
_domain_specs = {DOMAIN: DomainSpec()}
|
|
_schema = ENTITY_STATE_TRIGGER_SCHEMA
|
|
|
|
def is_valid_transition(self, from_state: State, to_state: State) -> bool:
|
|
"""Check if the origin state is valid and the state has changed."""
|
|
if from_state.state in (STATE_UNAVAILABLE, STATE_UNKNOWN):
|
|
return False
|
|
return from_state.state != to_state.state
|
|
|
|
def is_valid_state(self, state: State) -> bool:
|
|
"""Check if the new state is not invalid."""
|
|
return state.state not in (STATE_UNAVAILABLE, STATE_UNKNOWN)
|
|
|
|
|
|
TRIGGERS: dict[str, type[Trigger]] = {
|
|
"changed": TextChangedTrigger,
|
|
}
|
|
|
|
|
|
async def async_get_triggers(hass: HomeAssistant) -> dict[str, type[Trigger]]:
|
|
"""Return the triggers for texts."""
|
|
return TRIGGERS
|