Programmer HTTP remote control

Via the HTTP server in the LAS you can access functions in the Programmer from a remote system. First, you have to configure and start the HTTP server in the Application options. When the configuration is finished, the HTTP server is ready for access. As there is no webpage in the server home path, you cannot see anything. But you can already trigger actions in the Programmer using a web browser. This is done through special tags inside the URL.

The basic syntax of an HTTP request is




where ServerAddress is the IP Address or domain name of the HTTP server, RequestType is the type of request you want to send and Request is the request itself. As you can see, the only difference between the lines is the use of get and xmlget respectively. This affects the style of the results that the Programmer sends back to the browser after a request. Using get, the result is in plain text. With xmlget, the result will be sent in XML, with the following layout:

<?xml version=”1.0” encoding=”utf-8” standalone=”yes”?>
<xml_ecue version=”1.0”>
<request value=”…” tag_id=”…”/>
<result value=”1” error=”0” message=”OK”/>
<result_entry value=”the first entry” />

XML-Tag Description

  • <?xml … standard XML header
  • ƒƒ<xml_ecue> protocol version number for e:cue HTML
  • ƒƒ<request> the request like it arrived at the Programmer
  • ƒƒ<result> ‘value’ – an integer value for the result, ‘error’ – nonzero value if an error  occurred, ‘message’ – error description in plain text
  • ƒƒ <result_list> holds a list of <result_entry> – tags
  • ƒƒ <result_entry> holds an attribute ‘value’ with results

Using get requires less result decoding effort but has a worse error handling. With xmlget,
in contrast, decoding is not as simple but you can see more easily what went wrong in case an error occurred. Empty spaces and various special chars are not allowed inside an HTTP request. You will have to transcode the request string to conform with the HTTP protocol. The JavaScript command XmlHttpRequest automatically transcodes forbidden characters into the correct format. You should use this command when you build your own website for remote access.

HTTP Request Types

The CallMacro request will execute a macro in the programmer. The macro must exist inside the show.


You can also pass up to five numeric parameters, separated with commas. Examples:

http://ServerAddress/xmlget?CallMacro=MyMacro or http://ServerAddress/get?CallMacro=MyMacro,2,4,6

The ExecCommand request will execute a single line e:cript command in the  Programmer:


In CommandString you can add any valid e:script command (or command sequence) like you would use inside the Programmer. You can also define global variables. Examples:

http://ServerAddress/get?ExecCommand=if (undefined(_x)) int _x;_x=10;

The AutoText request sends e:cue autotext to the Programmer. The Programmer sends back decoded autotext to the web browser as a result.



http://ServerAddress/xmlget?AutoText=<cuelist 1 status>

Using the HTTP requests by typing them directly into the browser’s address bar is too complicated for real practical applications. It is of course possible to embed the requests into a website. This is what it’s all about: create your own website with your own control elements and put it online using the Programmer’s integrated HTTP server. You can also refresh any status displays or control elements without having to reload the entire page. This is typically realized using the AJAX web development techniques.

KiNET configuration

KiNet is a protocol used by Color Kinetics to control their LED fixtures and power supplies. It is a lightweight Ethernet-based protocol and uses UDP on port 6038. Be sure that no
hardware or software firewall blocks this port. As said for e:net a separate network segment should be used, at least a separate segment for all fixture communication.

There are two protocol generations over time, KiNET v1 and KiNET v2. KiNET v1 is also called DMXOUT and v2 is PORTOUT. The various products of Color Kinetics support one or both protocol versions. To use KiNET components there are two steps necessary: configuration of the KiNET power supplies including the control functions, and setup of the Programmer for KiNET communication.

For the first step you have to use Color Kinetics programs, these programs are available
from the Philips/Color Kinetics homepage. Note: as I dont have CK products at hand, this is a kind of dry run.

  • Visit and follow Support, then Downloads from the main and left navigation.
  • Download the Light System Composer, unzip it and start the installer. The LCS installer places a folder on your desktop, this contains links to several tools, one is the  Management Tool, this program is used to configure the KiNET power supplies.
  • Use Light View | Discover Interfaces to allocate the power supplies, assign a unique IP address.
KiNET Manager

KiNET Manager

The next step is to configure the Programmer. The KiNET devices are used with a special
driver available in the Device Manager. So in Programmer, open the Device Manager, select Add Driverand add a driver for DMX Output, use the KiNET DMX-Node and click Add.

