Plugin: Rachio Irrigation

The Rachio plugin provides an interface to Rachio Iro Irrigation controllers. The plugin supports multiple controllers, each with any number of zones and schedules. Each device allows the basic functions available for the respective device.

Full documentation is available on my web site. The project also has a GitHub repository for those who may like to live on the bleeding edge.


UPDATE HISTORY

2019-06-08: Version 1.6: Fixes issue where attempt to set API key from master device UI may cause Luup error and not set key correctly.

2019-05-28: Version 1.5: Ensures that a name change for a controller, schedule, or zone is reflected in the Vera device name (may require restart and/or hard-refresh of browser to be visible in UI).

2018-03-25: Version 1.4 is available in the Vera plugin marketplace. This version makes some additional changes to support Rachio’s latest API update, and backs out workarounds for things they broke that are now fixed.

2018-03-19: Version 1.3 is now available in the Vera plugin marketplace. This version better supports recent changes Rachio has made to their API, which is to say, it restores some functionality arising from things they broke, and avoids crashing over things that they have not yet fixed. I will continue to track the API status and incorporate workarounds and fixes as I discover them, but for now, basic functionality is restored. The most glaring defect remaining is that the Rachio API no longer announces when a manual single- or multi-zone schedule is running, so there is no consistent state change or update in the display of the plugin in this circumstance. Schedule-based manual runs (i.e. starting a schedule manually) works, but Rachio’s start time and duration reports are broken, so time remaining will not display correctly. If/when Rachio fixes their API, these issues should resolve on their own.

2018-03-04: Version 1.2 considerably reduces traffic between the plugin and the API by caching more information, and unfortunately, making update calls less frequently (every 3 minutes by default, vs every minute previously). The latter is an unfortunate necessity arising from Rachio’s low quota of 1700 API calls per day (making one query per minute would be 1440 calls, and many activities take several calls).

2018-01-15: Version 1.1 of the Rachio plugin (approved 2018-01-22) fixes a few small bugs, and answers a request for the Zone devices to be identified as valves (category 3 subcategory 7).


TROUBLESHOOTING
Why does my plugin device say “Delayed”?
Rachio is now enforcing a quota of 1700 requests per day to its API. This may cause the RachioService plugin to stall at some point during the day, and it will be unable to update status or issue commands until the following day. The version 1.2 release attempts to mitigate this problem. If you have other systems that also hit the Rachio API, they also impact the quota and therefore affect the operation of this plugin. The Home Assistant Rachio component, in particular, is currently badly broken, attempting more than 5,000 API calls per day, so if you use HA with Vera, you would be well-advised to turn off that integration in HA and use the pass-through devices from this plugin running on the Vera for your HA display/control.

Thanks for a great plugin! In the last few days I’ve been getting “Offline (internal error)”. I updated the API Token just in case but I’m still getting the error. Anything I can do? I’m running 1.2. Tks!

Rachio changed their API about two weeks ago. It was disastrous. They injected numerous bugs (for example, the API call to put a controller online put it in standby, and the API to put it in standby would put it on line), and removed some fields (no warning, and no change in spec/documentation, just gone–this is why your plugin is stopped, probably). They also introduced a quota on the number of API calls per day (1700) a week before that.

I have a new version of the plugin that will deal with the lost fields and the quota. I’ve been working with Rachio for three weeks to get some of their bugs fixed, but so far, they’ve only fixed about 1/2 of what I’ve reported. Over time, as more API users begin to discover what’s going on, they’ll probably get around to the rest. My goal right now is simply to make the plugin as tolerant of future changes as possible, and work around the remaining shortcomings in a way that doesn’t break things when (or if) they get around to fixing them.

Vera’s plugin release cycle is Monday. I’ll have an updated version of the plugin in for approval. It should be mostly functional, but as of this writing, the biggest outstanding issue is that the updated Rachio API does not report when a controller is watering manually on a zone-specific manual start (it does report manual and automatic schedule starts), so the plugin will be unable to show the correct status of the controller in this case until Rachio gets it head out of its grass.

