Stop a single zone?

Hi, looking to try out the public API to see if it would be feasible to integrate rachio into our company’s home automation system. I notice that while there is an endpoint to start a single zone, there doesn’t seem to be an endpoint to stop a single zone, only to stop all watering on the device. Am I overlooking something?

It seems like right now if I wanted to effectively stop a single zone, I’d have to

  • Get all zones (with GET /public/device/:id)
  • Check which are enabled
  • PUT /public/device/stop_water
  • PUT /public/zone/start_multiple with all of the zones that were enabled, except the one I want to have disabled

Aside from the complexity here, in going about it this way I would also lose the remaining run time that was on the zones; they would all be reset to a new value (up to 3 hours) every time I stopped another zone.

Also, it’s a bit odd that I can’t GET /public/zone/:id to get a single zone…

oh snap, can you provide a subtle hint as to whom?

i think as more ppl like you use the api, these really tiny oversights will become more visible and things will be corrected.

i personally wanted more reporting/history retrieval apis then they have right now, that will work itself out too.

What is the use case to stop one zone from watering? Would this be more of a skip?

Correct, currently you need to stop the device from watering (any queued watering jobs), and can not single out one zone. There are no plans to add this functionality.

I’ve added this to the API, will be in production tomorrow sometime.

I guess a “skip” would be more of what I’m looking for. But if it was already running and I sent a “skip”, I’d expect it to stop, too…

Originally I was hoping to interface all the zones as a set of toggles, which is why I asked. After using the system a bit more it makes sense why this is set up the way it is. It’s still a bit surprising as an end-user to find that there aren’t reciprocal "start"s and "stop"s, though.

Actually I was about to post this as a request today, so I have a use case :wink:

Some friends are coming over for a BBQ on Saturday, which is the next day my lawn is scheduled to be watered. So what I’d like to be able to do via the Rachio app (and not API’s like an earlier poster asked) is postpone it for a day so the kids can play on the lawn.

Perhaps it would work something like this. I’d go to a screen to postpone a zone. I’d have the choice of skipping that zone until the next scheduled watering, or just delaying it by 1-N days. Another box would ask if I’d like Rachio to increase the water to make up for the missed day(s). If I’m watering every 3 days and skip 1 day, then maybe I’d like to apply 4/3d’s as much water to catch up with the evaporation. After I put the number of skip days into the box the software would check to see if I’m trying to move it to a day I have said I’m not allowed to water. If so, it would have a checkbox - do I want to ignore the restriction against watering on that day, or just skip watering that zone until the next scheduled day?

Ya an interesting concept, instead of rain delay (schedule skip) you would essentially postpone the schedule, zone, etc. Sounds easy on the surface, but introducing that kind of state to the device creates a lot of complexity for the cloud to manage. Not saying impossible, but a lot of work for this use case :wink:

If there was a way to edit the currently active “job” (a set of zones and times… is there a better term to refer to that by?), then a client could just request the job, make changes to it, and push it back up. The only “difficult” part would be syncing up the “run position” of the old job with the new job.

I was a bit surprised today to find that start_zone will stop all other zones by creating a new job. It makes sense from the app design because the play button turns into a stop button, but from a web API perspective, sending “start” twice didn’t register to me that there would be an implicit “stop”. It’d be kind of nice if the new instruction (zone+duration) could be appended/prepended to the current job.

One potential use case could be that I started all of my zones, but the kids want to play in the sprinklers outside. If zone 3 is running and has run for 15 of its 30 scheduled minutes, but they want to play in zone 5 (which has not yet been run), then it’d be nice to move zone 5 to the top of the list (with maybe a new duration so they can play longer), and then once it’s complete, resume the remaining 15 minutes of zone 3 (and, potentially, later skip zone 5, since it’s been watered).

Also, thanks for adding the GET zone/:id endpoint. FYI it isn’t in the documentation yet:

1 Like

Thanks, github auto-import is broken ATM. It is supposed to read our code from github to generate documentation, but the auto-import stopped working. They are working on it :wink:

1 Like

Franz, any chance we could get a GET public/schedulerule/:id endpoint?

Sure, will try to get out in a day or so.