After the driver was added the configuration dialog for the KiNET node opens automatically.

KiNET DMX device

KiNET DMX device

  • Assign a unique name for the device.
  • Enter the assigned IP address, the output universe in Programmer.
  • Select the correct KiNET protocol version, see the following table for the protocol versions supported by the CK devices.
  • DMX Start Channel allows a DMX address shift if any other DMX addresses are placed before the target fixture. ChromASIC is autoadressing mode, usually not used.

Click OK to enable the driver as DMX output device.

Product KiNET v1 (DMXOUT) KiNET v2 (PORTOUT)
PDS-150e Yes No
PDS-500e Yes No
PDS-60 24V Ethernet Yes No
PDS-60 24V DMX/Ethernet Yes Yes
PDS-60ca 12V Ethernet Yes No
PDS-60ca 7.5V Ethernet Yes No
PDS-60ca 7.5V DMX/Ethernet Yes Yes
PDS-70mr 24V Ethernet Yes No
sPDS-60ca 24V DMX/Ethernet Yes Yes
sPDS-480ca (7.5V, 12V, 24V) No Yes
Data Enabler Ethernet Yes No
Data Enabler EO/iColor Accent Powercore No Yes

Control the Programmer with MS Powerpoint



No joke, it is possible to control the Programmer via Microsoft Powerpoint. This works via the web server interface in the Programmer and the HTTP methods in Powerpoint. Do it like this:

  • ƒIn Powerpoint options | Popular enable the Developer Ribbon.
  • Place an object in your presentation, e. g. a square like a button.
  • Right-click the object, select Hyperlink.
  • In the Action Settings dialog, select Run macro and define a macro name,
    e. g. StartShow1.
  • In the Ribbon, select Macro in the PP Ribbon, create a macro, here StartShow1, go to Edit mode and enter this code:
    Sub StartShow1()
    Set objHTTP = CreateObject(“MSXML2.ServerXMLHTTP”)

    URL = “;”       objHTTP.Open “POST”, URL, False

    objHTTP.setRequestHeader “User-Agent”, “Mozilla/4.0 (compatible;MSIE6.0;Windows NT 5.0)”

    objHTTP.send (“”)

    End Sub

Click Ok, close macro view. ƒƒ Dont forget to enable the Webserver in the Programmer!

Upcoming blog posts

Hi all,

