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.

I would like thank you for making this a possibility. I recently purchased a new home that had an existing 6 channel grafik eye QS system. It does not have any external plugins, my theater system turns on/off the lights using one touchpad that is hard-wired over the mux line. I have a mrx5 URC controlling the lighting over a IR pulsed signal wired over a cat6 wire. Unfortunately the MRX5 is not user configurable and requires a dealer to interface with it. I am considering using the NWK ethernet device to integrate with my system so I can remotely control it. My kids leave the lights on all the time burning up a ton of power and I would like a way to turn it off at a certain time or from downstairs. I have thought about creating an IR blaster to just send IR signals via a ESPhome device to control the scenes (e.g. 1-4 and off). I am an electrical engineer and did software development for about 20 yrs and was a linux sysadmin for about 15 of those; so hopefully I can still hack HA to do what I want using your guidance here. Are there any official plugins to the QSE-CI-NWK-E in HA at this point, or only radioRA2? My grafik eye is about 15 yrs old now FYI (2007 QS).

To date, there is only RadioRA 2 (which by the way, is now obsolete as Lutron has rolled out RadioRA 3). I have not tried adding the option to HA because it will take a block of my time to figure it out. But the good news is that the pylutron “driver” can pretty much do the job because it will load a “cached” version (a static file) of the XML description of your Luton QS Link network. You, however, have to manually generate that XML file yourself. It is normally generated by Lutron installer-only S/W and includes tons of information that the pylutron driver does not use.

So I use the HA RadioRA 2 integration, but I hacked the pylutron code to load the XML file from the HA config directory. I also changed the expected prompt to “QSE>” and all the instances of IntegrationID from numeric to character string (not a big problem because the Python arrays are associative). You don’t need to do this if you are happy with numeric integration IDs. But the key thing that you need to do is assign IntegrationIDs to every zone (OUTPUT) in your QS network. The pylutron code does not understand “device,component” tuples (for a QS Grafik Eye a component is a zone). Assigning Integration IDs requires either using the NWK serial interface or logging in through telnet to the NWK and defining the integration IDs.

  • ?DETAILS,FFFFFFFF will list all of the devices on the network that the NWK knows about. This will include devices that may have been on the network at one time, but were removed. This is where you can find the unique hex serial numbers of each DEVICE.

  • ?INTEGRATIONID,3 will list all integrationIDs including OUTPUTS

  • #INTEGRATIONID,1,0x12345678,Name where “0x12345678” is the unique hexadecimal serial number of a device, and “Name” is the integrationID that you want to give it. For example “First Floor QSG”. This is an integration ID for a DEVICE.

  • #INTEGRATIONID,4,0x12345678,Output Num,Name where “Output Num” is the component number of the the DEVICE with serial number 0x12345678 and “Name” is the integrationID for the OUTPUT. For example “Living Room Light”.

  • ?DEVICE,QSGE IntegrationID,0,0 will list all of the components (zones, the time clock, and scene controller) status

All of this information is in the Lutron Integration Protocol Guide found here: https://assets.lutron.com/a/documents/040249.pdf
It just takes a while to read it and piece together what you need. But make sure that you have the latest firmware (v8.96) in your NWK, because older firmware may support your small network, but I can’t gurantee it. I wasted a lot of time tracking down the problems that could have been avoided. Contact Lutron tech support and ask for the NWK firmware update.

