Rachio Smart Sprinkler Controller

Switch 1: Active
ON: Controller is in run mode, schedules apply
OFF: controller is in standby mode, watering and schedules are disabled

Switch 2: Online
ON: Controller is connected to the internet
OFF: controller is offline

Switch 3: Paused
no klue yet, but I suppose that this is om whrn schedue is paused

Switch 4: Stop
When watering is runnung all zones could be stopped with this switch/button

Please note: When you click a switch it takes about 5swc until the controller reacts (like using the app)

Also try the run switch for the zone

I have created the following item:

Switch SprinklerStandbyMode "Standby Mode" [ "Switchable" ] { channel="rachio:device:1:F0038CC66776:status" }

If I turn the switch on, I do not see a change (Standby Mode) either in the app or via the online portal. I have my polling set to ā€œ30ā€ and I have waited more than 30 seconds to see the change.

I also see this in the log.

10-Feb-2018 16:00:07.731 [INFO ] [org.openhab.binding.rachio.internal.api.RachioApi ] - RachioApi: device/on failed: 
java.lang.Exception: Error sending HTTP POST request to https://api.rach.io/1/public/device/on. Got responce code: 405
	at org.openhab.binding.rachio.internal.util.Http.sendHttpPost(Http.java:123) [247:org.openhab.binding.rachio:2.3.0.201802082257]
	at org.openhab.binding.rachio.internal.api.RachioApi.enableDevice(RachioApi.java:152) [247:org.openhab.binding.rachio:2.3.0.201802082257]
	at org.openhab.binding.rachio.handler.RachioBridgeHandler.enableDevice(RachioBridgeHandler.java:155) [247:org.openhab.binding.rachio:2.3.0.201802082257]
	at org.openhab.binding.rachio.handler.RachioDeviceHandler.handleCommand(RachioDeviceHandler.java:109) [247:org.openhab.binding.rachio:2.3.0.201802082257]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [109:org.eclipse.smarthome.core:0.10.0.201801231340]
	at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [109:org.eclipse.smarthome.core:0.10.0.201801231340]
	at com.sun.proxy.$Proxy139.handleCommand(Unknown Source) [247:org.openhab.binding.rachio:2.3.0.201802082257]
	at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:72) [116:org.eclipse.smarthome.core.thing:0.10.0.201801231340]
	at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [116:org.eclipse.smarthome.core.thing:0.10.0.201801231340]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [109:org.eclipse.smarthome.core:0.10.0.201801231340]
	at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [109:org.eclipse.smarthome.core:0.10.0.201801231340]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
10-Feb-2018 16:00:32.753 [DEBUG] [openhab.binding.rachio.handler.RachioBridgeHandler] - RachioBridgeHandler: refreshDeviceStatus
10-Feb-2018 16:01:32.755 [DEBUG] [openhab.binding.rachio.handler.RachioBridgeHandler] - RachioBridgeHandler: refreshDeviceStatus
10-Feb-2018 16:02:32.756 [DEBUG] [openhab.binding.rachio.handler.RachioBridgeHandler] - RachioBridgeHandler: refreshDeviceStatus
10-Feb-2018 16:03:32.758 [DEBUG] [openhab.binding.rachio.handler.RachioBridgeHandler] - RachioBridgeHandler: refreshDeviceStatus
10-Feb-2018 16:04:32.759 [DEBUG] [openhab.binding.rachio.handler.RachioBridgeHandler] - RachioBridgeHandler: refreshDeviceStatus
10-Feb-2018 16:05:32.761 [DEBUG] [openhab.binding.rachio.handler.RachioBridgeHandler] - RachioBridgeHandler: refreshDeviceStatus

this looks like the old binding, you should see a PUT rather than a POST, try restrting OH, maybe a caching problem

I have rebooted OH, this is the version number shown:

image

Still seeing a POST Error in the log.

this is a clean re-build
org.openhab.binding.rachio-2.3.0-SNAPSHOT.jar.zip.pdf (250.0 KB)

Ok, got the new version of the binding installed and now I can see almost instant reflection of changes in the app and online portal. :+1:

Now I will start to play with zonesā€¦

:sunglasses:

Switch SprinklerZone1Run "Zone 1 Quick Run"  { channel="rachio:zone:1:F0038CC66776-1:run" }

When turned on does not turn on the sprinklers.

I have the default runtime set to 120 in the bridge. I see nothing in the logs.

I have run through all of the configuration screens and thought I would share a couple of thoughts Iā€™ve had now that Iā€™ve spent some time with the new binding:

None of these are meant to be critical, just another set of eyes looking at the work.

Squid

Controller Thing

  • Active Channel is called status in the channel stringā€¦should it not be called the same thing as the name, either change the Channel to Status or change the channel string to Active
  • Channel name Evevation is misspelled should be Elevation, the channel string is correct.
  • Channel Online - should this be a switch or just a text field indicating the status of the Controller
  • Use Inital Caps on channel names to make binding look like most others. Stop watering should be Stop Watering, and Rain delay should be Rain Delay
  • Subtitle has a spelling error - A zone of a Rachio Sprinkeler Controller, should be A zone of a Rachio Sprinkler Controller

Zone Thing

  • Use Inital Caps on channel names to make binding look like most others. Zone number should be Zone Number, Zone run time should be Zone Run Time. etc.
  • Channel name Root deepth and channel string are misspelled. Shoud be Root Depth
  • Channel name Water deepth and channel string are misspelled. Shoud be Water Depth
  • Channel name Noizzle Name and channel string are misspelled. Shoud be Nozzle Name
  • Channel name Noizzle image url and channel string are misspelled. Shoud be Nozzle Image URL
  • Channel name Noizzle head and channel string are misspelled. Shoud be Nozzle Head
  • Question, should all of the channels after Zone Run Time, be hidden under an Show More button? These are items most will not look at. It could be intimadating at first with all of the channels.

Bridge Thing

  • Use Inital Caps on configuration parameters to make binding look like most others. Default zone runtime should be Deafult Zone Runtime

General

  • I wonder if for some that when you populate the Inbox should the zone number be included in the auto generated name? This was not necessary for me, just wondering aloud.

Bug

  • I attempted to update the configuration parameters of RACHIO bridge Thing, Default Zone Runtime and Polling/Refresh Interval. I was able to type in new values, but when clicking the check mark to save I received a 409 ERROR.

Hi, you feedback and test effort are very welcome.

Most things are already implemented:

  • status was renamed to active
  • spelling corrected + Initial caps

a new switch is implemented: Run to start all zones, or multiple (a zone is started via the zone thing):

  • all zones currently with runTime > 0 will be started. runTimes for zones can be selected with a rule setting appropriate items and then trigger the deviceā€™s run switch or
  • the device has itā€™s separate runTime and zoneList. If zoneList is empty and ALL zones are started. If runTime is 0 the default runtime will be used.
  • Watering can be stopped with the stop switch.

What do you think?

  • spelling corrected
  • Handling for run/runTime fixed
    if runTime > 0: Run starts the zone for secs
    if runTime = 0: Zone will be started for <bridge.defaultRuntime> secs

I donā€™t know about how to implement a Show More button, Paper UI does the arrangement of UI elements

done

Format is now: deviceName [zoneNumber]: zoneName

Youā€™ll get a 409 when trying to manipulate the thing derived from the .things file. You can edit those using PaperUI. You need to edit the .things file if you want to change those settings.

Wow, fast turnaround.

When will you publish an updated binding so I can see if I can control my zones using the default time set in the bridge?

Squid

get prepared, you need to delete all zones and the device, only the bridge from .things remains
(this is due to the fact that I changed the channel definition)

I disabled the nozzle channels and added run, runZones and runTime to the device.

not a problem, i test and break stuff quite often :wink:

This binding has the SHOW MORE feature on the channel. maybe you can look at the code and see how itā€™s enabled.

Iā€™m assuming there is a new value I need to add to the bridge THING for the Default Zone Runtime as the current version is missing it.

Current THING:

Bridge rachio:cloud:1 [ apikey="xxxxxxx-xxxxx-xxxxxxxxxx-xxxxxxxxxf", pollingInterval=60]
 {
 }

this binding has about 30 channels, I suppose PaperUI inserts ā€œShow Moreā€¦ā€ itself if a certain number of channels is exceeded.

as many time after applying a bigger number of cosmetically changes: I broke something, so canā€™t add the things from the inbox, PaperUI displays a 404 error - grrr, let you know when I fixed it

org.openhab.binding.rachio-2.3.0-SNAPSHOT.jar.zip.pdf (251.5 KB)

wait 30sec before starting discovery (inbox->scan)

Iā€™m still working on zone->run

No worries, Iā€™ll wait till you have the Zone issue figured out.

Just realized the ONKYO binding has the SHOW MORE button on the CONFIGURATION PARAMETERS of the THINGā€¦there is only 1 parameter shown by default, after clicking SHOW MORE, you get access to 4 more.

Squid