diff --git a/homeassistant/components/scheduler/__init__.py b/homeassistant/components/scheduler/__init__.py index 1894d9eb8bf..19e105e67ba 100644 --- a/homeassistant/components/scheduler/__init__.py +++ b/homeassistant/components/scheduler/__init__.py @@ -39,22 +39,22 @@ _SCHEDULE_FILE = 'schedule.json' def setup(hass, config): """ Create the schedules """ - def setup_schedule(description): + def setup_schedule(schedule_data): """ setup a schedule based on the description """ - schedule = Schedule(hass, description['id'], - name=description['name'], - description=description['description'], - entity_ids=description['entity_ids'], - days=description['days']) + schedule = Schedule(schedule_data['id'], + name=schedule_data['name'], + description=schedule_data['description'], + entity_ids=schedule_data['entity_ids'], + days=schedule_data['days']) - for event_description in description['events']: - event_type = \ - get_component('scheduler.{}'.format(event_description['type'])) - event = event_type.create(schedule, event_description) - schedule.add_event(event) + for event_data in schedule_data['events']: + event_listener_type = \ + get_component('scheduler.{}'.format(event_data['type'])) + event_listener = event_listener_type.create(schedule, event_data) + schedule.add_event_listener(event_listener) - schedule.schedule() + schedule.schedule(hass) return True with open(hass.get_config_path(_SCHEDULE_FILE)) as schedule_file: @@ -69,11 +69,9 @@ def setup(hass, config): class Schedule(object): """ A Schedule """ - def __init__(self, hass, schedule_id, name=None, description=None, + def __init__(self, schedule_id, name=None, description=None, entity_ids=None, days=None): - self.hass = hass - self.schedule_id = schedule_id self.name = name self.description = description @@ -82,27 +80,27 @@ class Schedule(object): self.days = days or [0, 1, 2, 3, 4, 5, 6] - self._events = [] + self._event_listeners = [] - def add_event(self, event): + def add_event_listener(self, event_listener): """ Add a event to the schedule """ - self._events.append(event) + self._event_listeners.append(event_listener) - def schedule(self): + def schedule(self, hass): """ Schedule all the events in the schdule """ - for event in self._events: - event.schedule() + for event in self._event_listeners: + event.schedule(hass) -class Event(object): +class EventListener(object): """ The base Event class that the schedule uses """ def __init__(self, schedule): self._schedule = schedule - def schedule(self): + def schedule(self, hass): """ Schedule the event """ pass - def execute(self): + def execute(self, hass): """ execute the event """ pass diff --git a/homeassistant/components/scheduler/time.py b/homeassistant/components/scheduler/time.py index 14081c25a5f..7e737d758f4 100644 --- a/homeassistant/components/scheduler/time.py +++ b/homeassistant/components/scheduler/time.py @@ -15,34 +15,33 @@ which time. from datetime import datetime, timedelta import logging -from homeassistant.components.scheduler import Event +from homeassistant.components.scheduler import EventListener +from homeassistant.components import ATTR_ENTITY_ID _LOGGER = logging.getLogger(__name__) -def create(schedule, description): +def create(schedule, event_listener_data): """ Create a TimeEvent based on the description """ - service = description['service'] - (hour, minute) = [int(x) for x in description['time'].split(':')] + service = event_listener_data['service'] + (hour, minute) = [int(x) for x in event_listener_data['time'].split(':')] - return TimeEvent(schedule, service, hour, minute) + return TimeEventListener(schedule, service, hour, minute) -class TimeEvent(Event): +class TimeEventListener(EventListener): """ The time event that the scheduler uses """ def __init__(self, schedule, service, hour, minute): - Event.__init__(self, schedule) + EventListener.__init__(self, schedule) (self._domain, self._service) = service.split('.') self._hour = hour self._minute = minute - print(self._domain, self._service) - - def schedule(self): + def schedule(self, hass): """ Schedule this event so that it will be called """ next_time = datetime.now().replace(hour=self._hour, @@ -59,16 +58,18 @@ class TimeEvent(Event): # pylint: disable=unused-argument def execute(now): """ Call the execute method """ - self.execute() + self.execute(hass) - self._schedule.hass.track_point_in_time(execute, next_time) + hass.track_point_in_time(execute, next_time) - _LOGGER.info('point in time scheduled at {} for {}' - .format(next_time, "")) + _LOGGER.info( + 'TimeEventListener scheduled for {}, will call service {}.{}' + .format(next_time, self._domain, self._service)) - def execute(self): + def execute(self, hass): """ Call the service """ - # data = {ATTR_ENTITY_ID: self._schedule.entity_ids} - # self._schedule.hass.call_service(self._domain, self._service, data) - print("executoing time", self._domain, self._service) - self.schedule() + data = {ATTR_ENTITY_ID: self._schedule.entity_ids} + hass.call_service(self._domain, self._service, data) + + # Reschedule for next day + self.schedule(hass)