Personal note: I’m guessing that you have a QSG. Your QSG is pretty old, and unlikely to work correctly with an NWK. I experienced this as I first dipped my toes into the Lutron pool. The QSG firmware development was abandoned years ago while incomplete (“abandonware”) when the QSGR/QSGRJ was released. The latter has a CPU with twice the onboard flash memory for firmware larger than the CPU in the QGS can support. So I would recommend replacing it with a QSGR/QSGRJ (I use QSGRJ’s which seem to be versions with EcoSystem bus support for upto 16 zones). But wait! There are two versions of QSGR: ones with boot code v4.1 and onews with boot code v4.2 (this is listed on the information sticker on the front panel). If you try to update a QSGR with v4.1 boot code to the latest firmware (v9.17 as far as I know), you will brick it, but v8.27 firmware is fine. You need v4.2 boot code for v9.17 firmware. No, you can’t update the boot code. My guess is that they updated the CPU again to one with larger flash memory, and the updater doesn’t check (or can’t check) for which CPU version is in the QSGR. So it tries writing past the end of memory on the old hardware, which bricks it (you get “Display Error, contact Lutron Tech Support” at power on). Lutron seems to use the boot code version to distinguish between the two versions of hardware. I have bought a new QSGRJ with v4.2 boot on eBay for around $400, and I’ll probably buy a few more to update my v4.1 devices. I recommend you do the same.

To help you get started, this is what my DbXmlInfo.xml file looks like:


<?xml version="1.0" encoding="UTF-8" ?>
<!-- Baloney copyright information -->
<Project>
    <ProjectName ProjectName="Project House" />
    <Copyright>Suck Me Lutron</Copyright>
<!-- Thanks to https://numbergenerator.org/random-32-digit-hex-codes-generator -->
    <GUID>8fdffd04b2d00942922f81ef6e348c09</GUID>
    <AppVer>4.1.0</AppVer>
    <XMLVer>1.0</XMLVer>
    <DbExportDate>02/03/2025</DbExportDate>
    <DbExportTime>10:53:15</DbExportTime>
<!-- Top Level Area is just a "house" container for the internal areas, and is ignored except for Name -->
    <Areas>
        <Area Name="Root Area" IntegrationID="0" OccupancyGroupAssignedToID="0" SortOrder="0">
            <DeviceGroups />
            <Scenes />
            <ShadeGroups />
            <Outputs />
            <Areas>
<!-- Subsequent Area tags are for rooms of associated devices and outputs -->
                <Area Name="Garage" IntegrationID="1" OccupancyGroupAssignedToID="1000" SortOrder="1">
                    <DeviceGroups>
<!-- There appears to be a 1:1 correspondence between DeviceGroup and Output below as it seems -->
<!-- that a DeviceGroup is the keypad that controls "Device Name" in the Output section below  -->
                         <DeviceGroup Name="Garage Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Garage Entry Light" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Garage Utility Light" SortOrder="3">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Garage Patio Light" SortOrder="4">
                            <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Garage Skylight" SortOrder="5">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Garage Skylight Blind" SortOrder="6">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Driveway Lights" SortOrder="7">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Garage Motion Sense Light" SortOrder="8">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
