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
|
||||
pyvenv.cfg
|
||||
pip-selfcheck.json
|
||||
venv
|
||||
|
||||
# vimmy stuff
|
||||
*.swp
|
||||
|
|
|
@ -34,7 +34,7 @@ def trigger(hass, config, action):
|
|||
hours, minutes, seconds = after.hour, after.minute, after.second
|
||||
elif (CONF_HOURS in config or CONF_MINUTES in config or
|
||||
CONF_SECONDS in config):
|
||||
hours = convert(config.get(CONF_HOURS), int)
|
||||
hours = config.get(CONF_HOURS)
|
||||
minutes = config.get(CONF_MINUTES)
|
||||
seconds = config.get(CONF_SECONDS)
|
||||
else:
|
||||
|
|
|
@ -162,7 +162,7 @@ def track_utc_time_change(hass, action, year=None, month=None, day=None,
|
|||
|
||||
pmp = _process_match_param
|
||||
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)
|
||||
def pattern_time_change_listener(event):
|
||||
|
@ -196,12 +196,13 @@ def track_time_change(hass, action, year=None, month=None, day=None,
|
|||
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. """
|
||||
if parameter is None or parameter == MATCH_ALL:
|
||||
return MATCH_ALL
|
||||
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__'):
|
||||
return (parameter,)
|
||||
else:
|
||||
|
|
|
@ -237,3 +237,21 @@ class TestEventHelpers(unittest.TestCase):
|
|||
self._send_time_changed(datetime(2014, 5, 24, 12, 5, 0))
|
||||
self.hass.pool.block_till_done()
|
||||
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