def state_from_config(config, config_validation=True): """Wrap action method with state based condition.""" if config_validation: config = cv.STATE_CONDITION_SCHEMA(config) entity_id = config.get(CONF_ENTITY_ID) req_state = config.get(CONF_STATE) for_period = config.get('for') def if_state(hass, variables=None): """Test if condition.""" return state(hass, entity_id, req_state, for_period) return if_state
def state_from_config(config: ConfigType, config_validation: bool = True) -> ConditionCheckerType: """Wrap action method with state based condition.""" if config_validation: config = cv.STATE_CONDITION_SCHEMA(config) entity_id = config.get(CONF_ENTITY_ID) req_state = cast(str, config.get(CONF_STATE)) for_period = config.get("for") def if_state(hass: HomeAssistant, variables: TemplateVarsType = None) -> bool: """Test if condition.""" return state(hass, entity_id, req_state, for_period) return if_state
def async_condition_from_config( hass: HomeAssistant, config: ConfigType) -> condition.ConditionCheckerType: """Evaluate state based on configuration.""" if config[CONF_TYPE] == CONF_IS_ON: stat = "on" else: stat = "off" state_config = { condition.CONF_CONDITION: "state", condition.CONF_ENTITY_ID: config[CONF_ENTITY_ID], condition.CONF_STATE: stat, } if CONF_FOR in config: state_config[CONF_FOR] = config[CONF_FOR] state_config = cv.STATE_CONDITION_SCHEMA(state_config) state_config = condition.state_validate_config(hass, state_config) return condition.state_from_config(state_config)
def state_from_config( config: ConfigType, config_validation: bool = True ) -> ConditionCheckerType: """Wrap action method with state based condition.""" if config_validation: config = cv.STATE_CONDITION_SCHEMA(config) entity_ids = config.get(CONF_ENTITY_ID, []) req_states: Union[str, List[str]] = config.get(CONF_STATE, []) for_period = config.get("for") if not isinstance(req_states, list): req_states = [req_states] def if_state(hass: HomeAssistant, variables: TemplateVarsType = None) -> bool: """Test if condition.""" return all( state(hass, entity_id, req_states, for_period) for entity_id in entity_ids ) return if_state
def state_from_config(config: ConfigType, config_validation: bool = True) -> ConditionCheckerType: """Wrap action method with state based condition.""" if config_validation: config = cv.STATE_CONDITION_SCHEMA(config) entity_ids = config.get(CONF_ENTITY_ID, []) req_states: str | list[str] = config.get(CONF_STATE, []) for_period = config.get("for") attribute = config.get(CONF_ATTRIBUTE) if not isinstance(req_states, list): req_states = [req_states] @trace_condition_function def if_state(hass: HomeAssistant, variables: TemplateVarsType = None) -> bool: """Test if condition.""" errors = [] for index, entity_id in enumerate(entity_ids): try: with trace_path(["entity_id", str(index)]), trace_condition(variables): if not state(hass, entity_id, req_states, for_period, attribute): return False except ConditionError as ex: errors.append( ConditionErrorIndex("state", index=index, total=len(entity_ids), error=ex)) # Raise the errors if no check was false if errors: raise ConditionErrorContainer("state", errors=errors) return True return if_state