<!-- OutputType appears to be similar to QSGRJ programming: INC, NON-DIM, etc. or SYSTEM_SHADE -->
                         <Output Name="Garage Light" IntegrationID="Garage Light" OutputType="NON-DIM" Wattage="0" UUID="1001"  SortOrder="1" />
                         <Output Name="Garage Entry Light" IntegrationID="Garage Entry Light" OutputType="INC" Wattage="0" UUID="1002"  SortOrder="2" />
                         <Output Name="Garage Utility Light" IntegrationID="Garage Utility Light" OutputType="INC" Wattage="0" UUID="1003"  SortOrder="3" />
                         <Output Name="Garage Patio Light" IntegrationID="Garage Patio Light" OutputType="INC" Wattage="0" UUID="1004"  SortOrder="4" />
                         <Output Name="Garage Skylight" IntegrationID="Garage Skylight" OutputType="NON-DIM" Wattage="0" UUID="1005"  SortOrder="5" />
                         <Output Name="Garage Skylight Blind" IntegrationID="Garage Skylight Blind" OutputType="NON-DIM" Wattage="0" UUID="1006"  SortOrder="6" />
                         <Output Name="Driveway Lights" IntegrationID="Driveway Lights" OutputType="NON-DIM" Wattage="0" UUID="1007"  SortOrder="7" />
                         <Output Name="Garage Motion Sense Light" IntegrationID="Garage Motion Sense Light" OutputType="NON-DIM" Wattage="0" UUID="1008"  SortOrder="8" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Laundry Room" IntegrationID="2" OccupancyGroupAssignedToID="2000" SortOrder="1">
                    <DeviceGroups>
                        <DeviceGroup Name="Laundry Room Light" SortOrder="1">
                            <Devices />
                        </DeviceGroup>
                        <DeviceGroup Name="Laundry Room Skylight" SortOrder="2">
                            <Devices />
                        </DeviceGroup>
                        <DeviceGroup Name="Laundry Room Skylight Blind" SortOrder="3">
                            <Devices />
                        </DeviceGroup>
                    </DeviceGroups>
                    <Scenes/>
                    <ShadeGroups/>
                    <Outputs>
                        <Output Name="Laundry Room Light" IntegrationID="Laundry Room Light" OutputType="INC" Wattage="0" UUID="2001"  SortOrder="1" />
                        <Output Name="Laundry Room Skylight" IntegrationID="Laundry Room Skylight" OutputType="NON-DIM" Wattage="0" UUID="2002"  SortOrder="2" />
                        <Output Name="Laundry Room Skylight Blind" IntegrationID="Laundry Room Skylight Blind" OutputType="NON-DIM" Wattage="0" UUID="2003"  SortOrder="3" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Guest Bath" IntegrationID="3" OccupancyGroupAssignedToID="3000" SortOrder="1">
                    <DeviceGroups>
                         <DeviceGroup Name="Guest Bath Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Guest Bath Vanity" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Guest Bath Shower" SortOrder="3">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Guest Bath Light" IntegrationID="Guest Bath Light" OutputType="INC" Wattage="0" UUID="3001"  SortOrder="1" />
                         <Output Name="Guest Bath Vanity" IntegrationID="Guest Bath Vanity" OutputType="INC" Wattage="0" UUID="3002"  SortOrder="2" />
                         <Output Name="Guest Bath Shower" IntegrationID="Guest Bath Shower" OutputType="INC" Wattage="0" UUID="3003"  SortOrder="3" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Guest Bedroom" IntegrationID="4" OccupancyGroupAssignedToID="4000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Guest Bedroom Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Guest Bedroom Light" IntegrationID="Guest Bedroom Light" OutputType="INC" Wattage="0" UUID="4001"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Floor 1" IntegrationID="5" OccupancyGroupAssignedToID="5000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Front Lanai" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Floor 1 Foyer Light" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Floor 1 Hallway Pendants" SortOrder="3">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Floor 1 Hallway Recessed" SortOrder="4">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Stairway Closet" SortOrder="5">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Front Lanai" IntegrationID="Front Lanai" OutputType="INC" Wattage="0" UUID="5001"  SortOrder="1" />
                         <Output Name="Floor 1 Foyer Light" IntegrationID="Floor 1 Foyer Light" OutputType="INC" Wattage="0" UUID="5002"  SortOrder="2" />
                         <Output Name="Floor 1 Hallway Pendants" IntegrationID="Floor 1 Hallway Pendants" OutputType="INC" Wattage="0" UUID="5003"  SortOrder="3" />
                         <Output Name="Floor 1 Hallway Recessed" IntegrationID="Floor 1 Hallway Recessed" OutputType="INC" Wattage="0" UUID="5004"  SortOrder="4" />
                         <Output Name="Stairway Closet" IntegrationID="Stairway Closet" OutputType="INC" Wattage="0" UUID="5005"  SortOrder="5" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Half Bath" IntegrationID="6" OccupancyGroupAssignedToID="6000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Half Bath Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Half Bath Mirror" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Half Bath Light" IntegrationID="Half Bath Light" OutputType="INC" Wattage="0" UUID="6001"  SortOrder="1" />
                         <Output Name="Half Bath Mirror" IntegrationID="Half Bath Mirror" OutputType="INC" Wattage="0" UUID="6002"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Kitchen" IntegrationID="7" OccupancyGroupAssignedToID="7000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Kitchen Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Kitchen Lights" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Kitchen Sink Light" SortOrder="3">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Kitchen Window Light" SortOrder="4">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Kitchen Vent Fan" SortOrder="5">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Kitchen Light" IntegrationID="Kitchen Light" OutputType="INC" Wattage="0" UUID="7001"  SortOrder="1" />
                         <Output Name="Kitchen Lights" IntegrationID="Kitchen Lights" OutputType="INC" Wattage="0" UUID="7002"  SortOrder="1" />
                         <Output Name="Kitchen Sink Light" IntegrationID="Kitchen Sink Light" OutputType="INC" Wattage="0" UUID="7003"  SortOrder="1" />
                         <Output Name="Kitchen Window Light" IntegrationID="Kitchen Window Light" OutputType="INC" Wattage="0" UUID="7004"  SortOrder="1" />
                         <Output Name="Kitchen Vent Fan" IntegrationID="Kitchen Vent Fan" OutputType="NON-DIM" Wattage="0" UUID="7005"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Floor 2" IntegrationID="8" OccupancyGroupAssignedToID="8000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Floor 2 Hallway" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Stairway" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Floor 2 Hallway" IntegrationID="Floor 2 Hallway" OutputType="INC" Wattage="0" UUID="8001"  SortOrder="1" />
                         <Output Name="Stairway" IntegrationID="Stairway" OutputType="INC" Wattage="0" UUID="8002"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Floor 2 Bathroom" IntegrationID="9" OccupancyGroupAssignedToID="9000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Floor 2 Bathroom Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Floor 2 Bathroom Light" IntegrationID="Floor 2 Bathroom Light" OutputType="INC" Wattage="0" UUID="9001"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Library" IntegrationID="10" OccupancyGroupAssignedToID="10000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Library Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Library Light" IntegrationID="Library" OutputType="INC" Wattage="0" UUID="10001"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Laboratory" IntegrationID="11" OccupancyGroupAssignedToID="11000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Laboratory Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Laboratory Light" IntegrationID="Laboratory" OutputType="INC" Wattage="0" UUID="11001"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Office" IntegrationID="12" OccupancyGroupAssignedToID="12000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Office Light" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Office Desk Light 1" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Office Desk Light 2" SortOrder="3">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Office Cove Lights" SortOrder="4">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Office Light" IntegrationID="Office Light" OutputType="INC" Wattage="0" UUID="12001"  SortOrder="1" />
                         <Output Name="Office Desk Light 1" IntegrationID="Office Desk Light 1" OutputType="INC" Wattage="0" UUID="12002"  SortOrder="2" />
                         <Output Name="Office Desk Light 2" IntegrationID="Office Desk Light 2" OutputType="INC" Wattage="0" UUID="12003"  SortOrder="3" />
                         <Output Name="Office Cove Lights" IntegrationID="Office Cove Lights" OutputType="INC" Wattage="0" UUID="12004"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Master Bedroom" IntegrationID="13" OccupancyGroupAssignedToID="13000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Master Bedroom Cove Lights" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Master Bedroom Cove Recessed" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Master Bedroom Closet" SortOrder="3">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Master Bedroom Lanai" SortOrder="4">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Master Bedroom Cove Lights" IntegrationID="Master Bedroom Cove Lights" OutputType="INC" Wattage="0" UUID="13001"  SortOrder="1" />
                         <Output Name="Master Bedroom Cove Recessed" IntegrationID="Master Bedroom Cove Recessed" OutputType="INC" Wattage="0" UUID="13002"  SortOrder="2" />
                         <Output Name="Master Bedroom Closet" IntegrationID="Master Bedroom Closet" OutputType="INC" Wattage="0" UUID="13003"  SortOrder="3" />
                         <Output Name="Master Bedroom Lanai" IntegrationID="Master Bedroom Lanai" OutputType="INC" Wattage="0" UUID="13004"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Master Bathroom" IntegrationID="14" OccupancyGroupAssignedToID="14000" SortOrder="1">
                     <DeviceGroups>
                         <DeviceGroup Name="Master Bathroom Entry" SortOrder="1">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Master Bathroom Vanity" SortOrder="2">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Master Bathroom Tub" SortOrder="3">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Master Bathroom Shower" SortOrder="4">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Master Bath Skylight" SortOrder="5">
                             <Devices />
                         </DeviceGroup>
                         <DeviceGroup Name="Master Bath Skylight Blind" SortOrder="6">
                             <Devices />
                         </DeviceGroup>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Master Bathroom Entry" IntegrationID="Master Bathroom Entry" OutputType="INC" Wattage="0" UUID="14001"  SortOrder="1" />
                         <Output Name="Master Bathroom Vanity" IntegrationID="Master Bathroom Vanity" OutputType="INC" Wattage="0" UUID="14002"  SortOrder="2" />
                         <Output Name="Master Bathroom Tub" IntegrationID="Master Bathroom Tub" OutputType="INC" Wattage="0" UUID="14003"  SortOrder="3" />
                         <Output Name="Master Bathroom Shower" IntegrationID="Master Bathroom Shower" OutputType="INC" Wattage="0" UUID="14004"  SortOrder="4" />
                         <Output Name="Master Bath Skylight" IntegrationID="Master Bath Skylight" OutputType="NON-DIM" Wattage="0" UUID="14005"  SortOrder="5" />
                         <Output Name="Master Bath Skylight Blind" IntegrationID="Master Bath Skylight Blind" OutputType="NON-DIM" Wattage="0" UUID="14006"  SortOrder="6" />
                     </Outputs>
                     <Areas/>
                </Area>
                <Area Name="Wiring Closet" IntegrationID="99" OccupancyGroupAssignedToID="99000" SortOrder="1">
                     <DeviceGroups>
                     </DeviceGroups>
                     <Scenes/>
                     <ShadeGroups/>
                     <Outputs>
                         <Output Name="Exterior Lighting Time Clock" IntegrationID="Exterior Time Clock" OutputType="NON-DIM" Wattage="0" UUID="99001"  SortOrder="1" />
                     </Outputs>
                     <Areas/>
                </Area>
            </Areas>
        </Area>
    </Areas>
