Fork notice: This is a friendly fork of nkvoll/home-assistant-qsys-qrc that adds support for top-level Q-Sys Named Controls (the entries in the Named Controls panel that aren't backed by a scriptable component) and a new
selectplatform for controls with aChoiceslist. See the Named Controls section below for the YAML and the Releases page for changelog.
Note: This is a work in progress, but should work. If it doesn't, please open an issue.
A custom component that integrates Q-Sys Core Devices with Home Assistant via QRC. This is useful to expose elements such as gain controls, mute buttons and different media players to HA.
-
media_playerplatform:- Media Stream Receivers/ URL Receivers
- On/Off (Enable/Disable)
- Mute control
- Volume control (stereo channels)
- Browse media
- Play media
- Audio Player / Audio File Player
- On/Off (Enable/Disable)
- Mute control
- Volume control
- Browse media (files on the Core)
- Play media (files on the Core)
- Seek
- Loop on/off
- Media Stream Receivers/ URL Receivers
-
numberplatform:Valuecontrols (e.g gains)- Direct control (setting Value directly)
- Position control (0.0 to 1.0)
- Custom mapping via templated changes/values.
-
sensorplatform:EngineStatusexposed to HA- Any component control
-
switchplatform:- Any float/int/bool where 1.0/1/True is considered on respectively
- Toggling.
-
textplatform:Stringcontrols.
-
selectplatform (this fork):- Q-Sys controls with a
Choiceslist (e.g. multi-state buttons, source selectors). - Options auto-populate from QRC; pin a static
options:list in YAML to override.
- Q-Sys controls with a
-
Top-level Named Controls (this fork):
- For switch / number / sensor / text / select entries, omit the
component:key and the integration treatscontrol:as a top-level Q-Sys Named Control (i.e., entries in the Named Controls panel that aren't pinned to a scriptable component). Existing component-backed configs keep working unchanged.
- For switch / number / sensor / text / select entries, omit the
-
services:- Invoking methods on the device via QRC (see
Servicessection below)
- Invoking methods on the device via QRC (see
Add the custom component via your custom_components folder or via HACS (untested).
- Install HACS
- Open HACS in the sidebar and go to "Integrations".
- Press the three dots in the top right corner and select "Custom repositories"
- Fill in the form with
Repository: https://github.com/itskevinb/home-assistant-qsys-qrc,Category: Integrationand click "Add". - Once it's added, you can search for
q-sys qrc, click the integration and select "Download". - Restart Home Assistant ("Settings" -> three dots top right corner -> "Restart Home Assistant")
- In the HA UI go to "Configuration" -> "Devices & Services" click "+ Add Integration" (bottom right corner) and search for "Q-Sys QRC Integration"
- Using the tool of choice open the directory (folder) for your HA configuration (where you find
configuration.yaml). - If you do not have a
custom_componentsdirectory (folder) there, you need to create it. - In the
custom_componentsdirectory (folder) create a new folder calledqsys_qrc. - Download all the files from the
custom_components/qsys_qrc/directory (folder) in this repository. - Place the files you downloaded in the new directory (folder) you created.
- Restart Home Assistant ("Settings" -> three dots top right corner -> "Restart Home Assistant")
- In the HA UI go to "Configuration" -> "Devices & Services" click "+ Add Integration" (bottom right corner) and search for "Q-Sys QRC Integration"
First, set up the integration through the UI to configure the core name and credentials.
To expose component controls to HA, configure them via the configuration file (configuration.yaml).
See the example configuration for an example of what can be configured.
In order to find the right component and control names, use the Q-Sys Designer. To find the right control name, open the design file and use “Tools → View Component Controls Info” then select your component. See example screenshot.
Q-Sys designs often expose top-level Named Controls — entries in the
Named Controls panel that aren't bound to a scriptable component. These are
reachable via QRC's Control.Get / Control.Set, and this fork lets you
map them to HA entities by omitting the component: key in YAML.
Here's a real install — 23 Named Controls from a melbourne_v10 design (touchscreen mode/timeouts, PTZ camera buttons, screen brightness) all loaded as switches, numbers, and sensors under one Q-Sys QRC device:
qsys_qrc:
cores:
MainCore:
platforms:
switch:
- name: "Apple Power"
control: "Apple.Power" # top-level Named Control
- name: "Roon Mute"
control: "Roon.Mute"
number:
- name: "Roon Volume"
control: "Roon.Volume"
unit_of_measurement: "dB"
min: -80
max: 0
step: 1
select:
- name: "Apple Lights"
control: "Apple.Lights" # options auto-populated from Choices
text:
- name: "Hue Lights"
control: "Hue.Lights"
sensor:
- name: "Roon Now Playing"
control: "Text_ControllerNowPlaying_Text"
attribute: "String"Component-backed entries (the original style) keep working unchanged alongside top-level entries.
To enumerate the Named Controls a Core exposes, you can call
Control.Get with the qsys_qrc.call_method service (see below) using
a flat list of names — or omit Component.GetComponents and look at the
Named Controls panel in Q-Sys Designer.
Used to call any method via QRC Commands:
service: qsys_qrc.call_method
data:
device_id: 7b7be23f1d37293589c28bee4dbb5b4d
method: Component.Set
params:
Name: bathroom_f2_gain
Controls:
- Name: gain
Position: 0.5
Ramp: 2service: qsys_qrc.call_method
data:
device_id: 7b7be23f1d37293589c28bee4dbb5b4d
method: Component.Set
params:
Name: bathroom_f2_gain
Controls:
- Name: mute
Value: trueservice: qsys_qrc.call_method
data:
device_id: 7b7be23f1d37293589c28bee4dbb5b4d
method: Mixer.SetCrossPointMute
params:
Name: main_mixer
Inputs: "*"
Outputs: "*"
Value: true- Add (more) tests, especially around the code that integrates with home-assistant itself, see
pytest-homeassistant-custom-componentto get started. - Share the integration on the Home Assistant Forum.
- Anything else?
If you want to contribute to this please read the Contribution guidelines
This Home Assistant custom integration is not endorsed or affiliated with QSC, LLC.
- QSC and the QSC logo are registered trademarks of QSC, LLC in the U.S. Patent and Trademark Office and other countries.
- QSC, the QSC logo and (Name) are registered trademarks of QSC, LLC in the U.S. Patent and Trademark Office and other countries.
- Q-SYS is a trademark of QSC, LLC.

