Triggers

A Trigger is an event that the controller receives which can then be used to tell the controller to do something. It is the IF part of an IF THEN statement.

Example:

IF (Real Time is 10:00:00) THEN (Start Timeline 1)

The Real Time Trigger will fire whenever the built in Real Time clock tells the controller that it is 10:00:00, and the controller will then Start Timeline 1.

There are many different trigger types available, each linking to a different internal or external triggering situation.

ClosedClock/Calendar Triggers

Clock/calendar triggers use the controller's real time clock to fire triggers based on the current time, or astronomical or lunar events such as Sunset or the Full Moon. These triggers are often used when a schedule is required for the project. This could be as simple as starting a light show at sunset and stopping it at sunrise.

Real Time

The Controller has an internal, battery-backed real time clock. In a project with multiple Controllers only one Controller is set as the Network Primary (see Controller association), use the configuration settings to determine what sort of real time event will be matched, for example 5 minutes past every hour or at noon on a specific date.

The standard dialog allows you to deal with the most common cases, including one-off events or events that recur hourly, daily or weekly. Note that the maximum resolution of real time events is 1 second, so an "Any Time" trigger will fire every second during the specified date range:

There is also an advanced dialog that allows you to specify a precise mask of when the trigger should fire, using a combination of year, month, day of the month, day of the week, hour, minute or second. Highlighted values are included in the mask and make sure all values are highlighted in any column you don't care about. The trigger will fire at all times that match the specified mask in all columns - so no column should be blank or the trigger will never match:

Further information about the use of the real time clock can be found in the conditions chapter.

In the Network view, a Controller properties option exists to "execute real time triggers on startup". This will ensure that all real time triggers are executed from a user-specified time to the current time to reinstate the correct playback state in case the Controller is restarted for some reason (e.g. power loss, watchdog or remote reset).

Astronomical

The Controller is also equipped with astronomical clock algorithms which automatically generate the correct sunrise, sunset, dawn and dusk times for the location of the installation (see project properties). Use the configuration pane to select between sunrise, sunset, dawn or dusk and to specify an offset, negative or positive, in minutes. A negative offset will be the specified number of minutes earlier, and a positive offset will be later.

Two versions of dawn and dusk are offered, using the two definitions of twilight: civil and nautical. Please see Wikipedia for an explanation of these terms.

A Controller properties option exists to ensure that all astronomical triggers are executed from a user-specified time to the current time to reinstate the correct playback state in case the Controller is restarted for some reason (e.g. power loss, watchdog or remote reset).

Lunar

As well as astronomical triggers the Controller uses lunar clock algorithms to calculate the lunar phases based on the location of the Controller (see project properties).

The lunar events are new moon, first quarter, full moon and third quarter. Use the configuration pane on the right to select the phase.

ClosedPlayback Triggers

A playback trigger is fired by an event involving a timeline or scene, or by the controller booting. These could be used to start a particularly timeline when the controller boots, or to always start a timeline when another has finished.

Startup

The startup trigger determines what the Controller should do after power up or reset. There are no configuration options.

Timeline Started

A timeline starting (generally as a result of a trigger or the timeline looping) can be used as a trigger, use the configuration pane to select which timeline.

Timeline Ended

A timeline reaching the end of its programming can be used as a trigger, use the configuration pane to select which timeline. For a looping timeline, this trigger will fire every time the timeline loops.

Timeline Released

A timeline releasing can be used as a trigger, use the configuration pane to select which timeline.

Timeline Flag

Any timeline can have one or more flags placed on the time bar (see working with timelines) to act as triggers, use the configuration pane to select which timeline and the flag within that timeline.

Timeline can be set to any to match any flag in the project. The timeline number will be captured as a variable.

Flag can be set to any (with a specified timeline) to match any flag in that timeline. The time of the flag (in milliseconds) will be captured as a variable.

Scene Started

A Scene starting (generally as a result of a trigger or a timeline preset being used) can be used as a trigger, use the configuration pane to select which Scene.

Scene Released

A Scene releasing (generally as a result of a trigger or a timeline preset being used) can be used as a trigger, use the configuration pane to select which Scene.

ClosedInteractive Triggers

Interactive Triggers are triggers which respond to an input from a human (generally). These include push buttons on the Pharos BPS and Touch Device and other Touch Device controls. You would use these triggers if you have a Touch Device in your project and need to act upon interaction with the controls on the interface.

Soft Trigger

This trigger type is provided for triggering from the web interface, there are no configuration options.

Digital Input