<!-- These seem very important to the pylutron code and are enumerated first -->
    <OccupancyGroups>
        <OccupancyGroup OccupancyGroupNumber="1000"/>
        <OccupancyGroup OccupancyGroupNumber="2000"/>
        <OccupancyGroup OccupancyGroupNumber="3000"/>
        <OccupancyGroup OccupancyGroupNumber="4000"/>
        <OccupancyGroup OccupancyGroupNumber="5000"/>
        <OccupancyGroup OccupancyGroupNumber="6000"/>
        <OccupancyGroup OccupancyGroupNumber="7000"/>
        <OccupancyGroup OccupancyGroupNumber="8000"/>
        <OccupancyGroup OccupancyGroupNumber="9000"/>
        <OccupancyGroup OccupancyGroupNumber="10000"/>
        <OccupancyGroup OccupancyGroupNumber="11000"/>
        <OccupancyGroup OccupancyGroupNumber="12000"/>
        <OccupancyGroup OccupancyGroupNumber="13000"/>
        <OccupancyGroup OccupancyGroupNumber="14000"/>
        <OccupancyGroup OccupancyGroupNumber="15000"/>
        <OccupancyGroup OccupancyGroupNumber="16000"/>
        <OccupancyGroup OccupancyGroupNumber="17000"/>
        <OccupancyGroup OccupancyGroupNumber="18000"/>
        <OccupancyGroup OccupancyGroupNumber="19000"/>
        <OccupancyGroup OccupancyGroupNumber="99000"/>
    </OccupancyGroups>