rigpapa,

Thanks for the status update. I had noticed the problems you stated, but had not pushed it to the front of my Vera to do list. Nice to know that it is not a MCV issue. Thanks again for such a great plug-in and the efforts you put in to maintaining it.

That explains it. Figured it corresponds to the release of the “improved” Rachio App which is also a disaster in layout and functionality.

Don’t fix it if it isn’t broken!

Looking forward to the update.

THANKS!

Sent from my SM-G930P using Tapatalk

Hey Rigpapa and everyone else, I sent a PM to Rigpapa but in case there’s an answer I wanted everyone to see it. Looking to see if DataMine2 or the API to Rachio can extract values such as the water used for DataMine2 instead of using their app/site. I see on the browser you can download data although prior to March 1st isn’t available. So just curious if this could be added or not possible.

That data is not returned by their API, or if it is, I haven’t found it.

Understood, thanks Rigpapa!

Hi @rigapapa,

I wanted to know if I could use your code to build a plugin for rainmachine. I’d like to use the structure but leveraging Rainmachine’s api.

I have no problem with that. It’s GPL3, so derivative works are OK. Check the license for details.

Have they stopped users from getting the api key? I have tried from multiple browsers from my account settings, and nothing happens when i click the api key.

Pop-up blocker?

[quote=“lvandeusenii, post:9, topic:198290”]Hi @rigapapa,

I wanted to know if I could use your code to build a plugin for rainmachine. I’d like to use the structure but leveraging Rainmachine’s api.[/quote]

If you find it helpful you can use: rainmachine-developer-resources/api-lua at master · sprinkler/rainmachine-developer-resources · GitHub. I’m looking at integrating RainMachine too but I find the documentation scarce.

The Rachio plugin now runs on openLuup! It can be installed from the AltAppStore (use the 0.stable version) or by downloading the “stable” branch from the Github repo. This version includes enhancements to make status displays more timely, and manage Rachio’s API quota even better (all of this will appear in the next Vera release as well). ALTUI users will see custom dashboard cards for a modern, compact look I wish I could duplicate on Vera.

And a shout out to @akbooer and @amg0 for their ongoing support and great projects!

I’m running into an issue where my Vera is showing old schedules that were valid when I added the Rachio plugin but which no longer exist. And I’ not seeing some new schedules that I have created in Rachio since then.

Is there some way to force Vera to update the list of schedules or do I need to remove and reinstall the plugin?

Reload Luup and do a hard-refresh of your browser. The inventory of controllers is only done at the time the plugin starts.

Thanks, but didn’t do it for me. The old list of schedules is still there.

OK. If you go into the “Rachio Service” device, where you set the API key, there’s a footer with the version number in it. If you are not running 1.4, please update your plugin at Apps > My Apps.

If 1.4 is running, there will be a “status” link in that footer. Click that, and it will produce a long and annoying output that I’ll need you to email to me. I’ll PM you my email address.

Looking at the screen shot you sent of your current schedules and the status data you sent me, I show the following schedules on your Vera:

  • Plants & Shrubs - this coincides in both name and schedule with that on the screen shot list;
  • Nematodes - coincides in both name and schedule with the screen shot list;
  • Lawn - coincides in both name and schedule with the screen shot list;
  • The schedule “Deck” on the Vera has the same time schedule as what is called “Crucial to Water” on the screen shot. The luup device name remains “Deck”, but the “Crucial to Water” name is stored in the plugin’s private data for the device.

So it seems we’re really talking about one schedule that, I’m guessing, you renamed, and the new name hasn’t been saved on the Luup device up by the plugin? I don’t see any disparities beyond that.

That appears to be the case. I think what I’ll do is delete the schedule with the conflicting name and then recreate. Then all should be sympatico.

Probably not an issue for my PLEG logic since the object referenced in my lua would be the same, but some day in the future it could confuse me mightily if I have to debug.

Thanks for the help!