Add program/zone enable/disable services to RainMachine (#21785)
This commit is contained in:
parent
897862fca4
commit
a71394a0ce
2 changed files with 57 additions and 0 deletions
|
@ -74,6 +74,14 @@ SENSOR_SCHEMA = vol.Schema({
|
||||||
vol.All(cv.ensure_list, [vol.In(SENSORS)])
|
vol.All(cv.ensure_list, [vol.In(SENSORS)])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
SERVICE_ALTER_PROGRAM = vol.Schema({
|
||||||
|
vol.Required(CONF_PROGRAM_ID): cv.positive_int,
|
||||||
|
})
|
||||||
|
|
||||||
|
SERVICE_ALTER_ZONE = vol.Schema({
|
||||||
|
vol.Required(CONF_ZONE_ID): cv.positive_int,
|
||||||
|
})
|
||||||
|
|
||||||
SERVICE_PAUSE_WATERING = vol.Schema({
|
SERVICE_PAUSE_WATERING = vol.Schema({
|
||||||
vol.Required(CONF_SECONDS): cv.positive_int,
|
vol.Required(CONF_SECONDS): cv.positive_int,
|
||||||
})
|
})
|
||||||
|
@ -189,6 +197,27 @@ async def async_setup_entry(hass, config_entry):
|
||||||
refresh,
|
refresh,
|
||||||
timedelta(seconds=config_entry.data[CONF_SCAN_INTERVAL]))
|
timedelta(seconds=config_entry.data[CONF_SCAN_INTERVAL]))
|
||||||
|
|
||||||
|
async def disable_program(service):
|
||||||
|
"""Disable a program."""
|
||||||
|
await rainmachine.client.programs.disable(
|
||||||
|
service.data[CONF_PROGRAM_ID])
|
||||||
|
async_dispatcher_send(hass, PROGRAM_UPDATE_TOPIC)
|
||||||
|
|
||||||
|
async def disable_zone(service):
|
||||||
|
"""Disable a zone."""
|
||||||
|
await rainmachine.client.zones.disable(service.data[CONF_ZONE_ID])
|
||||||
|
async_dispatcher_send(hass, ZONE_UPDATE_TOPIC)
|
||||||
|
|
||||||
|
async def enable_program(service):
|
||||||
|
"""Enable a program."""
|
||||||
|
await rainmachine.client.programs.enable(service.data[CONF_PROGRAM_ID])
|
||||||
|
async_dispatcher_send(hass, PROGRAM_UPDATE_TOPIC)
|
||||||
|
|
||||||
|
async def enable_zone(service):
|
||||||
|
"""Enable a zone."""
|
||||||
|
await rainmachine.client.zones.enable(service.data[CONF_ZONE_ID])
|
||||||
|
async_dispatcher_send(hass, ZONE_UPDATE_TOPIC)
|
||||||
|
|
||||||
async def pause_watering(service):
|
async def pause_watering(service):
|
||||||
"""Pause watering for a set number of seconds."""
|
"""Pause watering for a set number of seconds."""
|
||||||
await rainmachine.client.watering.pause_all(service.data[CONF_SECONDS])
|
await rainmachine.client.watering.pause_all(service.data[CONF_SECONDS])
|
||||||
|
@ -226,6 +255,10 @@ async def async_setup_entry(hass, config_entry):
|
||||||
async_dispatcher_send(hass, PROGRAM_UPDATE_TOPIC)
|
async_dispatcher_send(hass, PROGRAM_UPDATE_TOPIC)
|
||||||
|
|
||||||
for service, method, schema in [
|
for service, method, schema in [
|
||||||
|
('disable_program', disable_program, SERVICE_ALTER_PROGRAM),
|
||||||
|
('disable_zone', disable_zone, SERVICE_ALTER_ZONE),
|
||||||
|
('enable_program', enable_program, SERVICE_ALTER_PROGRAM),
|
||||||
|
('enable_zone', enable_zone, SERVICE_ALTER_ZONE),
|
||||||
('pause_watering', pause_watering, SERVICE_PAUSE_WATERING),
|
('pause_watering', pause_watering, SERVICE_PAUSE_WATERING),
|
||||||
('start_program', start_program, SERVICE_START_PROGRAM_SCHEMA),
|
('start_program', start_program, SERVICE_START_PROGRAM_SCHEMA),
|
||||||
('start_zone', start_zone, SERVICE_START_ZONE_SCHEMA),
|
('start_zone', start_zone, SERVICE_START_ZONE_SCHEMA),
|
||||||
|
|
|
@ -1,6 +1,30 @@
|
||||||
# Describes the format for available RainMachine services
|
# Describes the format for available RainMachine services
|
||||||
|
|
||||||
---
|
---
|
||||||
|
disable_program:
|
||||||
|
description: Disable a program.
|
||||||
|
fields:
|
||||||
|
program_id:
|
||||||
|
description: The program to disable.
|
||||||
|
example: 3
|
||||||
|
disable_zone:
|
||||||
|
description: Disable a zone.
|
||||||
|
fields:
|
||||||
|
zone_id:
|
||||||
|
description: The zone to disable.
|
||||||
|
example: 3
|
||||||
|
enable_program:
|
||||||
|
description: Enable a program.
|
||||||
|
fields:
|
||||||
|
program_id:
|
||||||
|
description: The program to enable.
|
||||||
|
example: 3
|
||||||
|
enable_zone:
|
||||||
|
description: Enable a zone.
|
||||||
|
fields:
|
||||||
|
zone_id:
|
||||||
|
description: The zone to enable.
|
||||||
|
example: 3
|
||||||
pause_watering:
|
pause_watering:
|
||||||
description: Pause all watering for a number of seconds.
|
description: Pause all watering for a number of seconds.
|
||||||
fields:
|
fields:
|
||||||
|
|
Loading…
Add table
Reference in a new issue