Add Rachio Scheudles
This commit is contained in:
parent
dd3cd95954
commit
a015ec4a19
3 changed files with 22 additions and 1 deletions
|
@ -35,6 +35,7 @@ from .const import (
|
|||
KEY_TYPE,
|
||||
KEY_USERNAME,
|
||||
KEY_ZONES,
|
||||
KEY_SCHEDULES,
|
||||
RACHIO_API_EXCEPTIONS,
|
||||
)
|
||||
|
||||
|
@ -94,7 +95,7 @@ SUBTYPE_ZONE_CYCLING = "ZONE_CYCLING"
|
|||
SUBTYPE_ZONE_CYCLING_COMPLETED = "ZONE_CYCLING_COMPLETED"
|
||||
|
||||
# Webhook callbacks
|
||||
LISTEN_EVENT_TYPES = ["DEVICE_STATUS_EVENT", "ZONE_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"
|
||||
|
@ -258,6 +259,7 @@ class RachioIro:
|
|||
self.mac_address = data[KEY_MAC_ADDRESS]
|
||||
self.model = data[KEY_MODEL]
|
||||
self._zones = data[KEY_ZONES]
|
||||
self._schedules = data[KEY_SCHEDULES]
|
||||
self._init_data = data
|
||||
self._webhooks = webhooks
|
||||
_LOGGER.debug('%s has ID "%s"', str(self), self.controller_id)
|
||||
|
@ -295,6 +297,7 @@ 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
|
||||
|
@ -341,6 +344,10 @@ class RachioIro:
|
|||
return zone
|
||||
|
||||
return None
|
||||
|
||||
def list_schedules(self) -> list:
|
||||
"""Return a list of schedules."""
|
||||
return self._schedules
|
||||
|
||||
def stop_watering(self) -> None:
|
||||
"""Stop watering all zones connected to this controller."""
|
||||
|
|
|
@ -22,6 +22,7 @@ KEY_ID = "id"
|
|||
KEY_NAME = "name"
|
||||
KEY_MODEL = "model"
|
||||
KEY_ON = "on"
|
||||
KEY_DURATION = "totalDuration"
|
||||
KEY_STATUS = "status"
|
||||
KEY_SUBTYPE = "subType"
|
||||
KEY_SUMMARY = "summary"
|
||||
|
@ -33,6 +34,8 @@ KEY_USERNAME = "username"
|
|||
KEY_ZONE_ID = "zoneId"
|
||||
KEY_ZONE_NUMBER = "zoneNumber"
|
||||
KEY_ZONES = "zones"
|
||||
KEY_SCHEDULES = "scheduleRules"
|
||||
KEY_SCHEDULE_ID = "scheduleId"
|
||||
|
||||
# Yes we really do get all these exceptions (hopefully rachiopy switches to requests)
|
||||
RACHIO_API_EXCEPTIONS = (
|
||||
|
|
|
@ -9,11 +9,15 @@ from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
|||
from . import (
|
||||
SIGNAL_RACHIO_CONTROLLER_UPDATE,
|
||||
SIGNAL_RACHIO_ZONE_UPDATE,
|
||||
SIGNAL_RACHIO_SCHEDULE_UPDATE,
|
||||
SUBTYPE_SLEEP_MODE_OFF,
|
||||
SUBTYPE_SLEEP_MODE_ON,
|
||||
SUBTYPE_ZONE_COMPLETED,
|
||||
SUBTYPE_ZONE_STARTED,
|
||||
SUBTYPE_ZONE_STOPPED,
|
||||
SUBTYPE_SCHEDULE_COMPLETED,
|
||||
SUBTYPE_SCHEDULE_STOPPED,
|
||||
SUBTYPE_SCHEDULE_STARTED,
|
||||
RachioDeviceInfoProvider,
|
||||
)
|
||||
from .const import (
|
||||
|
@ -25,17 +29,23 @@ from .const import (
|
|||
KEY_ID,
|
||||
KEY_IMAGE_URL,
|
||||
KEY_NAME,
|
||||
KEY_DURATION,
|
||||
KEY_ON,
|
||||
KEY_SUBTYPE,
|
||||
KEY_SUMMARY,
|
||||
KEY_ZONE_ID,
|
||||
KEY_ZONE_NUMBER,
|
||||
KEY_SCHEDULES,
|
||||
KEY_SCHEDULE_ID,
|
||||
)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
ATTR_ZONE_SUMMARY = "Summary"
|
||||
ATTR_ZONE_NUMBER = "Zone number"
|
||||
ATTR_SCHEDULE_SUMMARY = "Summary"
|
||||
ATTR_SCHEDULE_ENABLED = "Enabled"
|
||||
ATTR_SCHEDULE_DURATION = "Duration"
|
||||
|
||||
|
||||
async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||
|
@ -54,6 +64,7 @@ def _create_entities(hass, config_entry):
|
|||
for controller in person.controllers:
|
||||
entities.append(RachioStandbySwitch(controller))
|
||||
zones = controller.list_zones()
|
||||
schedules = controller.list_schedules()
|
||||
current_schedule = controller.current_schedule
|
||||
_LOGGER.debug("Rachio setting up zones: %s", zones)
|
||||
for zone in zones:
|
||||
|
|
Loading…
Add table
Reference in a new issue