hourly periodic task
This commit is contained in:
parent
13fbefcdf8
commit
ec5d88b98e
4 changed files with 24 additions and 4 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -72,6 +72,7 @@ nosetests.xml
|
||||||
# venv stuff
|
# venv stuff
|
||||||
pyvenv.cfg
|
pyvenv.cfg
|
||||||
pip-selfcheck.json
|
pip-selfcheck.json
|
||||||
|
venv
|
||||||
|
|
||||||
# vimmy stuff
|
# vimmy stuff
|
||||||
*.swp
|
*.swp
|
||||||
|
|
|
@ -34,7 +34,7 @@ def trigger(hass, config, action):
|
||||||
hours, minutes, seconds = after.hour, after.minute, after.second
|
hours, minutes, seconds = after.hour, after.minute, after.second
|
||||||
elif (CONF_HOURS in config or CONF_MINUTES in config or
|
elif (CONF_HOURS in config or CONF_MINUTES in config or
|
||||||
CONF_SECONDS in config):
|
CONF_SECONDS in config):
|
||||||
hours = convert(config.get(CONF_HOURS), int)
|
hours = config.get(CONF_HOURS)
|
||||||
minutes = config.get(CONF_MINUTES)
|
minutes = config.get(CONF_MINUTES)
|
||||||
seconds = config.get(CONF_SECONDS)
|
seconds = config.get(CONF_SECONDS)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -162,7 +162,7 @@ def track_utc_time_change(hass, action, year=None, month=None, day=None,
|
||||||
|
|
||||||
pmp = _process_match_param
|
pmp = _process_match_param
|
||||||
year, month, day = pmp(year), pmp(month), pmp(day)
|
year, month, day = pmp(year), pmp(month), pmp(day)
|
||||||
hour, minute, second = pmp(hour), pmp(minute), pmp(second)
|
hour, minute, second = pmp(hour, rang=24), pmp(minute), pmp(second)
|
||||||
|
|
||||||
@ft.wraps(action)
|
@ft.wraps(action)
|
||||||
def pattern_time_change_listener(event):
|
def pattern_time_change_listener(event):
|
||||||
|
@ -196,12 +196,13 @@ def track_time_change(hass, action, year=None, month=None, day=None,
|
||||||
local=True)
|
local=True)
|
||||||
|
|
||||||
|
|
||||||
def _process_match_param(parameter):
|
def _process_match_param(parameter, rang=None):
|
||||||
""" Wraps parameter in a tuple if it is not one and returns it. """
|
""" Wraps parameter in a tuple if it is not one and returns it. """
|
||||||
if parameter is None or parameter == MATCH_ALL:
|
if parameter is None or parameter == MATCH_ALL:
|
||||||
return MATCH_ALL
|
return MATCH_ALL
|
||||||
elif isinstance(parameter, str) and parameter.startswith('/'):
|
elif isinstance(parameter, str) and parameter.startswith('/'):
|
||||||
return tuple(range(0, 60, convert(parameter.lstrip('/'), int)))
|
rang = rang or 60
|
||||||
|
return tuple(range(0, rang, convert(parameter.lstrip('/'), int)))
|
||||||
elif isinstance(parameter, str) or not hasattr(parameter, '__iter__'):
|
elif isinstance(parameter, str) or not hasattr(parameter, '__iter__'):
|
||||||
return (parameter,)
|
return (parameter,)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -237,3 +237,21 @@ class TestEventHelpers(unittest.TestCase):
|
||||||
self._send_time_changed(datetime(2014, 5, 24, 12, 5, 0))
|
self._send_time_changed(datetime(2014, 5, 24, 12, 5, 0))
|
||||||
self.hass.pool.block_till_done()
|
self.hass.pool.block_till_done()
|
||||||
self.assertEqual(2, len(specific_runs))
|
self.assertEqual(2, len(specific_runs))
|
||||||
|
|
||||||
|
def test_periodic_task_hour(self):
|
||||||
|
specific_runs = []
|
||||||
|
|
||||||
|
track_utc_time_change(
|
||||||
|
self.hass, lambda x: specific_runs.append(1), hour='/2')
|
||||||
|
|
||||||
|
self._send_time_changed(datetime(2014, 5, 24, 12, 0, 0))
|
||||||
|
self.hass.pool.block_till_done()
|
||||||
|
self.assertEqual(1, len(specific_runs))
|
||||||
|
|
||||||
|
self._send_time_changed(datetime(2014, 5, 24, 13, 0, 0))
|
||||||
|
self.hass.pool.block_till_done()
|
||||||
|
self.assertEqual(1, len(specific_runs))
|
||||||
|
|
||||||
|
self._send_time_changed(datetime(2014, 5, 24, 14, 0, 0))
|
||||||
|
self.hass.pool.block_till_done()
|
||||||
|
self.assertEqual(2, len(specific_runs))
|
Loading…
Add table
Reference in a new issue