<!-- These seem to be ignored which is great because I have no idea what they do -->
    <Timeclocks>
        <Timeclock Name="Project Timeclock" IntegrationID="4" SortOrder="0" Type="0">
            <TimeclockModes>
                <TimeclockMode Name="Away" Index="0" Type="188"/>
                <TimeclockMode Name="Suspend" Index="1" Type="188"/>
                <TimeclockMode Name="Alternate" Index="2" Type="188"/>
                <TimeclockMode Name="Normal" Index="3" Type="188"/>
            </TimeclockModes>
            <TimeClockEvents/>
        </Timeclock>
    </Timeclocks>
    <HVACs/>
    <GreenModes>
    </GreenModes>
</Project>

Hi thanks for all your posts, I have a similar system and looking to integrate with HA.

Are you able to briefly describe the steps to get something like this up and running. I have a couple of GrafikEye QS, QSNE-4A-D, 2x QSE-IO for AC blinds, QS-CI-NWK-E.

Hope you can help get me started!

You’re getting ahead of me with the QSNE-4A-D. I have experimented with QSNE-2ECO-D’s and QSNE-2DAL-D’s using their ethernet port and Lutron’s old QSN programmer set up based on an iPod (no, I am not kidding). The QSNE devices are oriented towards commercial/industrial applications relying on their Quantum processors (I’ve got a couple of those on the “to do” list) and, most importantly, their secret Windows licensed software that only their high priests can provision. If you’re game to experiment, the ethernet port on the devices supports DHCP and a simple Telnet session. If you’re lucky, your device will not have been provisioned, and the stock login password will still be set. I have not tried to see how they interact on the QS bus with an NWK yet. My guess is that they might be controllable with NWK “phantom buttons” but for the life of me I could not get them to work. If we’re lucky, they may take integration IDs which would allow you to control them through HA and pyluton. But that set up is all manual. From what I have seen, their telnet protocol is distinctly different from the NWK*.

