Skip to content
Snippets Groups Projects
Commit 455a9c83 authored by Philip Lundrigan's avatar Philip Lundrigan
Browse files

Simplify logic

parent a517784c
No related branches found
No related tags found
No related merge requests found
...@@ -39,17 +39,19 @@ def trigger(hass, config, action): ...@@ -39,17 +39,19 @@ def trigger(hass, config, action):
return False return False
if value_template is not None: if value_template is not None:
renderer = lambda value: template.render(hass, value_template, value) renderer = lambda value: template.render(hass,
value_template,
{'value': value})
else: else:
renderer = None renderer = lambda value: value.state
# pylint: disable=unused-argument # pylint: disable=unused-argument
def state_automation_listener(entity, from_s, to_s): def state_automation_listener(entity, from_s, to_s):
""" Listens for state changes and calls action. """ """ Listens for state changes and calls action. """
# Fire action if we go from outside range into range # Fire action if we go from outside range into range
if _in_range(to_s, above, below, renderer) and \ if _in_range(above, below, renderer(to_s)) and \
(from_s is None or not _in_range(from_s, above, below, renderer)): (from_s is None or not _in_range(above, below, renderer(from_s))):
action() action()
track_state_change( track_state_change(
...@@ -78,22 +80,22 @@ def if_action(hass, config): ...@@ -78,22 +80,22 @@ def if_action(hass, config):
return None return None
if value_template is not None: if value_template is not None:
renderer = lambda value: template.render(hass, value_template, value) renderer = lambda value: template.render(hass,
value_template,
{'value': value})
else: else:
renderer = None renderer = lambda value: value.state
def if_numeric_state(): def if_numeric_state():
""" Test numeric state condition. """ """ Test numeric state condition. """
state = hass.states.get(entity_id) state = hass.states.get(entity_id)
return state is not None and _in_range(state, above, below, renderer) return state is not None and _in_range(above, below, renderer(state))
return if_numeric_state return if_numeric_state
def _in_range(state, range_start, range_end, renderer): def _in_range(range_start, range_end, value):
""" Checks if value is inside the range """ """ Checks if value is inside the range """
value = state.state if renderer is None else renderer({'value': state})
try: try:
value = float(value) value = float(value)
except ValueError: except ValueError:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment