A Q-SYS control plugin for SigmaNet Light Magic controllers using the LM3A protocol over HTTP.
The plugin is designed as an integration driver. It exposes ready-to-use, bidirectional controls that can be dragged directly from the component panel into a Q-SYS UCI without additional scripts, NOT gates, or separate feedback controls.
Important
This project is currently in beta. The plugin compiles and its protocol, parser, toggle, and dynamic-layout logic are covered by offline tests. Communication behavior must still be validated against the physical Light Magic controller used in the target installation.
- LM3A program, OFF, intensity, speed, and status commands
- HTTP communication through the Q-SYS
HttpClientAPI - Configurable IP address, port, enabled zones, and program-button count
- Periodic status polling with user-command priority
- One bidirectional Toggle per program for both command and feedback
- Mutually exclusive program selection within each zone
- Immediate local UI response followed by authoritative polling feedback
- Debounced and coalesced intensity and speed updates
- Online, data-valid, queue, response, and error diagnostics
- Dynamic component pages for only the configured zones
The compiled plugin is available at:
- Download
LightMagic-QSYS-Plugin.qplug. - Add it to the Q-SYS Designer custom plugin location used by your installation.
- Restart or refresh Q-SYS Designer.
- Find the component under
SigmaNetasLight Magic Controller. - Add a new instance to the schematic and confirm the displayed version.
Keep a copy of the previously deployed plugin and Q-SYS design before upgrading an existing installation.
Set these component properties first:
| Property | Default | Description |
|---|---|---|
IP Address |
10.0.0.208 |
Light Magic controller address |
Port |
80 |
HTTP port |
Protocol Prefix |
LM3A |
Protocol command prefix |
Enabled Zones |
00 |
Comma- or space-separated zones, for example 00,08,16 |
Program Buttons Per Zone |
8 |
Program Toggles generated for each enabled zone |
Polling Enabled |
true |
Enables periodic status synchronization |
Polling Interval |
1.0 s |
Target duration of one polling cycle |
Debug Mode |
None |
Selective TX, RX, queue, or polling logging |
Zone 00 represents CUE/all zones. It is shown on the CUE component page.
Other enabled zones receive pages such as Zone 08 and Zone 16.
For each enabled zone, the component panel provides:
OFFProgram 001,Program 002, and subsequent program TogglesIntensitySpeed- read-only active-program, program-count, and data-valid feedback
Open the required CUE or Zone XX page and drag a Toggle or fader directly
into the UCI. The UCI control remains a proxy of the same plugin control, so a
single object carries both command and real feedback. Its UCI Caption can be
changed without changing the technical control name.
Example for Zone16Program001:
OFF -> ON: LM3A16P00100
ON -> OFF: LM3A16P00000
Selecting Program 002 turns Program 001 off locally without sending an
intermediate P00000. A later status response such as F;2;100;0;7 is
authoritative and sets Program 002 ON, all other program Toggles OFF,
Intensity to 100, Speed to 0, and Program Count to 7.
If polling reports program 0, all program Toggles for that zone are OFF.
Programmatic feedback updates are event-suppressed and never generate HTTP
commands.
- Only one HTTP request is active at a time.
- User commands have priority over routine polling.
- Poll requests are deduplicated.
- Pending intensity and speed changes for the same zone are coalesced.
- Successful write commands schedule a status-verification poll.
Onlinerequires a recent valid LM3A response, not merely HTTP connectivity.- A bare
Gis accepted as command success. - A bare
Fis treated as an error. F;program;intensity;speed;countis parsed as zone status.
Plugin sources are in LightMagic-QSYS-Plugin.
Run the offline tests from the repository root:
& .\LightMagic-QSYS-Plugin\tests\protocol_tests.ps1
& .\LightMagic-QSYS-Plugin\tests\toggle_logic_tests.ps1
& .\LightMagic-QSYS-Plugin\tests\layout_tests.ps1Build the plugin:
Push-Location .\LightMagic-QSYS-Plugin
& .\plugincompile\PLUGCC.exe LightMagic-QSYS-Plugin .\plugin.lua
Pop-LocationThe compiler writes LightMagic-QSYS-Plugin.qplug inside the plugin source
directory.
The implementation is based on the available Light Magic v4 protocol documentation and is structured to accommodate later protocol findings. A Light Magic v5 installation should be tested carefully before production use.
This is an independent integration project authored by GreenCrew Julian Szymanski. It is not an official SigmaNet or QSC product.
See LICENSE.txt.