these are some ideas/topics where I think useful blog posts can be derived of:

  • bug 390 – tips and hints for using the video wizard (Bartek can give good inputs)
  • kiosk mode with supervisor mode (with help of AutoHotkey) (
  • moxa e:script commands need DIGITAL_INPUT_0 (instead of INPUT_0) since 5.5
  • “import another patch”, behavior of FX in this situaion:
    A side effect is also that after an import of a new patch the FX won’t be editable.Both issues are fixed with this bug fix.
    The first situation (deleted fixtures) gives a warning in the logbook. The FX still won’t be editable. Use templates to save and reapply the template to keep the FX.
    The second issue (additional fixtures) won’t be a problem.
  • Done. [Rainer]
    blog post for Programmer<->Powerpoint (see LAS System Manual S. 173)
  • Moved to existing post [Rainer]
    Triggers supported in standalone mode
    Initialization – parameter context ignored
    Cuelists – only start/stop supported
    Hourly – seconds are ignored, only hour/minute
    Label – fully supported
    Periodic – fully supported
    Sunrise Timer – fully supported
    Supported Actions
    Cuelist – supported except parameter Choose
    Mutual Exclude Group – fully supported
    Ramp Intensity Start – fully supported
    Ramp Intensity Stop – fully supported
    Reset All – fully supported
    Step Intensity – fully supported
    Stop all cuelists -fully supported
    Trigger Label -fully supported
    Hibernate – fully supported
    Freeze – fully supported
    blog post for triggers supported in Butler XT2 Stand Alone Mode:

    [email von Jens, Di 03.07.2012 15:47]
    Triggers supported in standalone mode
    Initialization – parameter context ignored
    Cuelists – only start/stop supported
    Hourly – seconds are ignored, only hour/minute
    Label – fully supported
    Periodic – fully supported
    Sunrise Timer – fully supported
    Supported Actions
    Cuelist – supported except parameter Choose
    Mutual Exclude Group – fully supported
    Ramp Intensity Start – fully supported
    Ramp Intensity Stop – fully supported
    Reset All – fully supported
    Step Intensity – fully supported
    Stop all cuelists -fully supported
    Trigger Label -fully supported
    Hibernate – fully supported
    Freeze – fully supported
  • macro “toggle XT2 enable/disable” on AP button
  • “Action Pad connection problems” – suggestions
    switch to WPA2 (if not yet)
    turn off Auto-Brightness and make sure brightness is NOT set to the minimum (no joke!)
    turn off bluetooth
    use a current router (best an apple router)
    reset the iPads network settings (General > Reset > Reset Network Settings)
  • preview_updates (how to set them correclty, -1 vs 50000, trade off)
  • bpm master, bpm-crossfade-master (AP > cuelist control)
  • cuelist view, doubleclick on different rows leads to different functions
  • create an “e:cue programming cheat sheet”, which contains (at least) the following tables: “Trigger -> Call Macro”, “RegisterEvent(…) parameters”, “DMX Input Remote Control channels”, tbc
  • Done by Björn. [Rainer]
    channels behaving like inverted, but they are not
  • How To create an “On Exit Online Mode” Trigger (XT2), which runs ONLY in Offline Mode, not in Programmer online?
    (when I load a show, nothing should happen. Wenn I take the XT2 offline, QL1 should play)
    workaround: Play Cuelist, that stops itself via CallMacro. Call Macro does not work offline, so the Play Cuelist remains. Online the QL will immediately be stopped.
  • Programmer Action Pad vs remote (Browser/iOS) Action Pad – what does work, what does not?
    Cuelist Control
    Trigger Rules with Action Pad Event
    Page switch not forwardable to clients
    execute macro -> Programmer ActionPad MUST show the page that contains the button with the CallMacro action
  • working with the Action Pad: how to use the “Assimilation”, keyboard shortcuts (arrow keys = move; shift+arrow keys = duplicate; ctrl+enter = properties; etc)
  • explain that the FX Templates (Live Fx dialog) can be edited, deleted, organized by manually handling the files in C:\ProgramData\ecue\Programmer V6.0\FxTemplates
    One level of subfolders is allowed for structuring. The files will be read instantly on opening the menu in Live Fx dialog (no need to restart, etc.)
  • Done by Rainer. [Björn]
    Butler S2/XT2, how to behave like the old Butler Classic? On initialization trigger, put all QLs in same mutual exclude group 1 and action mutual exclude group > 1 > next
  • XT2 Standalone(!): on an input (dry contact) a cuelist is played. How to make this a cuelist different for workdays/weekend? Idea:
    On trigger, play all cuelists.
    All cuelists have a VMaster.
    On monday, set VMasters accordingly; on weekend vice versa.
    Example show: Damian Gale, LSV 13-6-13 for PB.shw
  • In a macro, wait for something (e.g. until device online). How to do it best?
    Cut your original macro into 3 pieces: before-wait, wait, after-wait
    QL a contains 3 cues: cue 1 calls before-wait, cue 2 calls QL x, cue 3 calls after-wait)
    QL a has Auto release on end!
    cue 1 and 3 have Control = 1.0s (or similar)
    cue 2 has Control= End QL x
    QL x contains 1 cue, which calls wait every 0.1s
    wait stops QL x, if device online
    Now everything is in place and by playing QL a you start the whole thing.
  • describe how to trigger something (e.g. play a QL) from a received TCP message, see
  • Color Picker pitfalls: 1) set CP to full white before export! 2) user trigger label to start (do NOT user actions within the QLs!)
  • password for remote (browser) ActionPads. Seems not possible via macro. See remoteActionPad_password.shw for example
  • Some Library channel names have a special meaning. Explain those and how you can get around it. See for some infos.
  • HowTo enable Programmer Webserver (for remote ActionPad) to listen on all NICs, see
  • Scrolltext (wizard) with unicode letters and seamless wrap-around in Bitmap Wizard
  • to be continued…

Defining triggers for Butler S2/XT2 and ETH2DALI standalone

Butler XT setup online/standalone

Butler XT setup online/standalone

For the e:cue Butler XT the definition of Triggers and Actions was quite clear. There were separated tabs for online and standalone mode, for Triggers and Actions. You could assign different Triggers and connected Actions for standalone mode and for online mode.

Butler XT2 setup

Butler XT2 setup

