Lutron QS Standalone Support

Hello Lutron HA community. I am in the midst of a very slow home renovation, replacing pretty much everything. Years ago, I fished around for lighting automation solutions, and I have tried and abandoned X10 and UPB. I discovered Lutron EcoSystem (Lutron’s proprietary extension of DALI but they are generally interoperable), and Lutron’s QS proprietary bus (9-bit RS-485 at 100kbps). I started small with a QSGRJ-16E “Grafik Eye” controller and EcoSystem fluorescent electronic ballasts. Eventually, I now have a system of 8 QSGRJ-16E’s tied together through a shared QS bus in what Lutron calls “QS Standalone” mode (per the Lutron Integration Protocol manuals). I have dozens of QSWS2 wallstations, and many more L3D and LDE driven LED lights. I also have a couple of dozen SivoiaQS blind motors to be installed. The system works just fine, including QSE-IO discrete I/O’s to integrate with Velux skylights.

I would like to add automation to this system using Home Assistant, and I have a QSE-CI-NWK-E Ethernet to QS bus interface. No, I do not have a RadioRA2 main repeater (I am not using the RadioRA2 interfaces in the QSGRJ’s), nor do I have a Homeworks processor (I do have a Lutron Quantum processor, maybe a QS P6 that I bought and found out it was useless without dropping a whole lot of money on Lutron for Windows software). According to the Lutron Integration Protocol manuals, the text interface between the RadioRA2 Main Repeater and the QSE-CI-NWK-E appear quite similar in structure via both the serial port an the telnet interface. I experimented with the protocol years ago using an NWK-E connected to a QSG (earlier version o f the QSGRJ) with limited success as the QSG was an abandoned product that never correctly/fully implemented the integration protocol.

Can anyone help me integrate my QS Standalone system to Home Assistant? If it is not currently supported, I have a few decades of software development experience that may help me add it if someone could guide me to the Lutron integration interface code in HA.

Thanks for any help you can provide.

(Yes, I know that QS Standalone has been quietly deprecated by Lutron once they discovered that it did not bring in recurring license fees nor require “certified” installers.)

OK, I understand now why this is not a common subject. The Lutron Radio RA2 main repeater stores an XML configuration file “DbXmlInfo.xml” stored into it by some custom Lutron PC based software. The pylutron “driver” fetches this stored XML data and uses it to populate the areas/devices/outputs structures. But the pylutron driver can also use a “cached file” version of this XML data. Say one constructed by hand or even by some new open source software that interfaces with a QSE-CI_NWK-E. However, the Home Assistant interface is hard coded to never present the cache file option: it’s either get it from the interface device or die. And so it dies since there is no way to add this at the “main repeater setup” pop-up. Should I look to adding this option to Home Assistant since there appears to be approximately zero interest in it?

Thanks for your time.

So I now have a working HA system with ~60 Lutron zones - but many more actual devices because most zones have multiple EcoSystem (Lutron’s version of DALI, they are generally interchangeable) controlled LED drivers. For anyone else following this path: pyluton first required tweaking for the different login prompts of the QSE-CI-NWK-E, as well as hard coding-in reading a cached version of the XML system description, which I hand wrote.

Some time later, I will try to add a “Lutron Standalone” integration to HA that allows the specification of the XML cache file name. Another change would be to allow the use of the NWK serial interface directly instead of the network port - I believe the Radio RA 2 repeater likewise has a serial port. This would allow HA to continue to operate even if the network infrastructure is down, and increase security so random network devices can not attack the interface.

What I have learned:

  • HA very much cares about the UUIDs in the XML file. Do not attempt to update/delete a UUID because HA maintains that information even though each time the Lutron integration is restarted, it reloads all of its configuration from scratch. UUIDs must be numeric, so I just give each room (“area”) an OccupancyGroupAssignedToID of X thousand (1000, 2000, etc) and then each output gets a UUID of 1001, 1002, 1003, etc. You must delete the Lutron integration, and re-add to reset this HA UUID cache.

  • The Lutron configuration software that normally generates the XML file also programs the IntegrationIDs on the QS network as numbers. There is no such limitation in the Lutron IntegrationIDs - I choose readable names like “First Floor Foyer” and “First Floor Hallway” for easier debugging instead of looking at “7” and “54” and trying to puzzle out what’s happening. This required tweaking the pyluton code stop explicitly converting IntegrationIDs back and forth to numbers, which was relatively simple since they were being used as keys in associative arrays anyway. pylutron should be updated to support this because it increases the functionality without breaking anything.

  • Currently I have problems with QSGRJ-E lighting controllers that have well set OUTPUT IntegrationIDs will report status changes as ~OUTPUT for some zones and ~DEVICE for others. There is no rhyme or reason to this. Here is a really simple example that happened last night:

QSE>~DEVICE,Floor 1 Controller,166,3
QSE>~DEVICE,Floor 1 Controller,141,7,6
QSE>~DEVICE,Floor 1 Controller,2,14,0.00
QSE>~OUTPUT,Driveway Lights,1,0.00

The QSGRJ “Floor 1 Controller” timeclock (component 166) is activating (action 3). So the SceneController (component 141)sets the current scene to 6. This results in turning off two zones in the scene. The first is reported as “~DEVICE,Floor 1 Controller” zone 2 (component 2) “set light level” (action 14) to 0.00. The second zone is reported as “~OUTPUT,Driveway Lights” set zone level (action 1) to 0.00. But both zones have IntegrationIDs:

~INTEGRATIONID,Floor 1 Controller,DEVICE,00ABCDEF
~INTEGRATIONID,Front Lanai,OUTPUT,00ABCDEF,2
~INTEGRATIONID,Driveway Lights,OUTPUT,00ABCDEF,16

  • This is a problem because the pylutron code can only grok ~OUTPUT and is befuddled by ~DEVICE status messages. I have asked Lutron tech support about this, but they have not gotten back to me and at this point, I suspect they will not as the QSGRJ-E firmware is probably just abandonware by now. So I may have to smarten up pyluton to query ?INTEGRATIONID,3,IntegrationID then parse out the DEVICE and COMPONENT information, store it to use it to decode a ~DEVICE status into a synthetic ~OUTPUT status.

If anyone has any insight or other information that can help, please let me know.

The answer is: use the latest QSE-CI-NWK-E firmware, currently at revision 8.96. Lutron tech support was able to provide a Windows based firmware updater over the NWK serial port. This will probably be the last revision as it is over 2 years old. There are numerous improvements in it but the NWK firmware still does not fully support the entirety of the Lutron Integration Protocol (currently at revision AH). QSGRJ/QSGE components like the timeclock and scene controller can be assigned an OUTPUT integration ID but it will never be used. QSM components likewise. Their status changes are reported as ~DEVICE,Integration ID,Action,status.

I will probably have to revise the pylutron code to match up OUTPUT integration IDs with DEVICE & component pairs at load time. I also plan to get around to supporting the NWK serial port interface, which makes the entire Lutron QS Link network more secure rather than having the NWK accessible by any device on the Ethernet network. I suppose only a few people consider security of their home automation systems.

My next project is integrating QSNE-2DAL-D dual DALI bus controllers on the QS Link bus.