The LPC and TPC with EXT have 8 digital inputs which can be used as triggers, either to detect a voltage or a contact closure driving with an "active high" signal. More information on High and Low for Contact Closure can be found here. Use the configuration pane to select which Controller (Any or a particular LPC or TPC with EXT), which Input (1 through 8) and the polarity of the logic - select Low for contact closure or when driving with an "active low" signal, select High for driving with an "active high" signal.

The Input can also be set to Low Held or Low Repeat. These will use the Held Timeout and Repeat Interval settings to fire the trigger once the Input has been low for the Held Timeout or every Repeat Interval after the Input goes Low.

The Clicked option can be used to fire the trigger when it changes to Low and back to High. The Clicked event will only occur if the input is toggled before the Held timer occurs, which can be set independently for each Remote Device in the Network view. More information can be found on the Held timer here.

To receive a digital input from a Pharos Remote Device, change the Device to RIO 80 or RIO 44 and set the RIO number, or leave as Any. The RIO 80 has 8 inputs and the RIO 44 has 4 inputs.

The inputs on the LPC and TPC with EXT hardware and the RIOs can also be configured as analog inputs in the Network Mode.

Analog Input

The revised LPC and TPC with EXT hardware has 8 inputs that can be configured as digital or analog inputs in the Interfaces tab of the Network view. The RIO 80 and RIO 44 have inputs that can be configured as digital or analog inputs in the Remote Devices tab of the Network view.

Use the Controller and Input settings to specify which Controller’s analog input should be considered the input source. Alternatively, leave the Input set to Any to match any of the inputs of the Controller and to capture the input as a variable. To use a RIO's input as the input source, change the Device from Local and select the RIO number, or leave this as Any.

Now you should specify the range of voltage to trigger on. You can choose whether to trigger every time the voltage changes within the specified range ("Changes in range"), or to only trigger when the voltage enters the specified range ("Enters range"). "Enters range" is generally more useful when you are using analog inputs to trigger timelines, but "Changes in range" would be required if you were using an analog input as a variable passed to a Set Intensity action to control the intensity for a group.

The voltage range of a Controller's or RIO's analog input can be configured in the Network view. The smallest measurable voltage change is 0.25V.

BPS Button Event

The BPS has eight buttons which can be used as triggers.

Use the configuration pane to select which Controller should process the trigger. Select the BPS, button number (or leave as Any - see variables) and the type of button event (Press, Held, Repeat, Release, Clicked). Setting the button number to Any will capture the pressed button as a variable.

ClosedTouch Device Triggers

Touch Button Event

Whenever a button in a Touch Device user interface is touched, triggers of this type will be checked for a match.

The Button field should be set to the Control Key of the button you're interested in - this is a property of buttons that is set in Interface. Either pick a control key from the list, or type it in.

The Event defaults to 'Click', which is a complete press and release touch action. Other options are Press, Release, Held and Repeat, like the BPS Button trigger.

Touch Slider Move

Whenever a slider in a Touch Device user interface is moved, triggers of this type will be checked for a match.

The Slider field should be set to the Control Key of the slider you're interested in - this is a property of sliders that is set in Interface. Either pick a control key from the list, or type it in.

Touch Colour Change

Whenever a colour picker in a Touch Device user interface is touched, triggers of this type will be checked for a match.

The Picker field should be set to the Control Key of the colour picker you're interested in - this is a property of colour pickers that is set in Interface. Either pick a control key from the list, or type it in.

Touch Page Change

Whenever the current page of a Touch Device user interface is changed, triggers of this type will be checked for a match. Set the Controller number to a particular Touch Device in order to populate the Page drop down list from the Interface.

The Page field should be set to the name of the page you're interested in - this is a property of pages that is set in Interface. Either pick a page name from the list, or type it in. You can also specify wether you want the trigger to fire when entering or leaving that page.

Touch Keypad Code

When the Enter key on a keypad is pressed, triggers of this type will be checked for a match.

The Keypad field should be set to the Control Key of the keypad you're interested in - this is a property of keypads that is set in Interface. Either pick a control key from the list, or type it in.

Touch Inactivity

Whenever the sleep/awake state of a Touch Device screen is updated, triggers of this type will be checked for a match.

Choose whether to trigger after a period of inactivity or when the Touch Device becomes active (is touched) again.

The timing for when the controller is set to inactive is in the Controller Properties area of the Network tab.

ClosedProtocol Triggers