This has changed for the Butler S2/XT2 and the ETH2DALI. The configuration of the Butler S2/XT2’s Actions and Triggers in the Device Manager makes no difference between online and standalone mode. You will define all properties in one single dialog, as you can see on the left. No tabs, only one selection is possible. Define all Triggers and Actions here. When later exporting the show to the Butler XT2 and running a Quick Update, all Triggers not supported in standalone mode are not transferred to the Butler XT2, they are ignored. This seems a little bit confusing. The idea behind is to allow a simpler configuration and to harmonize the standalone and online configuration.

Triggers supported in standalone mode

ETH2DALI Butler XT2 Butler S2
Initialization Parameter context ignored
Cuelists Only stop/end supported
Hourly Seconds are ignored, only hour/minute
Label Fully supported
Periodic Fully supported
Sunrise Fully supported
DALI Event Fully supported

Conditions supported in standalone mode

Valid From/To is supported in standalone mode. Since LAS V7.0 this is Condition > Date.
All other Conditions in Trigger Rules (since LAS V7.0) are not supported in standalone mode.

Supported Actions in standalone mode

ETH2DALI Butler XT2 Butler S2
DALI Fully supported (except Ramp Intensity > Toggle Ramp Up Down)
Cuelists Supported except parameter Choose
Mutual Exclude Group Fully supported
Set Intensity Fully supported
Ramp Intensity Start Fully supported
Ramp Intensity Stop Fully supported
Reset All Fully supported
Step Intensity Fully supported
Stop all cuelists Fully supported
Trigger Label Fully supported
Hibernate Fully supported
Freeze Fully supported

Other restrictions in standalone mode

For Butler XT2 and ETH2DALI, a total of 99 cuelists can be exported and not more than 100 trigger rules will be evaluated in standalone mode.

ETH2DALI specific

The Butlers do not, but the ETH2DALI supports the following Actions additionally in cues and as cuelist “Release Action”:

  • DALI
  • Send Labeled Event
  • Toggle Trigger Label (useful to realize “toggle on/off” for a Ballast or Group with PBCs)
  • Driver Command (to switch the ETH2DALI relays)

See the LAS System Manual, Chapter »Managing devices«, »Configuring a Butler XT2« for details.

LAS 6.0 – Color Picker

Get the Flash Player to see this content.

LAS 6.0 – Setting up a show with Color Picker

Get the Flash Player to see this content.

How to write a post

Some general guidelines


Feel free to write a post as you like, but watch the following points:

  • Please do not use categories, either one uses categories or tags. As tags reflect the importance of topics we use tags and not categories (using both grants confusion).
  • Do not create new tags if not absolutely necessary. Go to Posts -> Tags to see already available tags. If you place the cursor into the tag field and you begin to type, available tags spelled like this will be shown.
  • Posts are public in general. There is a checkbox at the right bottom for “Access”. If you set this checkbox the post is handled at internal, only logged-in users can see the post. Logged-in users are those, who have a login.
  • Please use only Heading 1 for the main title and Heading 2 for subheaders (due to Google and SEO).
  • For longer posts please create a summary or a lead at the very beginning to help the user to see if this is relevant. Set the summary/lead in bold to mark it as what it is.


Internal users are Traxon employees, not students or trainees. Do not create new users if they are not Traxon intern. If users from outside Traxon want to have a login, please check with Chris Loeser. Better check with him in any case.


Channels behaving like “inverted”, but they are not

Due to a customer complaint, I came across the following issue, which caused the customer and myself half a day to detect the real cause and to configure the LAS to work as expected.

Hopefully this blog post helps some of you out there finding a solution more quickly.

A Future Light > PHS-260 was patched in Programmer V5.3. The Intensity channel has a mistake in the Main Library (Inverted=true), so the customer copied this fixture to the User Library and set Inverted=false.
But then patching a PHS-260 in the Programmer, setting Intensity to x% and playing with the GrandMaster still causes an inverted behaviour (pulling the GrandMaster down makes the Intensity channel go up and vice versa).

Reason: the GrandMaster at 0% is not simply setting all channels to 0%.
The closer the GrandMaster comes to 0%, the closer the channels go to their Default value.

In this case, the Default of the PHS-260 had also a mistake in the Main Library, it was set to 255. So pulling the GrandMaster down set the Intensity channel up (closer to 255).

The quick solution was clear: setting Default=0 in the User Library solved the behavior.
The Main Library will of course be corrected in the next LAS release. So keep in mind taking a look at both, Default and Inverted, when you work with these settings in the Library   ; )