This repository is unmaintained. Current status is: WebSocket protocol implemented as stated below. First MQTT tests are in main.go but not implemented as stated below. Feel free to contribute! (The Golang package paths need to be updated because I changed my GitHub username.)
Supported endpoints have a checkmark:
- (empty): ignore
-
QLC+CMD|opMode: Toggle between design/operate mode -
QLC+IO|(INPUT|OUTPUT|FB)|<universe>|<pluginName>|<input>: Patch the given universe to go through the given input/output plugin (and output with feedback)<universe>: The input universe to patch (starting at zero)<pluginName>: The name of the plugin to patch to the universe<input>: An input universe provided by the plugin to patch to
-
QLC+IO|PROFILE|<universe>|<profileName>: Patch the given universe via a given profile<universe>: The input universe to patch (starting at zero)<profileName>: The name of an input profile
-
QLC+IO|PASSTHROUGH|<universe>|<state>: Set/unset the universe with the given index in passthrough mode<universe>: The universe index (starting at zero)<state>: true = passthrough, false = normal mode
-
QLC+IO|AUDIOIN|<device>: Set input capture device<device>: The device or__qlcplusdefault__to disable
-
QLC+IO|AUDIOOUT|<device>: Set output capture device<device>: The device or__qlcplusdefault__to disable
-
QLC+AUTH|ADD_USER|<username>|<password>|<level>: Adds user to password table. If given username already exists it is replaced.<username>: The username to add<password>: The password to add the user with<level>: GUEST_LEVEL = 0, LOGGED_IN_LEVEL = 1, VC_ONLY_LEVEL = 10, SIMPLE_DESK_AND_VC_LEVEL = 20, SUPER_ADMIN_LEVEL = 100, NOT_PROVIDED_LEVEL = 100
-
QLC+AUTH|DEL_USER|<username>: Deletes a user from password table<username>: The username to delete
-
QLC+AUTH|SET_USER_LEVEL|<username>|<level>: Set user level for a user in password table<username>: The username to delete<level>: GUEST_LEVEL = 0, LOGGED_IN_LEVEL = 1, VC_ONLY_LEVEL = 10, SIMPLE_DESK_AND_VC_LEVEL = 20, SUPER_ADMIN_LEVEL = 100, NOT_PROVIDED_LEVEL = 100
-
QLC+SYS|(NETWORK|AUTOSTART|REBOOT|HALT): System functionalities (skipped because not the scope) -
QLC+API|isProjectLoaded: Query and clear/disable project loaded state- answer:
QLC+API|isProjectLoaded|<state>with<state>equals totrueorfalse
- answer:
-
QLC+API|getFunctionsNumber: Returns the number of functions- answer:
QLC+API|getFunctionsNumber|<number>
- answer:
-
QLC+API|getFunctionsList: Returns all functions- answer:
QLC+API|getFunctionsList|[<id>|<name>]...
- answer:
-
QLC+API|getFunctionType|<id>: Returns the type of the function with the given<id>(orUndefined)- answer:
QLC+API|getFunctionType|<type>with<type>one ofScene,Chaser,EFX,Collection,Script,RGBMatrix,Show,Sequence,Audio,Video
- answer:
-
QLC+API|getFunctionStatus|<id>: Returns the state of the function with the given<id>- answer:
QLC+API|getFunctionStatus|<state>with<state>equals toRunningorStopped(orUndefined)
- answer:
-
QLC+API|setFunctionStatus|<id>|<state>: Sets the state of the function with the given<id>to the given<state>(0isStopped,1isRunning) -
QLC+API|getWidgetsNumber: Returns the number of widgets- answer:
QLC+API|getWidgetsNumber|<number>
- answer:
-
QLC+API|getWidgetsList: Returns all widgets- answer:
QLC+API|getWidgetsList|[<id>|<caption>]...
- answer:
-
QLC+API|getWidgetType|<id>: Returns the type of the widget with the given<id>(orUnknown)- answer:
QLC+API|getWidgetType|<type>with<type>one ofButton,Slider,XYPad,Frame,SoloFrame,SpeedDial,CueList,Label,AudioTriggers,Animation,Clock
- answer:
-
QLC+API|getWidgetStatus|<id>: Returns the state of the widget with the given<id>- answer for type
Button:QLC+API|getWidgetStatus|<value>with<value>equals to255when active,127when monitoring or0when inactive - answer for type
Slider:QLC+API|getWidgetStatus|<value>with<value>in the range[0,255] - answer for type playing
CueList:QLC+API|getWidgetStatus|PLAY|<cueIndex>with<cueIndex>equals to the current cue index - answer for type stopped
CueList:QLC+API|getWidgetStatus|STOP
- answer for type
-
QLC+API|getChannelsValues|<universe>|<startAddr>|[<count>]: Returns the channel values of a given<universe>(starting at one) beginning at given<startAddr>(starting at one) and returning one or given<count>channels- answer:
QLC+API|getChannelsValues|[<channel>|<value>|<type>]...with<channel>starting at one, value in range[0,255]and<type>the fixture type
- answer:
-
QLC+API|sdResetChannel|<channel>: Reset given<channel>of the current universe (skipped because not the scope) -
QLC+API|sdResetUniverse: Reset all channels of the current universe (skipped because not the scope) -
CH|<absAddr>|<value>: Sets the channel described with given<absAddr>to given<value>in range[0,255] -
POLL: Poll this API -
<id>[|<value>]: Sets given<value>of widget with given<id>Button:<value>equals to1for press and0for releaseSlider:<value>is in range of sliderAudioTrigger:<value>equals to1for active and0for inactiveCueList:<value>is<command>[|<index>]:PLAY: Plays cueSTOP: Stops cuePREV: Selects previous cueNEXT: Selects next cueSTEP|<index>: Selects cue with given<index>
Frame,SoloFrame:<value>is one ofNEXT_PG(next page) orPREV_PG(previous page)
The following topics are subscribed/published to by qlcplus-mqtt.
/qlcplus/api/function/<id>/enable:boolean
/channel/<absAddr>/value:number
/widget/<id>/value:booleanforButtonandAudioTriggertype,numberforSlidertype,{"command": string, ["index": number]}forCueListtype,stringforFrameandSoloFrametype
/qlcplus/api/function:[{"id": number, "type": string, "enabled": boolean}](retained)/channel:[{"absAddr": number, "value": number}](retained)/widget:[{"id": number, "type": string, "value": <value>}]with value see above (retained)