Protocol Triggers are generally triggers which include communication with another device using a command protocol such as Serial (RS232/485), Lighting control data (DMX/eDMX/DALI) and Ethernet (TCP/UDP). These would be used when another device is used which can communicate with one of these protocols, and they could be used to start a timeline when a particular string is received from another device, or to set the intensity of a group of fixtures based on an Audio input.

ClosedCommands

Protocol Command triggers can be used when a specific message is being send to a controller by another control system or device. These could be an ASCII string sent over Serial which should cause a timeline to start or a MIDI message from a Show control system to turn down the house lights in a performance space.

Serial Input

RS232 EIA-232; an industry standard communications protocol for computing and telecommunications equipment. remains a very popular protocol for interfacing equipment and the RS232 port of a Controller or Remote Device can be configured to support most common data formats. RS485 EIA-485; an industry standard communications protocol for computing and industrial equipment. is a more robust alternative to RS232 (better noise immunity, longer cable lengths and faster data rates) and is a widely supported protocol. A Controller or Remote Device can be configured to receive RS232 full-duplex or RS485 half-duplex in the Network view, see Controller interfaces and Remote Devices. A TPC with EXT can receive RS232 full-duplex.

To receive serial from a Controller's serial port, leave Device as Local and use the Controller setting to specify which Controller's serial port should be considered the input source.

For the old LPC Xs with 2 serial ports, the Port setting selects which of the two RS232 ports should be the input source.

Alternatively, set the Device to a RIO and select the RIO number.

Now define the string of input characters to be matched as the trigger. There are three formats in which serial strings can be entered:

Hex A series of hexadecimal characters (0-9, a-f, A-F) where pairs of values are interpreted as a byte.
Decimal A series of decimal characters (0-255) separated by "." characters.
ASCII A series of ASCII characters. The special characters '\n' for new line, '\r' for carriage return, and '\t' for tab are supported.

Additionally, each byte can be replaced with a wildcard to match a range of input characters and these wildcards can even be captured as variables to determine the trigger's action.

Ethernet Input

Use the Controller setting to specify which Controller should process the Ethernet input. Select the Ethernet Source (see Controller interfaces) and press Edit to define the string of input characters to be matched as the trigger in much the same way as RS232 (see above).

MIDI Input

MIDI "Musical Instrument Digital Interface"; an industry standard communications protocol for musical instruments.  is another very popular protocol for interfacing equipment and the MIDI input trigger allows you to define, via a convenient MIDI Message Builder, the type (Short message, MIDI Show Control or Extended) and command string that is to be matched as the trigger. Variables can be captured to determine the trigger's action.

Use the Controller setting to specify which LPC's MIDI port should be considered the input source. To use the MIDI port on a RIO A, set the Device to RIO A and specify the RIO A number, or leave this as Any. In this case, the RIO number will be captured as a variable.

Press Edit to open the Message Builder:

Press Add, select one of the three message types and then the specific command and variables.

Press Delete to delete a command string.

The resulting hexadecimal string will be constructed automatically and displayed in the window for reference with question marks ("??") indicating undefined characters in MIDI Show Control (since we do not know in advance how many characters will be captured) or <c>, <d> and <x> as appropriate for Short and Extended messages.

Press Ok to finish.

A comprehensive guide to MIDI is beyond the scope of this document, see the MIDI Manufacturers Association for more details, and the manual for the equipment to be interfaced will also certainly be an invaluable reference.

Remote Device Online

Use this trigger, not the Startup trigger (which will fire before the Remote Devices can be detected), if you wish to act upon the detection of a Remote Device, for example to configure it with settings other than its defaults.

Use the configuration pane to select which Controller should process the trigger and select the Remote Device's type and identification number (or leave as Any - see variables).

Remote Device Offline

Use this trigger if you wish to act upon the loss of a Remote Device, for example to enter a fail safe state and issue a warning.

Use the configuration pane to select which Controller should process the trigger and select the Remote Device's type and number (or leave as Any - see variables).

Live Video Signal

Use this trigger to act upon the presence or absence of Live video.

Use the configuration pane to select which Controller should process the trigger and select the Event (Signal lost/Signal found).

Cloud Connection State

Use this trigger if you wish to act upon the connection or disconnection of a controllers Cloud Site. The current status of a controllers connection to a Cloud Site is shown on the home page of the web interface.

ClosedDALI Triggers

DALI Triggers are specifically used to trigger based upon messages travelling on a specified DALI bus. This allows integration of a Pharos Controller with another DALI controller, so that a timeline for some DMX fixtures can be started at the same time as a DALI command is sent.