I can tell you about the QSE-IO integration with a Grafik Eye QS (QSGR/QSGRJ). I have one dedicated QSGRJ-8E set up to control my Velux skylights. The QSGR toggles the output lines of a pair of QSE-IO’s which in turn drive the inputs of a pair KLF-200’s. I could not get the QSGRJ to drive the QSE-IO without the QSGRJ thinking that there was also a physical load associated with each zone. So I cheated and used a pair of 4 channel eldoLED POWERdrive 106/S in DALI mode on the EcoSystem bus. (Yes, DALI devices work on Lutron EcoSystem busses. EcoSystem is just a proprietary extension of the DALI 1 standard. This is how they sell product in Europe.) Once the 8 DALI zones are configured on the QSGRJ, you can remove the DALI devices and the QSGRJ is none the wiser. Maybe there is an easier way to do this by setting up the QSGRJ zones as something other than “non-dim digital” but I couldn’t find it. The QSE-IO’s get dip switches set to “Zone Toggle Mode”, and then each QSE-IO output is assigned to a QSGRJ zone - see the programming instructions in the QSE-IO manual found here:

So now anything, from QSWS2 wallstations to HA can tell the QSE-IOs to toggle their outputs. If you only need HA integration, and don’t need wallstation controls, you can leave out the QSGRJ and just go ahead and toggle the QSE-IO components through the NWK after setting up their integration IDs. My system is set up so that HA is an afterthought, and if it goes down, the Lutron lighting control (and skylight, and eventually blinds) remain operational.

I hope this helps.

  • The QSNE telnet commands I have seen include “QSREPORTINFODUMP” and “QSCONNECTEDDEVICES”, which are generally immediately followed by the 0x12345678 hexadecimal serial number of the device being addressed. That’s why I’m not too sure they will play well with the NWK or even support integration IDs. For devices without an ethernet port (Lutron seems to have moved away from integrating a port on each device to save some money) I believe that the QSE-CI-AP-D provides a similar function to devices on a QS link bus. They are getting pretty rare these days, I’m glad I grabbed one a few years ago.