diff --git a/homeassistant/components/rachio/__init__.py b/homeassistant/components/rachio/__init__.py index 772cd0085d3..8cd1784f300 100644 --- a/homeassistant/components/rachio/__init__.py +++ b/homeassistant/components/rachio/__init__.py @@ -95,7 +95,11 @@ SUBTYPE_ZONE_CYCLING = "ZONE_CYCLING" SUBTYPE_ZONE_CYCLING_COMPLETED = "ZONE_CYCLING_COMPLETED" # Webhook callbacks -LISTEN_EVENT_TYPES = ["DEVICE_STATUS_EVENT", "ZONE_STATUS_EVENT", "SCHEDULE_STATUS_EVENT"] +LISTEN_EVENT_TYPES = [ + "DEVICE_STATUS_EVENT", + "ZONE_STATUS_EVENT", + "SCHEDULE_STATUS_EVENT", +] WEBHOOK_CONST_ID = "homeassistant.rachio:" WEBHOOK_PATH = URL_API + DOMAIN SIGNAL_RACHIO_UPDATE = DOMAIN + "_update" @@ -297,7 +301,6 @@ class RachioIro: for event_type in self.rachio.notification.getWebhookEventType()[1]: if event_type[KEY_NAME] in LISTEN_EVENT_TYPES: event_types.append({"id": event_type[KEY_ID]}) - # Register to listen to these events from the device url = self.rachio.webhook_url @@ -344,7 +347,7 @@ class RachioIro: return zone return None - + def list_schedules(self) -> list: """Return a list of schedules.""" return self._schedules diff --git a/homeassistant/components/rachio/switch.py b/homeassistant/components/rachio/switch.py index 85b1d5fb93a..7a3062871e0 100644 --- a/homeassistant/components/rachio/switch.py +++ b/homeassistant/components/rachio/switch.py @@ -278,6 +278,7 @@ class RachioZone(RachioSwitch): self.hass, SIGNAL_RACHIO_ZONE_UPDATE, self._handle_update ) + class RachioSchedule(RachioSwitch): """Representation of one fixed schedule on the Rachio Iro.""" @@ -319,8 +320,11 @@ class RachioSchedule(RachioSwitch): @property def state_attributes(self) -> dict: """Return the optional state attributes.""" - return {ATTR_SCHEDULE_SUMMARY: self._summary, ATTR_SCHEDULE_ENABLED: self.schedule_is_enabled, - ATTR_SCHEDULE_DURATION: self._duration /60} + return { + ATTR_SCHEDULE_SUMMARY: self._summary, + ATTR_SCHEDULE_ENABLED: self.schedule_is_enabled, + ATTR_SCHEDULE_DURATION: self._duration / 60, + } @property def schedule_is_enabled(self) -> bool: @@ -329,12 +333,10 @@ class RachioSchedule(RachioSwitch): def turn_on(self, **kwargs) -> None: """Start this schedule.""" - + self._controller.rachio.schedulerule.start(self.schedule_id) _LOGGER.debug( - "Schedule %s started on %s", - self.name, - self._controller.name, + "Schedule %s started on %s", self.name, self._controller.name, ) def turn_off(self, **kwargs) -> None: @@ -348,12 +350,15 @@ class RachioSchedule(RachioSwitch): def _handle_update(self, *args, **kwargs) -> None: """Handle incoming webhook schedule data.""" - #Schedule ID not passed when running indvidual zones, so we catch that error + # Schedule ID not passed when running indvidual zones, so we catch that error try: if args[0][KEY_SCHEDULE_ID] == self.schedule_id: if args[0][KEY_SUBTYPE] in [SUBTYPE_SCHEDULE_STARTED]: self._state = True - elif args[0][KEY_SUBTYPE] in [SUBTYPE_SCHEDULE_STOPPED, SUBTYPE_SCHEDULE_COMPLETED]: + elif args[0][KEY_SUBTYPE] in [ + SUBTYPE_SCHEDULE_STOPPED, + SUBTYPE_SCHEDULE_COMPLETED, + ]: self._state = False except KeyError: pass @@ -365,4 +370,3 @@ class RachioSchedule(RachioSwitch): async_dispatcher_connect( self.hass, SIGNAL_RACHIO_SCHEDULE_UPDATE, self._handle_update ) -