gurumitts / pylutron-caseta

Apache License 2.0
153 stars 97 forks source link

Support for Visor Control Receiver #136

Open swamplynx opened 1 year ago

swamplynx commented 1 year ago

It would be great to add support for the Visor Control Receiver. I am running the latest version of the library in HA, so please let me know if there are any logs I can collect, etc. to aid its implementation.

cbw commented 1 year ago

Hi @swamplynx, which system are you using (RadioRA3, QSX, etc.)?

swamplynx commented 1 year ago

RA3

Nesteross commented 1 year ago

Hi,

First, I want to say awesome work here, and thank you for developing this stuff.

I have an RA3 system, with a VCRX. I've been trying to discover how to build out support for a VCRX by starting out leveraging what I've learned from this code and the leap utility you created for testing. But, I am getting nowhere discovering how to even read the VCRX. I can get the basic device properties via a /device/ request, but anything deeper does not work.

I've tried two main approaches based on the response to the /device/ query using the leap utility tool.

Trying to read the localzones reported in the above response for the VCRX, however, when asking for those via /zone/ I get returned "This resource does not exist"

Next, trying to read /device//buttongroup or /device//buttongroup/expanded, based on the ID of the VCRX device. Both result in "The request is not supported.

I'm wondering if anyone has any hints to investigate the LEAP API to discover how to read the VCRX and it's keypad, input, and output contact closure interfaces? How did you discover the REST-like paths in the first place?

Thanks for any help. I will certainly provide back anything I'm able to create.

Nesteross commented 1 year ago

I did a little more digging. I found that you can connect to the RA3 proc directly using OpenSSL and the certs created by the leap utility. I tried a bunch of things and got nowhere.

The VCRX is defined as a device, and it does have a property called 'localzones' which seem to be the loads I have defined and associated with the cc outputs. These don't respond though to a "ReadRequest: for /zone/id, and they also don't work for a "SubscribeRequest" for /zone/id.

I tried next to subscribe to the multi zone status using "SubscribeRequest" for /zone/status. This does register for multi zone status, however, when I press a button on the VCRX, the only SubscribeResponse I get has information that the associated lighting zone has turned on. Nothing that would indicate the source button of the request or what caused the zone to turn on.

I went ahead and tried a bunch of URLs like /integration, /contactclosure, /visorcontrol, etc., etc. and got nowhere.

Finally, I thought I'd have a look in the activity log of the RA3 programing software. For most button presses, there is a good bit of information logged, that matches up with the areas, control stations, buttons, etc. available via the LEAP API.

Here is a PICO press: ACTION: BUTTON PRESSED BY /BEDROOM/ERNEST'S NIGHTSTAND/POSITION 1/BUTTON 3

And a SUNNATA keypad: ACTION: BUTTON PRESSED BY /KITCHEN/ENTRY/POSITION 3/BUTTON 2

And finally the VCRX, this is all you get: ACTION: BUTTON PRESSED

So, it would seem that LEAP and/or the RA3 processor simply don't programmatically support the VCRX keypad or contact closures. Too bad. Perhaps they are creating a ClearConnect Type X version, and that will be integrated. Or, I'm afraid more likely, they are just going to drop the VCRX because so many garage openers are proprietary (I had to solder leads to the PCB of an extra remote control to be able use the contact closure output with my LiftMaster opener for example).

If anyone else finds anything, I'd be happy to work on coding support.