DALI Input

RIO D or TPC with EXT required.

To use a TPC with EXT as the input source, use the Controller setting to specify which Controller has the EXT and leave the Device as Local.

To trigger from a RIO D, set Device to RIO D and select the number of the RIO D, or leave this set to Any to cause the trigger to attempt to match against DALI input from any RIO D. In this case, the RIO D number will be captured as variable.

The RIO D and TPC with EXT snoop the DALI bus and so the trigger can be set up to respond to any DALI commands:

  • Command - select Direct Level (0>254), Scene or Relative Level
  • Address - select All, Group (0>15) or Ballast (1>64)
  • Min/Max - select the level to match for Direct Level triggering or
  • Scene - select the scene (1>16) for Scene matching or
  • Type - select the type of Relative Level command to match

The RIO D and EXT both recognise DALI input from Light Sensors and Occupancy Sensors that utilise Tridonic eDALI commands. When triggering from an Occupancy Sensor select which state is to be matched. When using a Light Sensor, specify what range of light level (0>254) is to be matched. See the table below for light levels:

DALI Bus Power

RIO D or TPC with EXT required.

Use this trigger if you want to act upon a change of the electrical state of a specific DALI bus. Buses can be in one of three states: Correct Power, Incorrect Power and No Power.

DALI Ballast Error

RIO D or TPC with EXT required.

Use this to trigger from a DALI ballast reporting an error. Specify the interface then use All to match if any ballast on that interface reports an error. Alternatively select a single address to match to. Next select the error type to match to.

ClosedDynamic

Dynamic Triggers tend to receive a value which can be anywhere within a range (e.g. DMX 0-255). These inputs generally have the Changes in Range event and Enters range event, so that a trigger can be fired whenever the input changes or only when it crosses a threshold. This could be used to set the intensity of some fixtures whenever a DMX input changes, or start a timeline when a sensor connected as an analog input passes a threshold (e.g. wind speed)

DMX Input

LPC and LPC X rev 1 can receive DMX directly. TPC, LPC X rev 2 and LPC X S3 can only receive DMX-In via Art-Net and sACN.

Use the Controller setting to specify which controller should receive the DMX.

Now you should specify which DMX channel to look at and the range of values to trigger on. You can choose whether to trigger every time the value changes within the specified range ("Changes in range"), or to only trigger when the value enters the specified range ("Enters range"). "Enters range" is generally more useful when you are using DMX to trigger timelines, but "Changes in range" would be required if you were using a DMX channel as a variable passed to a Set Intensity action to control the intensity for a group.

DMX Input State

LPC and LPC X rev 1 can receive DMX directly. TPC, LPC X rev 2 and LPC X S3 can only receive DMX-In via Art-Net and sACN.

Use the Controller setting to specify which controller should receive the DMX.

The Event state defines when the trigger should be fired.

The Input Lost event will be fired when the controller detects that it is no longer receiving DMX on the configured input.

The Input Detected event will be fired when the controller detects that it is receiving DMX data after not receiving it previously.

Audio Input

The RIO A has a stereo balanced line level audio input that can be used as a trigger.

To trigger from a RIO A, select the number of the RIO A, or leave this set to Any to cause the trigger to attempt to match against audio input from any RIO A. In this case, the RIO number will be captured as a variable.

Use the Channel setting to specify whether the trigger should match against the left or right audio channel, or the combination of the two. Now select which frequency band to use, or leave this set to the overall volume of the channel. Each RIO A can analyse incoming audio as up to 30 frequency bands - see Remote Devices.

The Peak checkbox tells the trigger to match on the decaying level of the last peak in the audio frequency band.

Finally, specify the range of values to trigger on. You can choose whether to trigger every time the value changes within the specified range ("Changes in range"), or to only trigger when the value enters the specified range ("Enters range"). "Enters range" is generally more useful when you are using audio to trigger timelines, but "Changes in range" would be required if you were using an audio band as a variable passed to a Set Intensity action to control the intensity for a group.

Temperature

The Touch Device has a temperature sensor, which can be used in triggers.

Use the Controller to specify which Touch Device should be considered the input source. Select the units as Celsius or Fahrenheit, then choose how to respond to changes. You can choose whether to trigger every time the temperature changes within a specified range ("Changes in range"), or to only trigger when the temperature enters a specified range ("Enters range"). "Enters range" is generally more useful when you are using temperature changes to trigger timelines, but "Changes in range" would be required if you were using the temperature reading as a variable passed to a Set Intensity action to control the intensity for a group.