WARNING - CONTENT NOW DEPRECATED
The content from this repository has been broken down into multiple smaller repositories, each focussed on one proxy. For the complete list, please see the main landing page for Driverworks
License, Copyright, and Trademark
The content contained in this repository is the intellectual property of Snap One, LLC, (formerly known as Wirepath Home Systems, LLC), and use without a valid license from Snap One is strictly prohibited. The user of this repository shall keep all content contained herein confidential and shall protect this content in whole or in part from disclosure to any and all third parties except as specifically authorized in writing by Snap One.
License and Intellectual Property Disclaimer
The content in this repository is provided in connection with Snap One products. No license, express or implied, by estoppal or otherwise, to any intellectual property rights is granted by this document or in this repository. Except as provided in Snap Oneʼs terms and conditions for the license of such products, Snap One and its affiliates assume no liability whatsoever and disclaim any express or implied warranty, relating to the sale and/or use of Snap One products including liability or warranties relating to fitness for a particular purpose, merchantability, or infringement of any patent, copyright or other intellectual property right. Snap One products are not intended for use in medical, lifesaving, or life sustaining applications.
Information regarding third-party products is provided solely for educational purposes. Snap One is not responsible for the performance or support of third-party products and does not make any representations or warranties whatsoever regarding the quality, reliability, functionality or compatibility of these products. The reader is advised that third parties can have intellectual property rights that can be relevant to this repository and the technologies discussed herein, and is advised to seek the advice of competent legal counsel regarding the intellectual property rights of third parties, without obligation of Snap One.
Snap One retains the right make changes to this repository or related product specifications and descriptions in this repository, at any time, without notice. Snap One makes no warranty for the use of this repository and assumes no responsibility for any errors that can appear in the repository nor does it make a commitment to update the content contained herein.
Copyright
Copyright 2023 Snap One, LLC. All rights reserved.
The above copyright notice applies to all content in this repository unless otherwise stated explicitly herein that a third-party’s copyright applies.
No part of this publication may be reproduced, photocopied, stored on a retrieval system, or transmitted without the express written consent of the publisher.
Trademarks
Snap One and Snap One Logo, Control4 and the Control4 logo, and DriverWorks are trademarks or registered trademarks of Snap One, LLC. Other product and company names mentioned in this repository may be the trademarks or registered trademarks of their respective owners.
Derivative Works
To the extent that you create any “Derivative Work” (meaning any work that is based upon one or more preexisting versions of the work provided to you in this repository, such as an enhancement or modification, revision, translation, abridgement, condensation, expansion, collection, compilation or any other form in which such preexisting works may be recast, modified, transformed or adapted, explicitly including without limitation, any updates or changes to Snap One, LLC’s software code or intellectual property) such Derivative Work shall be owned by Snap One, LLC and all right, title and interest in and to each such Derivative Work shall automatically vest in Snap One, LLC. To the extent any Derivative Work does not automatically vest in Snap One, LLC by operation of law, you hereby assign such Derivative Work to Snap One, LLC with full title guarantee. Snap One, LLC shall have no obligation to grant you any right in any such Derivative Work.
Contact Us
Snap One, LLC 11734 S. Election Road Salt Lake City, UT 84020 USA
Introduction
WARNING - CONTENT NOW DEPRECATED
The content from this repository has been broken down into multiple smaller repositories, each focussed on one proxy. For the complete list, please see the main landing page for Driverworks
Proxies (Commands)
A proxy driver is an interface to the Control4 system for a set of devices that share common functionality. For instance, most DVD disc changers have common controls such as PLAY, STOP, PAUSE and FAST FORWARD. The disc changer proxy allows for a common user interface to control all disc changers. The Control4 system (Director) sends information to and receives information from the proxy drivers. The proxy drivers send information to and receives information from the protocol drivers. Remember, your DriverWorks driver interacts with the proxy driver which then interacts with the system. As a driver developer you will be relying on this proxy to provide status (notification) to the Control4 system for the device you are controlling. You will also receive commands from the system that you will act on to control the device. These commands and notifications are at the heart of what you will be implementing in your driver. Essentially your driver is becoming the go-between from the Control4 system and your device with the proxy driver giving structure to the commands and notifications which you will be implementing. Your driver can facilitate communications with multiple types of proxies for a single device. As an example, a Security System driver will utilize both the Security proxy and the Contacts proxy. These additional proxies are configured in the <connections> section of the .c4z.
Protocol (Notifications)
Two similar devices may have the same functionality but utilize a very different command set. A protocol driver provides the device-specific information needed to communicate with the Control4 system. In the case of DriverWorks, the DriverWorks driver is the protocol driver. When combined with the device-specific.c4Z file it provides the custom code necessary to implement the 2-way device driver. In the case of DriverWorks, the DriverWorks driver is the protocol driver. When combined with the device-specific.c4Z file it provides the custom code necessary to implement the 2-way device driver.
What’s New
What’s New in 3.4.2
AV Proxies
The following Proxy Commands have been enhanced in this release to include a new command parameters:
The new command parameters is:
- PREV_DEV_LIST- This parameter returns an ordered array for all devices upstream in the AV path.
Non-AV Proxies
Fan Proxy
The Fan Proxy has been enhanced in this release to include a new capability: proxy_fan_speed_connections. This capability is applicable to newer fan drivers to create BUTTON_LINK connections dynamically in association with fan speeds.
Keypad Proxy
The Keypad Proxy has been enhanced in this release to include a new capability: clear_led_current_color_support. Enabling this capability allows the Keypad Proxy to clear a keypad’s button(s) color. Previously, this had to be done at the protocol level. In order to use this capability, two new Keypad Proxy commands have been delivered as well: KEYPAD_BUTTON_COLOR_CLEAR & KEYPAD_ALL_BUTTON_COLOR_CLEAR.
Light V2 Proxy
This Light V2 Proxy has been enhanced in this release with several new capabilities and a modification. These include:
The cold_start capability has been modified in this release to now be a Dynamic Capability. This enhancement has no impact on existing drivers currently using the cold_start capability. Beginning with O.S release 3.4.2, a driver can now dynamically change this capability if needed.
A new capability named disable_flash has been included to indicates whether the driver supports Flash behavior. This capability is useful with regard to Flash functionality being offered in the Advanced Lighting Scenes Composer Pro UI.
A new capability named multi_click has been included to disable multi-click events/actions for a light driver. This is useful when it is desirable to disable the ability to use press, release, single, double or triple click programming in Composer Pro.
Two new capabilities have been included to help support nesting of drivers in Composer Pro’s System Design tree. While this functionality is defined within the Light V2 Proxy, it is applicable to any Proxy and drivers that will benefit from a nested view in Composer Pro’s System Design.
The nesting_driver_is_parent capability indicates whether or not a driver is dependent on other, supporting drivers. These supporting drivers will appear nested under the parent driver. This capability must be used in conjunction with the new variable: VAR_C4_NESTING_PARENTS_CHILD_DEVICES. This variable includes a comma delimited list of ID values for the secondary (child) drivers(s) required by the parent driver. This list represents the drivers that will be nested under the parent driver in Composer Pro.
The nested_driver_is_child capability indicates whether or not this driver is a dependent driver required by primary driver for use. When used correctly, it will setup the dependent driver(s) to be nested under the primary driver in Composer Pro. This capability must be used in conjunction with the new variable: VAR_C4_NESTED_CHILDS_PARENT_DEVICE. This variable includes the ID of primary (parent) driver requiring its use. This is the associated driver with the nesting_driver_is_parent capability set to true.
What’s New in 3.4.1
There were no modifications to the Proxy and Protocol Guide in conjunction with O.S. Release 3.4.1.
What’s New in 3.4.0
Blind Proxy
A new capability has been added to the proxy called always_send_level. If value is true, then the SetTargetLevel commands are always sent regardless of current level values. This is useful if the blind device does not support two-way communication and is controlled outside of the Control4 operating system.
Camera Proxy
Beginning with O.S. 3.4.0, camera drivers have the ability to distribute audio to devices running Navigator. If a camera supports the proper CODEC and the camera microphone has been enabled in the appropriate interface a new audio button will appear at the bottom of the single-camera view. This will allow the user to hear live audio with the live video.
Generic Media Player Proxy
A new capability has been added to the proxy called allow_audio_pathing. This capability is applicable in the scenario where the AV Switch proxy is included as a secondary proxy to the Generic Media Player Proxy. It is useful when modeling streaming media devices that require minidrivers.
Light (v2) Proxy
The following color conversion functions have been modified in 3.4.0. The gamut parameter now receives a new valid string of: "custom”. See the links below for more information.
RGB functions: - ColorRGBtoXY - ColorXYtoRGB
HSV functions: - ColorHSVtoXY - ColorXYtoHSV
What’s New in 3.3.2
Camera Proxy
Support for Dynamic Camera Streams
Camera drivers can now implement a new dynamic streams API to provide a list of streams that the Navigators can pick from.
Light V2 Proxy
Capabilities that have been Added
A new feature has been delivered in O.S. 3.3.2 which allows dealers and customers to specify how a light's brightness behaves when the light is turned on. The functionality includes:
- Preset - Light turns on to a preset level.
- Previous - Light turns on to the previous light level.
- Default On - Provided for backwards compatibility and is the same as setting Preset to On.
Driver developers must opt-in to this new feature and which parts it wants to support via the following new capabilities:
brightness_on_mode_preset has been included to enable the brightness presets for "On Mode" behavior for a light.
brightness_on_mode_previous has been included to enable the Previous On "On Mode" brightness behavior for a light.
A new feature was created to allow dealers and customers to specify how a light's color behaves when a light is turned on. The functionality includes:
- Color Fade - Color behavior such as Dim to Warm
- Preset - Color changes to a preset.
- Previous - Color changes to the previous color value.
- Default On - Provided for backwards compatibility and is the same as setting Preset to On.
Driver developers must opt-in to this new feature and which parts it wants to support via the following new capabilities:
color_on_mode_fade has been included to enable the Fade On "On Mode" behavior, such as Dim to Warm, for a light.
color_on_mode_preset has been included to enable presets for use with "On Mode" behavior for a light.
color_on_mode_previous has been included to enable the Previous On "On Mode" behavior for a light.
Additionally, the following new capabilities have been included in 3.3.2:
A new capability: brightness_rate_max has been included in support of drivers without buttons. This capability allows these driver to no longer need to define click and hold maximum rates.
A new capability: brightness_rate_min has been included in support of drivers without buttons. This capability allows these driver to no longer need to define click and hold minimum rates.
A new capability: supports_brightness_stop has been included if a light brightness transition can be stopped during a ramp.
Capabilities that have been Deprecated
fixed_ramp_rate - Use click_rate_min and click_rate_max instead.
has_fixed_ramp_rate - Use click_rate_min and click_rate_max instead.
num_buttons
ramp_level
min_max
on_off
buttons_are_virtual
Commands that have been Added
Note: Enforcement of valid minimum and maximum values for many Light v2 commands are being enforced in conjunction with 3.3.2.
A new command: ADD_DRIVER_COLOR_PRESET has been included to add a new driver specific color preset.
A new command: DELETE_DRIVER_COLOR_PRESET has been added to remove a driver configured color preset.
A new command: DYNAMIC_OFF has been added to support UIs with an off command to pair with the DYNAMIC_ON command.
A new command: DYNAMIC_ON has been added to allows UI's and programming to "turn on" a light involving both brightness and color in a single command
A new command MODIFY_DRIVER_COLOR_PRESET has been included to change an existing driver color preset.
A new command SET_BRIGHTNESS_STOP has been added to stop a ramp if in progress.
A new command SET_COLOR_STOP has been added to stops a ramp of color if in progress.
A new command SET_BRIGHTNESS_ON_MODE has been added to maintain the On preset value.
A new command SET_BRIGHTNESS_RATE_DEFAULT has been added. This command is used in conjunction with generic On/Off commands to retrieve the UPDATE_BRIGHTNESS_RATE_DEFAULT value.
A new command SET_COLOR_ON_MODE has beed added define color on mode.
A new command SET_COLOR_RATE_DEFAULT has been added. This command is used in conjunction with generic On/Off commands to retrieve the UPDATE_COLOR_RATE_DEFAULT value.
A new command UPDATE_BRIGHTNESS_ON_MODE has been added to obtain how a light should turn on with regards to brightness.
A new command UPDATE_BRIGHTNESS_RATE_DEFAULT has been added to provide a default value when a rate change is not provided.
A new command UPDATE_BRIGHTNESS_PRESET has beeb added to send a command when a press is changed.
A new command UPDATE_COLOR_ON_MODE has been added to obtain how a light should turn on with regards to color.
A new command UPDATE_COLOR_PRESET has been added to manage On and Dim values across various brands and models of lights.
A new command UPDATE_COLOR_RATE_DEFAULT has been added. This command is used in conjunction with generic On/Off commands to update the color rate default value.
Commands that have been Modified
The SET_COLOR_TARGET command has been enhanced with new parameters to support hue, saturation and presets. Additionally, this command previously included a parameter of RATE. This parameter name has changed to LIGHT_COLOR_TARGET_RATE.
Commands that have been Deprecated
GET_LIGHT_LEVEL
GET_CONNECTED_STATE
GET_PROPERTIES
Conditionals that have been Added
Notifications that have been Modified
The LIGHT_BRIGHTNESS_CHANGING notify has been modified to include two new optional parameters: LIGHT_BRIGHTNESS_CURRENT_PRESET_ID and LIGHT_BRIGHTNESS_TARGET_PRESET_ID.
The LIGHT_COLOR_CHANGING notify has been modified to include parameters for Preset IDs. Additionally, this notify previously included a parameter of RATE. This parameter name has changed to LIGHT_COLOR_TARGET_RATE.
The LIGHT_COLOR_CHANGED notify has been modified to include a parameter for a Preset ID.
Variables that have been Added
Brightness Target Ramp Rate in Milliseconds
Brightness Target Rate Remaining in Milliseconds
Variables that have been Deprecated
PRESET_LEVEL has been deprecated as the brightness_on_mode_preset capability contains this value.
Known Issue(s)
Color Lighting Control may not Work on Some Drivers
Currently, there is a known problem with color control not working on drivers that are looking for a RATE parameter in the SET_COLOR_TARGET command. The RATE parameter was not correctly implemented due to the limits of support for color rate ramping in previous versions. We are finalizing the changes to make this fully work in 3.3.2. As a result, the “RATE” parameter name has been changed to “LIGHT_COLOR_TARGET_RATE”.
Button Link Binding for Brightness Stop Functionality not Working
A defect in 3.3.2 prevents keypad buttons bound to the Proxy’s BUTTON_LINK binding for Brightness Stop from working. This will be resolved in 3.3.3.
What’s New in 3.3.1
Light V2 Proxy
The capability: color_trace_tolerance has been modified to accept a Delta value of > .01. When provided, the CIELa*b* tolerance formula is used to determining if a color is the as another color in the system.
The following Conversion Commands have been enhanced to include an optional parameter: gamut. This parameter allows for the specification of a gamut type for use in the conversions.
Camera Proxy
The Camera Proxy documentation has been has enhanced to include new information regarding:
- Camera Streams
- Driver Support for Multiple Streams
- Support for Caching URLS
- Support for The Extras Interface Library
A new command: GET_STREAM_URLS has been added. It is used to obtain URLs for a camera that does not have a constant URL like a Cloud based camera or for cameras that have a wider range of features and configurable options that can produce better customer experiences using various client
A new notification: STREAM_URLS_READY has been added. This notify is used as a follow up to a GET_STREAM_URLS Synchronous call. This Notify will let a UI know that the URL information they requested is ready.
New capabilities added to the Camera proxy include:
Dynamic Presets are now supported within the Camera Proxy. The following preset functionality has been include:
- Save new presets.
- Change preset name.
- Recapture/update existing preset.
- Reorder presets.
- Delete a preset.
Dynamic Presets require the following new Capability:
Dynamic Presets require the following new Notifications:
Dynamic Presets require the following new Commands:
The following existing Camera Proxy capabilities are now Dynamic Capabilities:
What’s New in 3.3.0
Light Proxy Color Enhancements
This release of the 3.3.0 beta Proxy and Protocol Guide has been delivered to support the Light Proxy’s new color management functionality. This includes:
Light V2 Proxy Capabilities
color_correlated_temperature_max
color_correlated_temperature_min
supports_color_correlated_temperature
Light V2 Proxy Commands
Light V2 Proxy Conversion Commands
This section lists the Commands used for converting to/from hue, saturation and lightness (HSV) and red, blue and green (RGB).
Light V2 Proxy Conditionals
Light v2 Protocol Notifications
Light V2 Proxy Events
Light V2 Proxy Extras
New supporting documentation.
Advanced Lighting Scene Agent
New supporting documentation.
Light Driver Development Best Practices
A new section has been added to the Light V2 proxy content including best practice recommendations for light driver developers.
Audio Video Switch Display Adjustable Bindings
O.S. releases 3.3.0 provides the ability to hide AV Switch Bindings that are not being used. This feature has been provided to better manage the UI display within ComposerPro.
What’s New in 3.2.3
Audio Equalization available on Navigators
The Amplifier and AV Switch Proxies have been enhanced to support the ability to display audio EQ functions on devices running Navigator. The enhancement includes a set of new Proxy Commands, Notifications and Capabilities to support this functionality.
Dynamic Transport Controls on Navigators
Audio Video drivers now have the ability to define which transport controls are displayed on Navigators. This includes which buttons appear on the Button Bar as well as the Media Dashboard. This enhancement allows for the appropriate transport controls being displayed for each AV device.
What’s New in 3.2.2
There were no changes to this content for Operating System 3.2.2.
What’s New in 3.2.1
There were no changes to this content for Operating System 3.2.1.
What’s New in 3.2.0
Proxies that were Modified**
Security Proxy The REQUEST_DEFAULT_USER_CODE partition notification was added as a mechanism for the protocol driver to initiate the communication to get that default user code upon driver update.
The following Security Protocol Notifications were deprecated from the SDK: ALARM, ALARM_CLEAR, AWAY, DISARM, HOME, TROUBLE. Please see the Security Panel Notification and Security Partition Notification areas for the latest list of Notifies.
What was New in 3.1.2
Proxies that were Deprecated**
The following Proxies were deprecated from the Proxy and Protocol Guide:
- iPod
- Load Controller
What was New in 3.1.0
Proxies that were Modified**
Light V2 Proxy light sample.c4i - A sample driver has been included to assist with better understanding the basic flow of commands from the Light Proxy as well as receiving protocol notifications. The driver can be found in the Samples directory under the root level of the DriverWorks SDK.zip file
Media Service Proxy Detail Screen Type - Information regarding the implementation of the Detail Type Screen has been added to the documentation.
What was New in O.S.3
Proxies that were Modified**
KeyPad Proxy
New Button Linking functionality has been added to the Proxy. Button Linking supports the ability of a driver interacting with a second driver using Button State and Button LED State.
Light (V2) Proxy LightV2 Proxy has been significantly enhanced in this release. It is recommended that Light Driver writers thoroughly review the Proxy content in this release. The changes included not only impact drivers written against OS 3. Previously delivered Light Proxy elements have been modified or in some cases deprecated.
In OS 3, the proxy has been conceptually split into two components. The first being a Wall Control/Keypad portion and the second is a redesigned Light portion.The Light portion has been developed as a Bulb Library. The ultimate goal of the Bulb Library is to support ,more versatility for drivers to interrogate, group, control and manage individual drivers and bulbs. Bulb color, target level, minimum and maximum levels, cold start timing and other features are implemented in the Bulb Library. Dynamic Capabilities have also been added to the Light Portion. Note that all changes maintain backwards compatibility for driver side interaction. However, Navigators will have functionality deprecated due to performance reasons or improved ways of communicating with the driver.
Media Service Proxy Favoriting: In conjunction with the ability to "Favorite" Navigator UI screens in OS 3, drivers written using the Media Service Proxy can now provide the ability for end users to designate favorite media delivered through an Media Service Proxy driver such as Playlists, Albums, Tracks, Stations, Movies, TV Shows, etc.
DashboardChanged Event: The DashboardChanged event now includes content on the use of custom icons and actions.
Driver Notification Context Example: New code examples on have been added to the Media Service Proxy Driver Notification Prototype section in the Appendix.
Best Practices A new section called Best Practices has been added to the Proxy and Protocol Guide. This section contains information regarding the use cases that fall outside of the typical Proxy/Protocol driver implementation. This release contains Best Practice content on the following:
Using the new Proxy-less command UPDATE PROPERTY. This is a non proxy-specific function that can be called from any device to change a property of any other device.
OS 3 Navigator UI and Volume Control - Managing Volume Commands in conjunction with the use of OS 3's new volume control slider on the Control4 UI.
Amplifier Protocol Notifications
AUDIO_PARAMETER _CHANGED
Audio parameter has changed
Name
AUDIO_PARAMETER_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
BALANCE_LEVEL_CHANGED
Selected balance level has changed.
Name
BALANCE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
BASS_LEVEL_CHANGED
Selected bass level has changed
Name
BASS_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
INPUT_OUTPUT_CHANGED
Selected inputs & outputs have changed.
Name
INPUT_OUTPUT_CHANGED ()
Parameter | Type | Description |
---|---|---|
INPUT | INT | Input Binding ID |
OUTPUT | INT | Output Binding ID |
Returns
None
LOUDNESS_CHANGED
Loudness state (On/Off) has changed.
Name
LOUDNESS_CHANGED ()
Parameter | Type | Description |
---|---|---|
BOOL | True/False | |
Output | INT | Indicates a change in loudness for the specified output binding ID. |
Returns
None
MUTE_CHANGED
MUTE state (On/Off) has changed.
Name
MUTE_CHANGED ()
Parameter | Type | Description |
---|---|---|
BOOL | True/False | |
Output | INT | Indicates a change in mute state for the specified output binding ID. |
Returns
None
OFF
Device has turned off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned on.
Name
ON ()
Parameter
None
Returns
None
TREBLE_LEVEL_CHANGED
Selected treble level has changed.
Name
TREBLE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
VOLUME_LEVEL_CHANGED
Selected volume level has changed.
Name
VOLUME_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
Amplifier Proxy Capabilities
audio_consumer_count
Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_consumer_count></audio_consumer_count>
Parameter | Description |
---|---|
int | Number of audio consumers. |
Example
<capabilities>
<audio_consumer_count>8</audio_consumer_count>
</capabilities>
audio_provider_count
Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_provider_count></audio_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<audio_provider_count>8</audio_provider_count>
</capabilities>
can_downclass
Specifies if the device switch can down convert. For example: S-Video -> Composite
Signature
<can_downclass></can_downclass>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_downclass>true</can_downclass>
</capabilities>
can_switch_separately
Device specific capability that must be set to True to in order for a device’s Composer Pro interface reflecting independent audio and video signal switching.
Signature
<can_switch_separately></can_switch_separately>
Parameter | Description |
---|---|
bool | True/False |
Usage Note
This capability is not related with the requires separate switching capability. A setting of True or False will have no impact on requires separate switching.
Example
<capabilities>
<can_switch_separately>true</can_switch_separately>
</capabilities>
can_upclass
Specifies if the device switch can up convert. For example: Composite -> S-Video
Signature
<can_upclass></can_upclass>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_upclass>true</can_upclass>
</capabilities>
has_audio_signal_sense
Specifies device switching is capable of sensing audio on an input. This is useful in triggering programming in ComposerPro based on the this setting.
Signature
<has_audio_signal_sense></has_audio_signal_sense>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_audio_signal_sense>true</has_audio_signal_sense>
</capabilities>
has_discrete_balance_control
Capable of directly specifying a balance setting.
Signature
<has_discrete_balance_control></has_discrete_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>
has_discrete_bass_control
Capable of directly specifying a bass setting.
Signature
<has_discrete_bass_control></has_discrete_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>
has_discrete_loudness_control
Capable of directly specifying a loudness setting.
Signature
<has_discrete_loudness_control></has_discrete_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>
has_discrete_mute_control
Capable of directly specifying mute ON or OFF setting.
Signature
<has_discrete_ mute_control></has_discrete_ mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>
has_discrete_treble_control
Capable of directly specifying a treble setting.
Signature
<has_discrete_treble_control></has_discrete_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>
has_discrete_volume_control
Capable of directly specifying a volume setting.
Signature
<has_discrete_volume_control></has_discrete_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>
has_discrete_loudness_control
Capable of handling ON/OFF loudness control.
Signature
<has_discrete_loudness_control></has_discrete_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>
has_toggle_mute_control
Capable of handling ON/OFF mute control.
Signature
<has_toggle_mute_control></has_toggle_mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_toggle_mute_control>true</has_toggle_mute_control>
</capabilities>
has_up_down_balance_control
Capable of directly specifying a balance setting.
Signature
<has_up_down_balance_control></has_up_down_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_balance_control>true</has_up_down_balance_control>
</capabilities>
has_up_down_bass_control
Capable of directly specifying a bass setting.
Signature
<has_up_down_bass_control></has_up_down_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_bass_control>true</has_up_down_bass_control>
</capabilities>
has_up_down_treble_control
Capable of directly specifying a treble setting.
Signature
<has_up_down_treble_control></has_up_down_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_treble_control>true</has_up_down_treble_control>
</capabilities>
has_up_down_volume_control
Has capability of handling volume UP and DOWN adjustments.
Signature
<has_up_down_volume_control></has_up_down_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_volume_control>true</has_up_down_volume_control>
</capabilities>
has_video_signal_sense
Specifies if the device switching is capable of sensing video on an input. This is useful in triggering programming in ComposerPro based on the this setting.
Signature
<has_video_signal_sense></has_video_signal_sense>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_video_signal_sense>true</has_video_signal_sense>
</capabilities>
requires_separate_switching
Device specific capability that when set to True notifies Director of the existence of individual audio and video paths. This capability has no impact on Composer Pro user interface. For that reason, when set to True it is recommended that the capability can switch separately be set to True as well.
Signature
<requires_separate_switching></requires_separate_switching>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<requires_separate_switching>true</requires_separate_switching>
</capabilities>
video_consumer_count
Count of number of video consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<video_consumer_count></video_consumer_count>
Parameter | Description |
---|---|
int | Number of video consumers. |
Example
<capabilities>
<video_consumer_count>8</video_consumer_count>
</capabilities>
video_provider_count
Count of number of video providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<video_provider_count></video_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<video_provider_count>8</video_provider_count>
</capabilities>
Amplifier Navigator EQ
Introduction
The ability to display audio equalization controls on devices running Navigator was added in conjunction with Operating System 3.2.3. Currently, the only Proxies that support Navigator EQ controls are the Amplifier and AV Switch Proxies.
The majority of the of the commands, notifications and capabilities defined here must be implemented in your driver to display EQ controls. Several commands are optional including SET_AUDIOMODE_BYPASS, SET_AUDIOMODE_EQ and SET_AUDIOMODE_TONECONTROL as these have been included to suspect legacy Audio Matrix Switches.
Note that this functionality is disabled by default. The HIDE EQ FROM NAVS CHANGED notification must be sent with a value of False to enable the EQ functionality in Navigator.
Navigator EQ Proxy Commands
LOUDNESS_OFF
Navigator EQ command called to set the loudness off for indicated output. The driver should notify proxy with the LOUDNESS_CHANGED notification of the new value.
Signature
LOUDNESS_OFF
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Output Binding ID |
Returns
None
LOUDNESS_ON
Navigator EQ command called to set the loudness on for indicated output. The driver should notify proxy with the LOUDNESS_CHANGED notification of the new value.
Signature
LOUDNESS_ON
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Output Binding ID |
Returns
None
SET_AUDIOMODE_BYPASS
Navigator EQ command called to change the output's mode to BYPASS. This is an optional command and should be used only if your device needs to switch modes.
Signature
SET_AUDIOMODE_BYPASS
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Output Binding ID |
Returns
None
SET_AUDIOMODE_EQ
Navigator EQ command called to change the output's mode to EQUALIZER. This is an optional command and should be used only if your device needs to switch modes.
Signature
SET_AUDIOMODE_EQ
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Output Binding ID |
Returns
None
SET_AUDIOMODE_TONECONTROL
Navigator EQ command called to change the output's mode to TONE_CONTROL. This is an optional command and should be used only if your device needs to switch modes.
Signature
SET_AUDIOMODE_TONECONTROL
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Output Binding ID |
Returns
None
SAVE_EQ_TO_CUSTOM_PRESET
Navigator EQ command called to save the current EQ values to a custom preset with a name. The driver should notify proxy with the EQ_NAMES_CHANGED notification with the updated name.
Signature
SAVE_EQ_TO_CUSTOM_PRESET
Parameter | Description | Description |
---|---|---|
OUTPUT | int | Output Binding ID |
INDEX | int | Zero based custom preset index value used to save the custom preset. The index range is from 0 to the number of custom presets defined in the <eq_preset_nav_count> capability, minus one due to the range being zero-based. |
NAME | str | Name for the new custom index. Base64 encoded. |
Returns
None
SET_BASS_LEVEL
Navigator EQ command called to set the bass level for tone control. The driver should notify proxy with the BASS_LEVEL_CHANGED notification of the new value.
Signature
SET_BASS_LEVEL
Parameter | Type | Description |
---|---|---|
Output | INT | Output Binding ID |
LEVEL | INT | Bass Level |
Returns
None
SET_EQPRESET
Navigator EQ command called to change the selected preset for an output.
Signature
SET_EQPRESET
Parameter | Type | Description |
---|---|---|
INDEX | int | Index for the selected preset. |
OUTPUT | int | Output Binding ID |
Returns
None
SET_EQ_GAIN_VALUES
Navigator EQ command called to set the current equalizer’s gain values.
Signature
SET_EQ_GAIN_VALUES
Parameter | Type | Description |
---|---|---|
VALUES | str | Comma delimited string of updated numeric gain values, one value per band. |
Returns
None
SET_TREBLE_LEVEL
Navigator EQ command called to set the treble level for tone control. The driver should notify the proxy with TREBLE_LEVEL_CHANGED notification of the new value.
Signature
SET_TREBLE_LEVEL
Parameter | Description | |
---|---|---|
OUTPUT | Output Binding ID | Output Binding ID |
LEVEL | Treble level | Range is -12 to 12. |
Returns
None
Navigator EQ Protocol Notifications
AUDIOMODE_CHANGED
Navigator EQ notification that the output's audio mode has changed to either Tone Control or Equalizer for the output. This is an optional notification and should be used only if your device has audio modes.
Signature
AUDIOMODE_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | int | OutputBindingID |
AUDIOMODE | int | 1 = TONE\_CONTROL: This is sent sent when a Tone Control value is changed. 2 = EQUALIZER: This is sent when a EQ value is changed such as Treble or Bass. |
Returns
None
BALANCE_LEVEL_CHANGED
Navigator EQ notification that the balance has changed.
Signature
BALANCE_LEVEL_CHANGED
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
Example
-- Notify Balance level is set to 'Full Left' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 0 }, "NOTIFY")
-- Notify Balance level is set to 'Center' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 50 }, "NOTIFY")
-- Notify Balance level is set to 'Full Right' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 100 }, "NOTIFY")
BASS_LEVEL_CHANGED
Navigator EQ notification that the bass has changed.
Signature
BASS_LEVEL_CHANGED
Parameter | Type | Description |
---|---|---|
LEVEL | int | Level |
OUTPUT | int | Output Binding ID |
Returns
None
Example
-- Notify Bass Level is at -6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BASS_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = -6 }, "NOTIFY")
-- Notify Bass Level is at +6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BASS_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 6 }, "NOTIFY")
EQ_DISPLAY_ORDER_CHANGED
Navigator EQ notification of the order that the names from EQ_NAMES_CHANGED should be presented to the user.
Signature
EQ_DISPLAY_ORDER_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | int | Output Binding ID |
table | int | Table of indexes that represents display order of the names. Note that any programming for selecting a preset will be INDEX based, not name based. Hence the names can be changed but the programming will be tied to the index at time of creation. |
Returns
None
Example
C4:SendToProxy(5001, "EQ_DISPLAY_ORDER_CHANGED", { [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, OUTPUT = "4002" }, "NOTIFY")
C4:SendToProxy(5001, "EQ_DISPLAY_ORDER_CHANGED", { 1, 2, 3, 4, 5, OUTPUT = "4002" }, "NOTIFY")
EQ_NAMES_CHANGED
Navigator EQ notification of the current names for the equalizer presets.
Signature
EQ_NAMES_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | int | Output Binding ID |
TABLE | Ttble | Table of names. |
Returns
None
Example
C4:SendToProxy(5001, "EQ_NAMES_CHANGED", { [1] = "FLAT", [2] = "CLASSICAL", [3] = "JAZZ", [4] = "POP", [5] = "ROCK", OUTPUT = "4002" }, "NOTIFY")
C4:SendToProxy(5001, "EQ_NAMES_CHANGED", {"FLAT", "CLASSICAL", "JAZZ", "POP", "ROCK", OUTPUT = 4002}, "NOTIFY")
EQ_FREQS_CHANGED
Navigator EQ notification that the frequencies of a equalizer have been modified.
Signature
EQFREQS_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | int | Output Binding ID |
VALUES | num | Comma delimited list of current equalizer frequencies. |
Returns
None
Example
-- Notify Gains and Frequencies for EQ Bands for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQGAINS_CHANGED", { OUTPUT = "4002", VALUES = "7.5,3.8,5.4,4.59,7.8,7.4" }, "NOTIFY")_
C4:SendToProxy(5001, "EQFREQS_CHANGED", { OUTPUT = "4002", VALUES = "33,125,750,3000,8000,16000" }, "NOTIFY")
EQ_GAINS_CHANGED
Navigator EQ notification that the gains of an equalizer have been modified.
Signature
EQGAINS_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | int | Output Binding ID |
VALUES | num | Comma delimited list of current equalizer frequencies. |
Returns
None
Example
-- Notify Gains and Frequencies for EQ Bands for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQGAINS_CHANGED", { OUTPUT = "4002", VALUES = "7.5,3.8,5.4,4.59,7.8,7.4" }, "NOTIFY")_
C4:SendToProxy(5001, "EQFREQS_CHANGED", { OUTPUT = "4002", VALUES = "33,125,750,3000,8000,16000" }, "NOTIFY")
EQ_PRESET_CHANGED
Navigator EQ notification used when a different preset is selected for an output. Should be called after SET_EQPRESET is sent or if the preset is changed from a different event.
Signature
EQPRESET_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | int | Output Binding ID |
EQPRESET | int | Newly selected equalizer index. Range is 0 to maximum number defined in the <eq_preset_nav_count> capability. |
Returns
None
Example
-- Notify change of current EQ Preset for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQPRESET_CHANGED", { OUTPUT = "4002", EQPRESET = 2 }, "NOTIFY")
HIDE_EQ_FROM_NAVS _CHANGED
Navigator EQ notification that the equalizer should be shown or hidden from Navigator. This must be sent with a value of False to enable the EQ functionality in Navigator.
Signature
HIDEEQFROMNAVS_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT: | int | Output Binding ID |
ENABLED | bool | True to hide this output from Navigators. False to allow output eq controls to be shown. Default is True. |
Returns
None
Example
-- Notify Hide (or show) Navigator EQ for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "HIDEEQFROMNAVS_CHANGED", { OUTPUT = "4002", ENABLED = false }, "NOTIFY")
LOUDNESS_CHANGED
Navigator EQ notification that the loudness has changed.
Signature
LOUDNESS_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | int | Output Binding ID |
LOUDNESS | bool | Enabled True for loudness on, False for loudness off. |
Returns
None
TREBLE_LEVEL_CHANGED
Navigator EQ notification that the treble level has changed.
Signature
TREBLE_LEVEL_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | int | Output Binding ID |
LEVEL | int | New treble level. Range is -12 to 12. |
Returns
None
Example
-- Notify Treble Level is at -6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "TREBLE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = -6 }, "NOTIFY")
-- Notify Treble Level is at +6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "TREBLE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 6 }, "NOTIFY")
Navigator EQ Capabilities
<has_eq_preset_control></has_eq_preset_control>: Boolean capability where True indicates this device supports the navigator equalizer interface and should allow navigators to interact with equalizers.
<eq_preset_nav_count></eq_preset_nav_count>: Capability that requires a count (integer) of the number of presets to be presented to the Navigators.
<eq_band_nav_count></<eq_band_nav_count>: Capability that requires a count (integer) of the number of adjustable bands for equalizer control.
<use_tone_max_value></use_tone_max_value>: Capability that requires the max value (integer) for tone controls.
<use_tone_min_value></use_tone_min_value>: Capability that requires the minimum value (integer) for tone controls.
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.
Amplifier Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
BINDING_CHANGE_ACTION
Command sent when a bound binding changes. Performs any actions needed to the protocol.
Name
BINDING_CHANGE_ACTION ()
Parameter | Type | Description |
---|---|---|
BINDING ID | STR | BindingID of the changed binding. |
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DISCONNECT_ OUTPUT
Disconnect (turn off) selected output on device
Name
DISCONNECT_OUTPUT ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
EMIT_CODE
Emit IR/Serial code. This is used by the AVGen IR/Serial Proxy.
Name
EMIT_CODE ()
Parameter | Type | Description |
---|---|---|
ID | INT | ID Of IR Code |
Returns
None
EMIT_MACRO
Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)
Name
EMIT_MACRO ()
Parameter | Type | Description |
---|---|---|
ID | STR | Macro Code Name |
Returns
None
GET_AUDIO_INPUTS
Command sent to the protocol during the proxy initialization. Returns available audio inputs from the protocol device.
Name
GET_AUDIO_INPUTS ()
Parameters
None
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LOUDNESS_OFF
Turn loudness off.
Name
LOUDNESS_OFF ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
LOUDNESS_ON
Turn loudness on.
Name
LOUDNESS_ON ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
LOUDNESS_TOGGLE
Toggle loudness on/off.
Name
LOUDNESS_TOGGLE ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
MUTE_OFF
Turning muting off.
Name
MUTE_OFF ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
MUTE_ON
Turn muting on.
Name
MUTE_ON ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
MUTE_TOGGLE
Toggle muting on/off.
Name
MUTE_TOGGLE ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
POUND
Pulse ‘#’ button
Name
POUND ()
Parameters
None
Returns
None
PULSE_BALANCE_DOWN
Pulse balance down (Left)
Name
PULSE_BALNCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
PULSE_BALANCE_UP
Pulse balance up (Right)
Name
PULSE_BALNCE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
PULSE_BASS_DOWN
Pulse bass down (Left)
Name
PULSE_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
PULSE_BASS_UP
Pulse bass up (Right)
Name
PULSE_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
PULSE_INPUT
Toggle (cycle through) input selection on device.
Name
PULSE_INPUT
Parameters
None
Returns
None
PULSE_SUR_UP
Toggle (cycle through) surround mode presets on device.
Name
PULSE_SUR_UP
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
PULSE_VOL_DOWN
Pulse volume level down.
Name
PULSE_VOL_DOWN
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
PULSE_VOL_ UP
Pulse volume level up.
Name
PULSE_VOL_UP
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
PULSE_TREBLE_ DOWN
Pulse treble down.
Name
PULSE_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
PULSE_TREBLE_UP
Pulse treble up.
Name
PULSE_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
RECALL
Pulse Recall button
Name
RECALL ()
Parameters
None
Returns
None
STAR
Pulse *
button
Name
STAR ()
Parameters
None
Returns
None
START_BALANCE_DOWN
Start ramping balance down (left).
Name
START_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_BASS_DOWN
Start ramping bass down.
Name
START_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_BASS_UP
Start ramping bass up.
Name
START_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_TREBLE_DOWN
Start ramping treble down.
Name
START_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_TREBLE_UP
Start ramping treble up.
Name
START_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_VOL_DOWN
Start ramping volume down.
Name
START_VOL_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_VOL_UP
Start ramping volume up.
Name
START_VOL_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
SET_ALL_EQ_SETTINGS
Set balance to a specified position.
Name
SET_ALL_EQ_SETTINGS ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_BALANCE
Set balance to a specified position.
Name
SET_BALANCE ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_BALANCE_UP
Set balance to a specified position.
Name
SET_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_BASS_LEVEL
Set bass to a specified level.
Name
SET_BASS_LEVEL
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
SET_DIGI_OFF
Used with the v.3 amp to turn digital inputs off.
Name
SET_DIGI_OFF ()
Parameters
None
Returns
None
SET_DIGI_ON
Used with the v.3 amp to turn digital inputs on.
Name
SET_DIGI_ON ()
Parameters
None
Returns
None
SET_INPUT
Specify input selection of device.
Name
SET_INPUT ()
Parameter | Type | Description |
---|---|---|
Input Binding ID | int | Binding ID in the BindingID range below. |
PATH DEV LIST | str | Value of the devices directly upstream in the AV path. |
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
Returns
None
Usage Note
- Control Bindings = 1 -> 999
- Video Inputs = 1000 -> 1099
- Video Outputs = 2000 -> 2999
- Audio Inputs = 3000 -> 3099
- Audio Outputs = 4000 -> 4999
- Proxy Bindings = 5000 -> 5999
- Network Bindings = 6000 -> 6999
- Room Bindings = 7000 -> 7999
- Power Manager = 8000 -> 8999
SET_LOUDNESS
Turn loudness on.
Name
SET_LOUDNESS ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_MAX_VOLUME
Set maximum allowable volume level
Name
SET_MAX_VOLUME ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_OUTPUT_INPUT
Specify input and output selection of device.
Name
SET_OUTPUT_INPUT ()
Parameter | Type | Description |
---|---|---|
INPUT | INT | Input Binding ID |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_SURROUND_MODE
Select specified surround mode preset on device.
Name
SET_SURROUND_MODE ()
Parameter | Type | Description |
---|---|---|
SURROUND\_MODE | INT | Surround Mode Value |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_TREBLE_LEVEL
Set treble to a specified level.
Name
SET_TREBLE_LEVEL ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_ UP_DOWN_SWAP
Swap page UP/DOWN buttons (used by AVGen)
Name
SET_UP_DOWN_SWAP ()
Parameter | Type | Description |
---|---|---|
SWAPFLAG | BOOL | Swap page UP/DOWN buttons (used by AVGen). TRUE to enable swap, FALSE to disable. |
Returns
None
STOP_VOL_DOWN
Stop ramping volume down.
Name
SET_VOL_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
SET_VOLUME_LEVEL
Set volume to a specified level.
Name
SET_VOLUME_LEVEL ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_BALANCE_DOWN
Start ramping balance.
Name
STOP_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass
Name
STOP_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass down.
Name
STOP_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_BASS_UP
Stop ramping bass up
Name
STOP_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_TREBLE_DOWN
Stop ramping the treble down
Name
STOP_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_TREBLE_UP
Stop ramping the treble up.
Name
STOP_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_VOL_DOWN
Stop ramping the volume down.
Name
STOP_VOL_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_VOL_UP
Stop ramping the volume up.
Name
STOP_VOL_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
Audio Switch Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DISCONNECT_OUTPUT
Disconnect (turn off) selected output on device
Name
DISCONNECT_OUTPUT ()
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
PATH DEV LIST | str | Value of the devices directly upstream in the AV path. |
Returns
None
SET_LOUDNESS
Turn loudness on.
Name
SET_LOUDNESS ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
Audio Video Switch Capabilities
audio_consumer_count
Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_consumer_count></audio_consumer_count>
Parameter | Description |
---|---|
int | Number of audio consumers. |
Example
<capabilities>
<audio_consumer_count>8</audio_consumer_count>
</capabilities>
audio_provider_count
Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_provider_count></audio_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<audio_provider_count>8</audio_provider_count>
</capabilities>
can_ downclass
Specifies if the A/V switch can down convert. For example: S-Video -> Composite
Signature
<can_downclass></can_downclass>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_downclass>true</can_downclass>
</capabilities>
can_switch_separately
Device specific capability that must be set to True to in order for an AV Switch’s Composer Pro interface reflecting independent audio and video signal switching.
Signature
<can_switch_separately></can_switch_separately>
Parameter | Description |
---|---|
bool | True/False |
Usage Note
This capability is not related with the requires separate switching capability. A setting of True or False will have no impact on requires separate switching.
Example
<capabilities>
<can_switch_separately>true</can_switch_separately>
</capabilities>
can_upclass
Specifies if the A/V switch can up convert. For example: Composite -> S-Video
Signature
<can_upclass></can_upclass>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_upclass>true</can_upclass>
</capabilities>
has_audio_signal_sense
Specifies AV switching is capable of sensing audio on an input. This is useful in triggering programming in ComposerPro based on the this setting.
Signature
<has_audio_signal_sense></has_audio_signal_sense>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_audio_signal_sense>true</has_audio_signal_sense>
</capabilities>
has_ discrete_balance_control
Capable of directly specifying a balance setting.
Signature
<has_discrete_balance_control></has_discrete_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>
has_discrete_bass_control
Capable of directly specifying a bass setting.
Signature
<has_discrete_bass_control></has_discrete_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>
has_discrete_loudness_control
Capable of directly specifying a loudness setting.
Signature
<has_discrete_loudness_control></has_discrete_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>
has_discrete_mute_control
Capable of directly specifying mute ON or OFF setting.
Signature
<has_discrete_ mute_control></has_discrete_ mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>
has_discrete_treble_control
Capable of directly specifying a treble setting.
Signature
<has_discrete_treble_control></has_discrete_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>
has_discrete_volume_control
Capable of directly specifying a volume setting.
Signature
<has_discrete_volume_control></has_discrete_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>
has_discrete_loudness_control
Capable of handling ON/OFF loudness control.
Signature
<has_discrete_loudness_control></has_discrete_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>
has_toggle_mute_control
Capable of handling ON/OFF mute control.
Signature
<has_toggle_mute_control></has_toggle_mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_toggle_mute_control>true</has_toggle_mute_control>
</capabilities>
has_up_down_balance_control
Capable of directly specifying a balance setting.
Signature
<has_up_down_balance_control></has_up_down_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_balance_control>true</has_up_down_balance_control>
</capabilities>
has_up_down_bass_control
Capable of directly specifying a bass setting.
Signature
<has_up_down_bass_control></has_up_down_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_bass_control>true</has_up_down_bass_control>
</capabilities>
has_up_down_treble_control
Capable of directly specifying a treble setting.
Signature
<has_up_down_treble_control></has_up_down_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_treble_control>true</has_up_down_treble_control>
</capabilities>
has_up_down_volume_control
Has capability of handling volume UP and DOWN adjustments.
Signature
<has_up_down_volume_control></has_up_down_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_volume_control>true</has_up_down_volume_control>
</capabilities>
has_video_signal_sense
Specifies AV switching is capable of sensing video on an input. This is useful in triggering programming in ComposerPro based on the this setting.
Signature
<has_video_signal_sense></has_video_signal_sense>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_video_signal_sense>true</has_video_signal_sense>
</capabilities>
requires_ separate_switching
Device specific capability that when set to True notifies Director of the existence of individual audio and video paths. This capability has no impact on Composer Pro user interface. For that reason, when set to True it is recommended that the capability can switch separately be set to True as well.
Signature
<requires_separate_switching></requires_separate_switching>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<requires_separate_switching>true</requires_separate_switching>
</capabilities>
video_consumer_count
Count of number of video consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<video_consumer_count></video_consumer_count>
Parameter | Description |
---|---|
int | Number of video consumers. |
Example
<capabilities>
<video_consumer_count>8</video_consumer_count>
</capabilities>
video_provider_count
Count of number of video providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<video_provider_count></video_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<video_provider_count>8</video_provider_count>
</capabilities>
Audio Video Switch Protocol Notifications
AUDIO_PARAMETER_CHANGED
Audio parameter has changed
Name
AUDIO_PARAMETER_CHANGED ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
BALANCE_LEVEL_CHANGED
Selected balance level has changed.
Name
BALANCE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
BASS_LEVEL_CHANGED
Selected bass level has changed
Name
BASS_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
INPUT_OUTPUT_CHANGED
Selected inputs & outputs have changed.
Name
INPUT_OUTPUT_CHANGED ()
Parameter | Type | Description |
---|---|---|
INPUT | INT | Input Binding ID |
OUTPUT | INT | Output Binding ID |
Returns
None
LOUDNESS_CHANGED
Loudness state (On/Off) has changed.
Name
LOUDNESS_CHANGED ()
Parameter | Type | Description |
---|---|---|
LOUDNESS | BOOL | True/False |
OUTPUT | INT | Indicates a change in loudness for the specified output binding ID. |
Returns
None
MUTE_CHANGED
MUTE state (On/Off) has changed.
Name
MUTE_CHANGED ()
Parameter | Type | Description |
---|---|---|
MUTE | BOOL | True/False |
OUTPUT | INT | Indicates a change in mute state for the specified output binding ID. |
Returns
None
OFF
Device has turned off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned on.
Name
ON ()
Parameter
None
Returns
None
TREBLE_LEVEL_CHANGED
Selected treble level has changed.
Name
TREBLE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
VOLUME_LEVEL_CHANGED
Selected volume level has changed.
Name
VOLUME_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
Audio Video Switch Navigator EQ
Introduction
The ability to display audio equalization controls on devices running Navigator was added in conjunction with Operating System 3.2.3. Currently, the only Proxies that support Navigator EQ controls are the Amplifier and AV Switch Proxies.
The majority of the of the commands, notifications and capabilities defined here must be implemented in your driver to display EQ controls. Several commands are optional including SET_AUDIOMODE_BYPASS, SET_AUDIOMODE_EQ and SET_AUDIOMODE_TONECONTROL as these have been included to suspect legacy Audio Matrix Switches.
Note that this functionality is disabled by default. The HIDE EQ FROM NAVS CHANGED notification must be sent with a value of False to enable the EQ functionality in Navigator.
Navigator EQ Proxy Commands
LOUDNESS_OFF
Navigator EQ command called to set the loudness off for indicated output. The driver should notify proxy with the LOUDNESS_CHANGED notification of the new value.
Name
LOUDNESS_OFF
Parameter | Description | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_ON
Navigator EQ command called to set the loudness on for indicated output. The driver should notify proxy with the LOUDNESS_CHANGED notification of the new value.
Name
LOUDNESS_ON
Parameter | Description | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_AUDIOMODE_BYPASS
Navigator EQ command called to change the output's mode to BYPASS. This is an optional command and should be used only if your device needs to switch modes.
Name
SET_AUDIOMODE_BYPASS
Parameter | Description |
---|---|
int | OUTPUT: OutputBindingID |
Returns
None
SET_AUDIOMODE_EQ
Navigator EQ command called to change the output's mode to EQUALIZER. This is an optional command and should be used only if your device needs to switch modes.
Name
SET_AUDIOMODE_EQ
Parameter | Description |
---|---|
int | OUTPUT: OutputBindingID |
Returns
None
SET_AUDIOMODE_TONECONTROL
Navigator EQ command called to change the output's mode to TONE_CONTROL. This is an optional command and should be used only if your device needs to switch modes.
Name
SET_AUDIOMODE_TONECONTROL
Parameter | Description |
---|---|
int | OUTPUT: OutputBindingID |
Returns
None
SAVE_EQ_TO_CUSTOM_PRESET
Navigator EQ command called to save the current EQ values to a custom preset with a name. The driver should notify proxy with the EQ_NAMES_CHANGED notification with the updated name.
Name
SAVE_EQ_TO_CUSTOM_PRESET
Parameter | Type | Description |
---|---|---|
INDEX | INT | Zero based custom preset index value used to save the custom preset. The index range is from 0 to the number of custom presets defined in the <eq_preset_nav_count> capability, minus one due to the range being zero-based. |
NAME | STR | Name for the new custom index. Base64 encoded. |
OutputBindingID | INT | OutputBindingID |
Returns
None
SET_BASS_LEVEL
Navigator EQ command called to set the bass level for tone control. The driver should notify proxy with the BASS_LEVEL_CHANGED notification of the new value.
Name
SET_BASS_LEVEL
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Level | INT | LEVEL: Bass level. range is -12 to 12 |
Returns
None
SET_EQPRESET
Navigator EQ command called to change the selected preset for an output.
Name
SET_EQPRESET
Parameter | Description | Description |
---|---|---|
INDEX | INT | Index for the selected preset. |
Output Binding ID | INT | Output Binding ID |
Returns
None
SET_EQ_GAIN_VALUES
Navigator EQ command called to set the current equalizer’s gain values.
Name
SET_EQ_GAIN_VALUES
Parameter | Type | Description |
---|---|---|
VALUES | STR | Comma delimited string of updated numeric gain values, one value per band. |
Returns
None
SET_TREBLE_LEVEL
Navigator EQ command called to set the treble level for tone control. The driver should notify the proxy with TREBLE_LEVEL_CHANGED notification of the new value.
Name
SET_TREBLE_LEVEL
Parameter | Description |
---|---|
int | OUTPUT: OutputBindingID |
int | LEVEL: Treble level. Range is -12 to 12. |
Returns
None
Navigator EQ Protocol Notifications
AUDIOMODE_CHANGED
Navigator EQ notification that the output's audio mode has changed to either Tone Control or Equalizer for the output. This is an optional notification and should be used only if your device has audio modes.
Name
AUDIOMODE_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
AUDIOMODE | INT | 1 = TONE\_CONTROL: This is sent when a Tone Control value is changed. 2 = EQUALIZER: This is sent when a EQ value is changed such as Treble or Bass. |
Returns
None
BALANCE_LEVEL_CHANGED
Navigator EQ notification that the balance has changed.
Name
BALANCE_LEVEL_CHANGED
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Level | INT | Range is 0 to 100 |
Returns
None
Example
-- Notify Balance level is set to 'Full Left' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 0 }, "NOTIFY")
-- Notify Balance level is set to 'Center' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 50 }, "NOTIFY")
-- Notify Balance level is set to 'Full Right' for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BALANCE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 100 }, "NOTIFY")
BASS_LEVEL_CHANGED
Navigator EQ notification that the bass has changed.
Name
BASS_LEVEL_CHANGED
Parameter | Description |
---|---|
int | OUTPUT: OutputBindingID |
int | LEVEL: New bass level. Range is -12 to 12. |
Returns
None
Example
-- Notify Bass Level is at -6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BASS_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = -6 }, "NOTIFY")
-- Notify Bass Level is at +6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "BASS_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 6 }, "NOTIFY")
EQ_DISPLAY_ORDER_CHANGED
Navigator EQ notification of the order that the names from EQ_NAMES_CHANGED should be presented to the user.
Name
EQ_DISPLAY_ORDER_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | OutputBindingID |
INDEX | Table of indexes | Table of indexes that represents display order of the names. Note that any programming for selecting a preset will be INDEX based, not name based. Hence the names can be changed but the programming will be tied to the index at time of creation. |
Returns
None
Example
C4:SendToProxy(5001, "EQ_DISPLAY_ORDER_CHANGED", { [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, OUTPUT = "4002" }, "NOTIFY")
C4:SendToProxy(5001, "EQ_DISPLAY_ORDER_CHANGED", { 1, 2, 3, 4, 5, OUTPUT = "4002" }, "NOTIFY")
EQ_NAMES_CHANGED
Navigator EQ notification of the current names for the equalizer presets.
Name
EQ_NAMES_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | OutputBindingID |
INDEX | Table of names | Table of names |
Returns
None
Example
C4:SendToProxy(5001, "EQ_NAMES_CHANGED", { [1] = "FLAT", [2] = "CLASSICAL", [3] = "JAZZ", [4] = "POP", [5] = "ROCK", OUTPUT = "4002" }, "NOTIFY")
C4:SendToProxy(5001, "EQ_NAMES_CHANGED", {"FLAT", "CLASSICAL", "JAZZ", "POP", "ROCK", OUTPUT = 4002}, "NOTIFY")
EQ_FREQS_CHANGED
Navigator EQ notification that the frequencies of a equalizer have been modified.
Name
EQFREQS_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | OutputBindingID |
VALUES | INT | Table of comma delimited frequencies. |
Returns
None
Example
-- Notify Gains and Frequencies for EQ Bands for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQGAINS_CHANGED", { OUTPUT = "4002", VALUES = "7.5,3.8,5.4,4.59,7.8,7.4" }, "NOTIFY")_
C4:SendToProxy(5001, "EQFREQS_CHANGED", { OUTPUT = "4002", VALUES = "33,125,750,3000,8000,16000" }, "NOTIFY")
EQ_GAINS_CHANGED
Navigator EQ notification that the gains of an equalizer have been modified.
Name
EQGAINS_CHANGED
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID. Notifies that the EQ band gain values have been updated for the specified output. |
VALUES | STR | VALUES: Comma delimited list of current equalizer values. |
Returns
None
Example
-- Notify Gains and Frequencies for EQ Bands for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQGAINS_CHANGED", { OUTPUT = "4002", VALUES = "7.5,3.8,5.4,4.59,7.8,7.4" }, "NOTIFY")_
C4:SendToProxy(5001, "EQFREQS_CHANGED", { OUTPUT = "4002", VALUES = "33,125,750,3000,8000,16000" }, "NOTIFY")
EQ_PRESET_CHANGED
Navigator EQ notification used when a different preset is selected for an output. Should be called after SET_EQPRESET is sent or if the preset is changed from a different event.
Name
EQPRESET_CHANGED
Parameter | Type | Description |
---|---|---|
Output | INT | Output Binding ID. Selects a specific EQ preset for the associated output. |
EQPRESET | INT | QPRESET: Newly selected equalizer index. Range is 0 to maximum number defined in the <eq_preset_nav_count> capability. |
Returns
None
Example
-- Notify change of current EQ Preset for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "EQPRESET_CHANGED", { OUTPUT = "4002", EQPRESET = 2 }, "NOTIFY")
HIDE_EQ_FROM _NAVS_CHANGED
Navigator EQ notification that the equalizer should be shown or hidden from Navigator. This must be sent with a value of False to enable the EQ functionality in Navigator.
Name
HIDEEQFROMNAVS_CHANGED
Parameter | Type | Description |
---|---|---|
Output | INT | OutputBinding ID |
ENABLED | BOOL | ENABLED: True to hide this output from Navigators. False to allow output eq controls to be shown. Default is True. |
Returns
None
Example
-- Notify Hide (or show) Navigator EQ for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "HIDEEQFROMNAVS_CHANGED", { OUTPUT = "4002", ENABLED = false }, "NOTIFY")
LOUDNESS_CHANGED
Navigator EQ notification that the loudness has changed.
Name
LOUDNESS_CHANGED
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | OUTPUT: OutputBindingID |
BOOL | ENABLED: LOUDNESS: True for loudness on, False for loudness off. |
Returns
None
TREBLE_LEVEL_CHANGED
Navigator EQ notification that the treble level has changed.
Name
TREBLE_LEVEL_CHANGED
Parameter | Description |
---|---|
int | OUTPUT: OutputBindingID |
int | LEVEL: LOUDNESS: New treble level. Range is -12 to 12. |
Returns
None
Example
-- Notify Treble Level is at -6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "TREBLE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = -6 }, "NOTIFY")
-- Notify Treble Level is at +6 for Output 3 (Binding ID 4002)
C4:SendToProxy(5001, "TREBLE_LEVEL_CHANGED", { OUTPUT = "4002", LEVEL = 6 }, "NOTIFY")
Navigator EQ Capabilities
<has_eq_preset_control></has_eq_preset_control>: Boolean capability where True indicates this device supports the navigator equalizer interface and should allow navigators to interact with equalizers.
<eq_preset_nav_count></eq_preset_nav_count>: Capability that requires a count (integer) of the number of presets to be presented to the Navigators.
<eq_band_nav_count></<eq_band_nav_count>: Capability that requires a count (integer) of the number of adjustable bands for equalizer control.
<use_tone_max_value></use_tone_max_value>: Capability that requires the max value (integer) for tone controls.
<use_tone_min_value></use_tone_min_value>: Capability that requires the minimum value (integer) for tone controls.
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.
Display Adjustable AV Switch Bindings
O.S. releases 3.3.0 and later provides the ability to hide AV Switch Bindings that are not in use. This feature has been provided to better manage the UI display in ComposerPro. This is especially useful for AV Switch devices that have a large number of bindings. Displaying all of the bindings for these devices can make the use of UI cumbersome.
Assumptions:
- All applicable bindings are correctly defined in the driver’s XML.
- Driver developers already have the ability to create control bindings using C4:AddDynamicBinding()
- The driver file specifies bindings to be hidden by the proxy through the use of a new XML element delivered in O.S. 3.3.0:
<ExtraInfo>D2</ExtraInfo>
See below for more information. - Resizing of the bindings list is possible only if a new capability delivered in O.S. 3.3.0 is set to true:
<allow_dynamic_resize>
See below for more information.
AV Switch Proxy Functionality Using Display Adjustable Bindings
- Bindings that are bound and then unbound in ComposerPro will only be hidden after a Director restart.
- The Proxy will increase the amount of displayed bindings based on the last unhidden, bound binding. For example, bindings 1 through 10 are all bound and unhidden. ComposerPro will display all of those bindings and in addition, binding 11 through 13 assuming they are also unhidden.
- The largest Binding amount will be shown ACROSS ALL SECTIONS at the same time. For example, RX, TX, Audio, Video will all be expanded to the largest bound set of any of the section. If RX has 10 bound connections that means Audio will also display 10, regardless of binding status.
- The driver developer is responsible for handling the configuration use case of virtual director or when the device is not available and ensuring that the solution is documented and appropriate for these scenarios.
Driver XML to Support Hidden Bindings
To allow the AV Switch Proxy to auto hide/unhide a binding, the driver needs to have a new XML tag included in the each connection in the driver’s XML: <ExtraInfo>D2</ExtraInfo>
.
The ExtraInfo tag must include the value of D2
as the parameter for each connection. For example, see the XML for connection 3096 to the right.
<connection>
<id>3096</id>
<type>6</type>
<ExtraInfo>D2</ExtraInfo>
<connectionname>TX 96</connectionname>
<consumer>True</consumer>
</connection>
Capability to Support Hidden Bindings
allow_dynamic_resize
Capability that allows for AV Switch bindings to be hidden in ComposerPro. Defaults to false.
Signature
<allow_dynamic_resize>false</allow_dynamic_resize>
Additional Information and Expected Limitations
- The driver developer is responsible for persisting and recreating any non-binding connections when director starts up.
- The driver developer must recreate the bindings in the proper order before director loads and creates the connection. This is done by the driver developer by persisting the binding information and creating the bindings on execution of the main driver code.
- The driver must handle the "virtual" or device not available case appropriately based on the expected use case for configuring the device. If the connections aren't defined in xml, and the device isn't available, the installer may have a limited experience. The driver developer needs to take this into consideration.
Audio Video Switch Proxy Commands
BACK
Pulse Back button.
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
CONNECT_OUTPUT
Numerical value of the output. Switch the output to passed ID.
Name
CONNECT OUTPUT ()
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
PATH DEV LIST | str | Value of the devices directly upstream in the AV path. |
Returns
None
Usage Note
Preface band width tuner capability must be used in the driver for the CONNECT OUTPUT command to be set.
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DISCONNECT_OUTPUT
Disconnect (turn off) selected output on device.
Name
DISCONNECT_OUTPUT ()
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
PREV DEV LIST | str | Value of the device directly upstream in the AV path. |
Returns
None
EMIT_CODE
Emit IR/Serial code (used by AVGen IR/Serial Proxy).
Name
EMIT_CODE ()
Parameter | Type | Description |
---|---|---|
ID | STR | ID OF IR Code |
Returns
None
EMIT_MACRO
Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)
Name
EMIT_MACRO ()
Parameter | Type | Description |
---|---|---|
NAME | STR | MacroCodeName |
Returns
None
GET_AUDIO_INPUTS
Command sent to the protocol during the proxy initialization. Returns available audio inputs from the protocol device.
Name
GET_AUDIO_INPUTS ()
Parameters
None
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LOUDNESS_OFF
Turn loudness off.
Name
LOUDNESS_OFF ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
LOUDNESS_ON
Turn loudness on.
Name
LOUDNESS_ON ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
LOUDNESS_TOGGLE
Toggle loudness on/off.
Name
LOUDNESS_TOGGLE ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
MUTE_OFF
Turn muting off.
Name
MUTE_OFF ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
MUTE_ON
Turn muting on.
Name
MUTE_ON ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
MUTE_TOGGLE
Toggle muting on/off.
Name
MUTE_TOGGLE ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
NameSignature
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
POUND
Pulse ‘#’ button
Name
POUND ()
Parameters
None
Returns
None
PULSE_BALANCE_DOWN
Pulse balance down (Left)
Name
PULSE_BALNCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
PULSE_BALANCE_UP
Pulse balance up (Right)
Name
PULSE_BALNCE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
PULSE_BASS_DOWN
Pulse bass down (Left)
Name
PULSE_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
PULSE_BASS_UP
Pulse bass up (Right)
Name
PULSE_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
PULSE_INPUT
Toggle (cycle through) input selection on device.
Name
PULSE_INPUT
Parameters
None
Returns
None
PULSE_SUR_UP
Toggle (cycle through) surround mode presets on device.
Name
PULSE_SUR_UP
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
PULSE_VOL_DOWN
Pulse volume level down.
Name
PULSE_VOL_DOWN
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
PULSE_VOL_UP
Pulse volume level up.
Name
PULSE_VOL_UP
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
PULSE_TREBLE_DOWN
Pulse treble down.
Name
PULSE_TREBLE_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PULSE_TREBLE_UP
Pulse treble up.
Name
PULSE_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
RECALL
Pulse Recall button
Name
RECALL ()
Parameters
None
Returns
None
SET_BALANCE
Set balance to a specified position.
Name
SET_BALANCE ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Balance Level |
OUTPUT | INT | Output BindingID |
Returns
None
SET_BALANCE_UP
Set balance to a specified position.
Name
SET_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Balance Level |
OUTPUT | INT | Output BindingID |
Returns
None
SET_BASS_LEVEL
Set bass to a specified level.
Name
SET_BASS_LEVEL
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output BindingID |
Returns
None
SET_DIGI_OFF
Used with the v.3 amp to turn digital inputs off.
Name
SET_DIGI_OFF ()
Parameters
None
Returns
None
SET_DIGI_ON
Used with the v.3 amp to turn digital inputs on.
Name
SET_DIGI_ON ()
Parameters
None
Returns
None
SET_INPUT
Specify input selection of device.
Name
SET_INPUT ()
Parameter | Type | Description |
---|---|---|
Input Binding ID | int | Binding ID in the BindingID range below. |
PREV DEV LIST | str | Value of the device directly upstream in the AV path. |
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
Returns
None
Usage Note
- Control Bindings = 1 -> 999
- Video Inputs = 1000 -> 1099
- Video Outputs = 2000 -> 2999
- Audio Inputs = 3000 -> 3099
- Audio Outputs = 4000 -> 4999
- Proxy Bindings = 5000 -> 5999
- Network Bindings = 6000 -> 6999
- Room Bindings = 7000 -> 7999
- Power Manager = 8000 -> 8999
SET_LOUDNESS
Turn loudness on.
Name
SET_LOUDNESS ()
Parameter | Type | Description |
---|---|---|
INPUT | INT | Input Binding ID - should be in the BindingID range below. |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_OUTPUT_INPUT
Specify input and output selection of device.
Name
SET_OUTPUT_INPUT ()
Parameter | Type | Description |
---|---|---|
INPUT | INT | Input Binding ID - should be in the BindingID range below. |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_SURROUND_MODE
Select specified surround mode preset on device.
Name
SET_SURROUND_MODE ()
Parameter | Type | Description |
---|---|---|
SURROUND\_MODE | INT | Surround Mode preset value. |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_TREBLE_LEVEL
Set treble to a specified level.
Name
SET_TREBLE_LEVEL ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Treble Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_UP_DOWN_SWAP
Swap page UP/DOWN buttons (used by AVGen)
Name
SET_UP_DOWN_SWAP ()
Parameter | Type | Description |
---|---|---|
SWAPFLAG | BOOL | Swap page UP/DOWN buttons (used by AVGen). TRUE to enable swap, FALSE to disable. |
Returns
None
STOP_VOL_DOWN
Stop ramping volume down.
Name
SET_VOL_DOWN ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SET_VOLUME_LEVEL
Set volume to a specified level.
Name
SET_VOLUME_LEVEL ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
STAR
Pulse *
button
Name
STAR ()
Parameters
None
Returns
None
START_BALANCE_DOWN
Start ramping balance down (left).
Name
START_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_BASS_DOWN
Start ramping bass down.
Name
START_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_BASS_UP
Start ramping bass up.
Name
START_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_TREBLE_DOWN
Start ramping treble down.
Name
START_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_TREBLE_UP
Start ramping treble up.
Name
START_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_VOL_DOWN
Start ramping volume down.
Name
START_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
START_VOL_UP
Start ramping volume up.
Name
START_VOL_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_BALANCE_DOWN
Start ramping balance.
Name
STOP_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass
Name
STOP_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass
Name
STOP_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_BASS_UP
Stop ramping bass
Name
STOP_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_TREBLE_DOWN
Stop ramping the treble down
Name
STOP_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_TREBLE_UP
Stop ramping the treble up.
Name
STOP_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
STOP_VOL_DOWN
Stop ramping the volume down
Name
STOP_VOL_DOWN ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | Output Binding ID |
Returns
None
CD Player Capabilities
media_count
Number of discs available within the changer
Signature
<media_count></media_count>
Parameter | Description |
---|---|
int | Number of discs. |
Example
<capabilities>
<media_count>12</media_count>
</capabilities>
media_type
Media that the device is capable of playing. Bitmask values include:
- CD = 0X01
- Audio Files (mp3) = 0X2
- Video = 0X4
- Broadcast = 0X8
Signature
<media_type></media_type>
Parameter | Description |
---|---|
int | Number of discs. |
Example
<capabilities>
<media_type>0X2</media_type>
</capabilities>
CD Player Protocol Notifications
DISC_CHANGED
Selected disc has changed.
Name
DISC_CHANGED ()
Parameter | Type | Description |
---|---|---|
DISC_NUMBER | INT | Number of Disc |
Returns
None
OFF
Device has turned Off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned On.
Name
ON ()
Parameter
None
Returns
None
PAUSE
Device is paused.
Name
PAUSE ()
Parameter
None
Returns
None
PLAY
Device has entered a playback state.
Name
PLAY ()
Parameter
None
Returns
None
STOP
Device has entered a stopped state.
Name
STOP ()
Parameter
None
Returns
None
TRACK_CHANGED
Selected track has changed.
Name
TRACK_CHANGED ()
Parameter | Type | Description |
---|---|---|
TRACK_NUMBER | INT | Number of Track |
Returns
None
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.
CD Player Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameters
None
Returns
None
DOWN
Pulse down navigation.
Name
DOWN ()
Parameters
None
Returns
None
EJECT
Eject disc.
Name
EJECT ()
Parameters
None
Returns
None
EMIT_CODE
Emit IR/Serial code (used by AVGen IR/Serial Proxy).
Name
EMIT_CODE ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Emit IR/Serial code macro specified by the macro name. |
Returns
None
EMIT_MACRO
Emit IR/Serial code macro specified by the macro name.
Name
EMIT_MACRO ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Macro Code Name |
Returns
None
ENTER
Navigate Enter key
Name
Enter ()
Parameters
None
Returns
None
GO_TO_DISC
Select specified disc.
Name
GO_TO_DISC ()
Parameter | Type | Description |
---|---|---|
DISC_NUMBER | INT | Number of Disc |
Returns
None
GO_TO_DISC_TRACK
Select specified disc and track.
Name
GO_TO_DISC_TRACK ()
Parameter | Type | Description |
---|---|---|
DISC_NUMBER | INT | Number of Disc |
DISC_TRACK | INT | Number of Track |
Returns
None
GO_TO_TRACK
Select specified track.
Name
GO_TO_TRACK ()
Parameter | Type | Description |
---|---|---|
DISC_TRACK | INT | Number of Track |
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LEFT
Pulse left navigation.
Name
LEFT ()
Parameters
None
Returns
None
MENU
Navigate menu.
Name
MENU ()
Parameters
None
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Returns
`None `
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
OPEN_CLOSE
Open/close disc tray.
Name
OPEN_CLOSE ()
Parameters
None
Returns
None
PAGE_DOWN
Pulse menu Page down.
Name
PAGE_DOWN ()
Parameters
None
Returns
None
PAGE _UP
Pulse menu Page up.
Name
PAGE_UP ()
Parameters
None
Returns
None
PLAY
Place device in a playback state.
Name
PLAY ()
Parameters
None
Returns
None
PAUSE
Place device in stop state.
Name
PAUSE ()
Parameters
None
Returns
None
POUND
Pulse # button.
Name
POUND ()
Parameters
None
Returns
None
RECALL
Pulse the recall button.
Name
RECALL ()
Parameters
None
Returns
None
RIGHT
Pulse right navigation button.
Name
RIGHT ()
Parameters
None
Returns
None
SCAN_FWD
Pulse/scan forward within track/chapter.
Name
SCAN_FWD ()
Parameters
None
Returns
None
SCAN_REV
Pulse scan reverse within track/chapter.
Name
SCAN_REV ()
Parameters
None
Returns
None
SET_UP_DOWN_SWAP
Swap page UP/DOWN buttons (used by AVGen). TRUE
to enable swap, FALSE
to disable.
Name
POUND ()
Parameter | Type | Description |
---|---|---|
SWAPFLAG | BOOL | True/False |
Returns
None
SKIP_FWD
Advance to next track/chapter.
Name
SKIP_FWD ()
Parameters
None
Returns
None
SKIP_REV
Seek to previous track/chapter.
Name
SKIP_REV ()
Parameters
None
Returns
None
STAR
Pulse *
button.
Name
STAR ()
Parameters
None
Returns
None
START_DOWN
Initiate down arrow navigation.
Name
START_DOWN ()
Parameters
None
Returns
None
START_LEFT
Pulse left navigation.
Name
START_LEFT ()
Parameters
None
Returns
None
START_PAGE_DOWN
Start menu Page down.
Name
START_PAGE_DOWN ()
Parameters
None
Returns
None
START_PAGE_UP
Start menu Page up.
Name
START_PAGE_UP ()
Parameters
None
Returns
None
START_PAGE_RIGHT
Initiate right-arrow navigation.
Name
START_RIGHT ()
Parameters
None
Returns
None
START_SCAN_FWD
Initiate scan forward within track/chapter.
Name
START_SCAN_FWD ()
Parameters
None
Returns
None
START_SCAN_REV
Initiate scan forward within track/chapter.
Name
START_SCAN_REV ()
Parameters
None
Returns
None
START_UP
Initiate up-arrow navigation.
Name
START_UP ()
Parameters
None
Returns
None
STOP
Place device in stop state.
Name
STOP ()
Parameters
None
Returns
None
STOP_SCAN_FWD
Terminate scan forward within track/chapter.
Name
STOP_SCAN_FWD ()
Parameters
None
Returns
None
STOP_SCAN_REV
Terminate reverse scan within track/chapter.
Name
STOP_SCAN_REV ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page down.
Name
STOP_PAGE_DOWN ()
Parameters
None
Returns
None
STOP_DOWN
Terminate down-arrow navigation.
Name
STOP_DOWN ()
Parameters
None
Returns
None
STOP_UP
Stop menu Page down.
Name
STOP_UP ()
Parameters
None
Returns
None
STOP_LEFT
Terminate left navigation.
Name
STOP_LEFT ()
Parameters
None
Returns
None
STOP_PAGE UP
Stop menu page up.
Name
STOP_PAGE_UP ()
Parameters
None
Returns
None
STOP_RIGHT
Terminate RIGHT navigation.
Name
STOP_RIGHT ()
Parameters
None
Returns
None
TV_VIDEO
Toggle TV/video input.
Name
TV_VIDEO ()
Parameters
None
Returns
None
UP
Pulse up navigation.
Name
UP ()
Parameters
None
Returns
None
Disc Changer Capabilities
can_play_cd
Disc Changer is capable of playing CD audio formats.
Signature
<can_play_cd></can_play_cd>
Parameter | Description |
---|---|
bool | True/False |
Returns
None
Example
<capabilities>
<can_play_cd>true</can_play_cd>
</capabilities>
can_scan_media
Disc Changer is capable of scanning media and returning disc information via the driver.
Signature
<can_scan_media></can_scan_media>
Parameter | Description |
---|---|
bool | True/False |
Returns
None
Example
<capabilities>
<can_scan_media>true</can_scan_media>
</capabilities>
has_discreet_disc_button
Capable of seeking directly to a specified disc.
Signature
<has_discrete_disc_button></has_discrete_disc_button>
Parameter | Description |
---|---|
bool | True/False |
Returns
None
Example
<capabilities>
<has_discreet_disc_button>true</has_discreet_disc_button>
</capabilities>
has_discreet_disc_access
Capable of seeking directly to a specified disc (and specified track on that disc).
Signature
<has_discrete_disc_access></has_discrete_disc_access>
Parameter | Description |
---|---|
bool | True/False |
Returns
None
Example
<capabilities>
<has_discreet_disc_access>true</has_discreet_disc_access>
</capabilities>
has_discreet_input_selection
Capable of directly selecting specified input.
Signature
<has_discrete_input_selection></has_discrete_input_selection>
Parameter | Description |
---|---|
bool | True/False |
Returns
None
Example
<capabilities>
<has_discreet_disc_button>true</has_discreet_disc_button>
</capabilities>
media_count
Number of discs available within the changer.
Signature
<media_count></media_count>
Parameter | Description |
---|---|
int | nMediaCount |
Returns
None
Example
<capabilities>
<media_count>true</media_count>
</capabilities>
media_type
Media that the device is capable of playing. Bitmask of:
- CD = 0X01
- Audio Files (mp3) = 0X2
- Video = 0X4
- Broadcast = 0X8
Signature
<media_type></media_type>
Parameter | Description |
---|---|
int | nMediaTypeBitmask |
Returns
None
Example
<capabilities>
<media_type>true</media_type>
</capabilities>
selection_delay
Delay time in milliseconds before new tuner selection is online.
Signature
<selection_delay></selection_delay>
Parameter | Description |
---|---|
bool | True/False |
Returns
None
Example
<capabilities>
<selection_delay>true</selection_delay>
</capabilities>
Disc Changer Protocol Notifications
DISC_CHANGED
Selected disc has changed.
Name
DISC_CHANGED ()
Parameter | Type | Description |
---|---|---|
DiscNumber | INT | Disc Number |
Returns
None
OFF
Device has turned Off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned On.
Name
ON ()
Parameter
None
Returns
None
PAUSE
Device is paused.
Name
PAUSE ()
Parameter
None
Returns
None
PLAY
Device has entered a playback state.
Name
PLAY ()
Parameter
None
Returns
None
STOP
Device has entered a stopped state.
Name
STOP ()
Parameter
None
Returns
None
TOC
Issued when scanning the table of contents for a particular disc or cd. Director will use this information to lookup and populate the database with the disc information if the lookup succeeds. This command can also be used to indicate a slot now is empty and contains no disc.
Name
TOC ()
Parameter
Parameter | Type | Description |
---|---|---|
INDEX | INT | Index of the disc being scanned |
DISCTYPE | STR | ‘cd’ for CD or ‘dvd’ for DVD |
DATA | XML | table of contents |
Returns
None
TRACK_CHANGED
Selected track has changed.
Name
TRACK_CHANGED ()
Parameter | Type | Description |
---|---|---|
DiscNumber | INT | Track Number |
Returns
None
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.
Disc Changer Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DOWN
Pulse down navigation.
Name
DOWN ()
Parameters
None
Returns
None
EJECT
Eject disc/tape.
Name
EJECT ()
Parameters
None
Returns
None
EMIT_CODE
Emit IR/Serial code (used by AVGen IR/Serial Proxy).
Name
EMIT_CODE ()
Parameter | Type | Description |
---|---|---|
IRCodeID | INT | ID OF IR Code |
Returns
None
EMIT_MACRO
Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)
Name
EMIT_MACRO ()
Parameter | Type | Description |
---|---|---|
MacroCodeNam | STR | Macro Code Name |
Returns
None
ENTER
Navigate Enter key
Name
Enter ()
Parameters
None
Returns
None
GO_TO_DISC_TRACK
Select specified disc and track.
Name
GO_TO_DISC_TRACK ()
Parameter | Type | Description |
---|---|---|
DiscNumber | INT | Disc Number |
TrackNUMBER | INT | Track Number |
Returns
None
GO_TO_TRACK
Select specified track.
Name
GO_TO_TRACK ()
Parameter | Type | Description |
---|---|---|
TrackNUMBER | INT | Track Number |
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LEFT
Pulse left navigation.
Name
LEFT ()
Parameters
None
Returns
None
MENU
Navigate menu.
Name
MENU ()
Parameters
None
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
S Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
OPEN_CLOSE
Open/close disc tray.
Name
OPEN_CLOSE ()
Parameters
None
Returns
None
PAUSE
Place device in stop state.
Name
PAUSE ()
Parameters
None
Returns
None
PAGE_DOWN
Pulse menu Page down.
Name
PAGE_DOWN ()
Parameters
None
Returns
None
PAGE_UP
Pulse menu Page up.
Name
PAGE_UP ()
Parameters
None
Returns
None
PLAY
Place device in a playback state.
Name
PLAY ()
Parameters
None
Returns
None
POUND
Pulse # button.
Name
POUND ()
Parameters
None
Returns
None
Pulse_Aspect_Ratio
Toggle (cycle though) aspect ratio.
Name
PULSE_ASPECT_RATIO ()
Parameters
None
Returns
None
RECALL
Pulse Recall button.
Name
RECALL ()
Parameters
None
Returns
None
RIGHT
Pulse Right Navigation button.
Name
RIGHT ()
Parameters
None
Returns
None
SCAN_FWD
Pulse/scan forward within track/chapter.
Name
SCAN_FWD ()
Parameters
None
Returns
None
SCAN_REV
Pulse scan reverse within track/chapter.
Name
SCAN_REV ()
Parameters
None
Returns
None
SKIP_FWD
Advance to next track/chapter.
Name
CSKIP_FWD ()
Parameters
None
Returns
None
SKIP_REV
Seek to previous track/chapter.
Name
SKIP_REV ()
Parameters
None
Returns
None
SET_UP_DOWN_SWAP
Swap page UP/DOWN buttons.
Name
SET_UP_DOWN_SWAP ()
Parameter | Type | Description |
---|---|---|
SWAPFLAG | BOOL | Ability to swap page buttons. |
Returns
None
STAR
Pulse *
button.
Name
STAR ()
Parameters
None
Returns
None
START_DOWN
Initiate down arrow navigation.
Name
START_DOWN ()
Parameters
None
Returns
None
START_LEFT
Pulse left navigation.
Name
START_LEFT ()
Parameters
None
Returns
None
START_PAGE_DOWN
Start menu Page down.
Name
START_PAGE_DOWN ()
Parameters
None
Returns
None
START_PAGE_UP
Start menu Page up.
Name
START_PAGE_UP ()
Parameters
None
Returns
None
START_PAGE_RIGHT
Initiate right-arrow navigation.
Name
START_RIGHT ()
Parameters
None
Returns
None`
STAR _SCAN_FWD
Initiate scan forward within track/chapter.
Name
START_SCAN_FWD ()
Parameters
None
Returns
None
START_SCAN_REV
Initiate scan backwards within track/chapter.
Name
START_SCAN_REV ()
Parameters
None
Returns
None
START_UP
Initiate up-arrow navigation.
Name
START_UP ()
Parameters
None
Returns
None
STOP
Place device in stop state.
Name
STOP ()
Parameters
None
Returns
None
STOP_LEFT
Terminate left navigation.
Name
STOP_LEFT ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page down.
Name
STOP_PAGE_DOWN ()
Parameters
None
Returns
None
STOP_DOWN
Terminate down-arrow navigation.
Name
STOP_DOWN ()
Parameters
None
Returns
None
STOP _PAGE _DOWN
Stop menu page up.
Name
STOP_PAGE_UP ()
Parameters
None
Returns
None
STOP _RIGHT
Terminate RIGHT navigation.
Name
STOP_RIGHT ()
Parameters
None
Returns
None
STOP _SCAN _FWD
Terminate scan forward within track/chapter.
Name
STOP_SCAN_FWD ()
Parameters
None
Returns
None
STOP _SCAN _REV
Terminate reverse scan within track/chapter.
Name
STOP_SCAN_REV ()
Parameters
None
Returns
None
STOP _UP
Stop menu Page down.
Name
STOP_UP ()
Parameters
None
Returns
None
TV _VIDEO
Toggle TV/video input.
Name
TV_VIDEO ()
Parameters
None
Returns
None
UP
Pulse up navigation.
Name
CUP ()
Parameters
None
Returns
None
UPDATE _PROGRESS _SCAN _MEDIA
Notification of the progress of the current media scan
Signature
UPDATE_PROGRESS_SCAN_MEDIA ()
Parameter | Type | Description |
---|---|---|
TOTAL COUNT | NUM | Total number of discs to be scanned. |
CURRENT INDEX | Num | How many currently have been scanned. |
Returns
None
GO_TO_DISC
Select specified disc.
Name
GO_TO_DISC ()
Parameter | Type | Description |
---|---|---|
DiscNumber | INT | Disc Number |
Returns
None
DVD Player Protocol Notifications
DISC_CHANGED
Selected disc has changed.
Name
DISC_CHANGED ()
Parameter | Type | Description |
---|---|---|
DiscNumber | INT | Disc Number |
Returns
None
OFF
Device has turned Off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned On.
Name
ON ()
Parameter
None
Returns
None
PAUSE
Device is paused.
Name
PAUSE ()
Parameter
None
Returns
None
PLAY
Device has entered a playback state.
Name
PLAY ()
Parameter
None
Returns
None
STOP
Device has entered a stopped state.
Name
STOP ()
Parameter
None
Returns
None
TOC
Issued when scanning the table of contents for a particular disc or cd. Director will use this information to lookup and populate the database with the disc information if the lookup succeeds. This command can also be used to indicate a slot now is empty and contains no disc.
Name
TOC ()
Parameter
Parameter | Type | Description |
---|---|---|
INDEX | INT | Index of the disc being scanned |
DISCTYPE | STR | ‘cd’ for CD or ‘dvd’ for DVD |
DATA | XML | table of contents |
Returns
None
TRACK_CHANGED
Selected track has changed.
Name
TRACK_CHANGED ()
Parameter | Type | Description |
---|---|---|
DiscNumber | INT | Track Number |
Returns
None
Generic Media Player Protocol Notifications
Using the List Parameter
There are two ways to handle sending a list of media information. The first involves the protocol driver manually creating the .xml for the list and then passing that list to the proxy. The format of the list can be seen to the right.
<list>
<clear>true</clear>
<top>false</top>
<alpha>true</alpha>
<title>Smashing Pumpkins</title>
<total_items>80</total_items>
<num_items>21</num_items>
<first>0</first>
<items>
<item>
<id>1</id>
<text>Siamese Dream</text>
<type>1</type>
</item>
<item>
<id>2</id>
<text>Greatest Hits</text>
<type>1</type>
</item>
</items>
</list>
The second method involves adding new list data to an existing list and passing the updated list along. This prevents the protocol driver from having to recreate a list every time new data is passed. The commands below need to reside inside the protocol driver’s Lua code:
NEW LIST
Creates a new media data list.
Signature
NEW_LIST ()
Parameter | Description |
---|---|
title | text string of the list title. |
total_items | Numerical value of the total number of items in the list. |
num_items | Numerical value of the new items added to the list. |
first | First item in the return list. |
clear | True or False. Indicates whether or not the cache for the previously returned items should be cleared, or not. |
ADD LIST ITEM
Adds an item to a media data list.
Signature
ADD_LIST_ITEM ()
Parameter | Description |
---|---|
id | Id of the item being added to the list. |
type | Type of items being added to the list; playable, selectable. |
text | Display text for the new item. |
last | True or False. This parameter is passed last and triggers the list to be sent to the UI (if True) |
When the protocol is ready to send a new list it should send a NEW_LIST command followed by ADD_LIST_ITEM for each item to be added to the list.
ADD MENU ITEM
Adds an item to a media data menu.
Signature
ADD_MENU_ITEM ()
Parameter | Description |
---|---|
id | Id of the item being added to the menu. |
type | Type of items being added to the list; playable, selectable |
text | Display text for the new menu item. |
last | True or False. This parameter is passed last and triggers the menu to be sent to the UI (if True). |
NEW_MENU
Creates a new menu of media data.
Signature
NEW_MENU ()
Parameter | Description |
---|---|
title | Text string of the menu title. |
num_items | Numerical value of the new items added to the list. |
When the protocol is ready to send a new menu it should send a NEW_MENU command followed by ADD_MENU_ITEM for each item to be added to the menu. See the example to the right._
-- MENU_LIST
<menu_list>
<title>Main Menu</title>
<total_items>4</total_items>
<num_items>4</num_items>
<first>0</first>
<items>
<item>
<id>0</id>
<type>4</type>
<text>Playlists</text>
</item>
<item>
<id>1</id>
<type>4</type>
<text>Artists</text>
</item>
<item>
<id>2</id>
<type>4</type>
<text>Albums</text>
</item>
<item>
<id>4</id>
<type>4</type>
<text>Songs</text>
</item>
</items>
</menu_list>
LIST_TYPE_CHANGED
Name
LIST_TYPE_CHANGED ()
Parameter | Type | Description |
---|---|---|
listtype | STR | Watch or Listen |
MEDIA_INFO_CHANGED
Notification indicating that the media information has changed in the GenericMediaPlayer.
Name
MEDIA_INFO_CHNAGED ()
Parameter | Type | Description |
---|---|---|
media info 1 | STR | Media Information |
media info 2 | STR | Media Information |
media info 3 | STR | Media Information |
MEDIA\ LABELS_CHANGED
Notification indicating that the online status of the GenericMediaPlayer has changed.
Name
MEDIA_LABELS_CHNAGED ()
Parameter | Type | Description |
---|---|---|
media labels | STR | Media label Info |
ONLINE_STATUS_CHANGED
Notification indicating that the online status of the GenericMediaPlayer has changed.
Name
ONLINE_STATUS_CHNAGED ()
Parameter | Type | Description |
---|---|---|
online status | STR | Online Status Information |
PLAY_STATUS_CHANGED
Notification indicating that the playback status of the GenericMediaPlayer has changed.
Name
PLAY_STATUS_CHNAGED ()
Parameter | Type | Description |
---|---|---|
play status | STR | Play status information. |
QUEUE_PROGRESS_CHANGED
Notification indicating that the queue progress of the GenericMediaPlayer has changed.
Name
QUEUE_PROGRESSS_CHNAGED ()
Parameter | Type | Description |
---|---|---|
current | STR | Status Information |
total | STR | Total in queue. |
REPEAT_CHANGED
Notification indicating that the repeat mode of the GenericMediaPlayer has changed.
Name
REPEAT_CHNAGED ()
Parameter | Type | Description |
---|---|---|
repeat mode | STR | New repeat mode. |
REPEAT_MODES_CHANGED
Notification indicating that the available repeat modes of the GenericMediaPlayer have changed.
Name
REPEAT_MODES_CHNAGED ()
Parameter | Type | Description |
---|---|---|
repeat modes | STR | New repeat modes. |
SET_REPEAT_MODES
Notification indicating that the available repeat modes of the GenericMediaPlayer have changed.
Name
SET_REPEAT_MODES ()
Parameter | Type | Description |
---|---|---|
repeat modes | STR | Changed Modes |
SHUFFLE_CHANGED
Notification indicating that the shuffle mode of the GenericMediaPlayer has changed.
Name
SHUFFLE_CHANGED ()
Parameter | Type | Description |
---|---|---|
shuffle mode | STR | Shuffle Mode |
SHUFFLE_MODES_CHANGED
Notification indicating that the available shuffle modes of the GenericMediaPlayer have changed.
Name
SHUFFLE_MODES_CHANGED ()
Parameter | Type | Description |
---|---|---|
shuffle modes | STR | Shuffle Modes |
Generic Media Player Commands
GET_ALPHA_LOOKUP
Command that returns the index of the first item in the list that begins with the specified character.
Name
GET_ALPHA_LOOKUP ()
Parameter | Type | Description |
---|---|---|
LETTER | STR | Letter used for Index |
ROOMID | INT | Room ID value |
SendToProxy
<alpha_lookup>
GET_LIST
Command to obtain the current list.
Name
GET_LIST ()
Parameters
None
SendToProxy
<list>
GET_NEXT
Command that returns the index of the first item in the list that begins with the specified character.
Name
GET_NEXT ()
Parameter | Type | Description |
---|---|---|
FIRST | INT | The index of the first item to be returned. |
NUM | INT | The number of items to return. |
SendToProxy
<list>
GET_MENU
Command to obtain the list of items in the menu.
Name
GET_MENU ()
Parameters
None
SendToProxy
<menu_list>
GET_REPEAT_MODES
Command to set the available repeat modes in the GenericMediaPlayer.
Name
GET_REPEAT_MODES ()
Parameter | Type | Description |
---|---|---|
repeat modes | STR | Repeat modes. |
SendToProxy
<rtepeat_modes>
GET_SHUFFLE_MODES
Command to obtain supported repeat modes.
Name
GET_SHUGGLE_MODES ()
Parameters
None
SendToProxy
<shuffle_modes>
LIST_BACK
Command to return to the previous list.
Signature
LIST_BACK ()
Parameters
None
SendToProxy
<list>
LIST_SELECT
Command to select an item from a list of media on the GenericMediaPlayer. If the item has a child list, that list is sent to the UI. If the item is playable, playback should be started.
Name
LIST_SELECT ()
Parameter | Type | Description |
---|---|---|
ITEM | INT | The id of the item selected |
TITLE | STR | The name of the item. |
TYPE | INT | he item type returned in the list. |
SendToProxy
<list>
MENU_SELECT
Command to select an item from the list of menu items returned with GET_MENU.
Name
MENU_SELECT ()
Parameter | Description | Description |
---|---|---|
ITEM | INT | The id of the item selected |
TYPE | STR | The item type returned in the list. |
TITLE | STR | The name of the item. |
SendToProxy
None
PAUSE
Command to pause media playback on the GenericMediaPlayer.
Name
PAUSE ()
Parameters
None
SendToProxy
None
PLAY
Command to start media playback.
Name
PLAY ()
Parameters
None
SendToProxy
None
PLAYPAUSE
Command to start media playback if currently paused or pause media playback if currently playing.
Name
PLAYPAUSE ()
Parameters
None
SendToProxy
None
RESET
Command to reset the GenericMediaPlayer. This command is used to switch between different media types. A new list and menu should be sent to the UI when this command is sent.
Name
RESET ()
Parameter | Type | Description |
---|---|---|
TYPE | STR | The new media type tp be shown |
SendToProxy
None
SCAN_FWD
Command to scan forward through current media.
Name
SCAN_FWD ()
Parameters
None
SendToProxy
None
SCAN_REV
Command to scan backwards through current media.
Name
SCAN_REV ()
Parameters
None
SendToProxy
None
SEARCH
Command to filter items based on the search string.
Name
SEARCH ()
Parameter | Description |
---|---|
SEARCHSTRING | The string used to filter results. |
SendToProxy
None
SELECT_PLAY
Command to select the specified item for playback. If an album, this will playback all tracks.
Name
SELECT_PLAY ()
Parameter | Type | Description |
---|---|---|
ITEM | INT. | The index of the item to be played. |
SendToProxy
None
SET_REPEAT
Command to set the repeat mode on the GenericMediaPlayer.
Name
SELECT_REPEAT ()
Parameter | Type | Description |
---|---|---|
MODE | INT | One of the modes returned with the <repeat_modes> tag. |
SendToProxy
None
SET_SHUFFLE_MODES
Command to set the available shuffle modes in the GenericMediaPlayer.
Name
SELECT_SHUFFLE_MODES ()
Parameter | Type | Description |
---|---|---|
shuffle modes | STR | One of the modes returned with the <shuffle_modes> tag |
SendToProxy
None
SKIP_FWD
Command that starts playback of the next media item.
Name
SKIP_FWD ()
Parameters
None
SendToProxy
None
SKIP_REV
Command that starts playback of the previous media item.
Name
SKIP_REV ()
Parameters
None
SendToProxy
None
START_SCAN_FWD
Command to start scan forward or fast forward through the current playing media item.
Name
START_SCAN_FWD ()
Parameters
None
SendToProxy
None
START_SCAN_REV
Command to start scan backwards or rewind through the currently playing media item.
Name
START_SCAN_REV ()
Parameters
None
SendToProxy
None
STOP
Command to stop media playback.
Name
STOP ()
Parameters
None
SendToProxy
None
STOP_SCAN_FWD
Command to stop scanning forward through the current media.
Name
STOP_SCAN_FWD ()
Parameters
None
SendToProxy
None
STOP_SCAN_REV
Command to stop scanning backward through the current media.
Name
STOP_SCAN_REV ()
Parameters
None
SendToProxy
None
Generic Media Player and Coverart
Media cover art can be displayed on the UI in two ways. The first process involves the coverart image being sent directly to the UI using the device protocol. The image is converted to a .jpg file and stored in the following location on the device:
/media/images/mediaplayer/<device_id>/coverart.jpg
In the path above, <device_id> is the id of the media player. See the NEW_COVER_ART notify below.
The second way to display cover art is to send a URL which represents the image location from the device proxy directly to the UI. See the COVERART_PATH_CHANGED notify below.
Also, the proxy supports receiving three cover art image formats:
- RGB565
- RGB888
- JPEG files
Note that these images must be BASE64 encoded before reaching the proxy. The image is received by the proxy in one of the encoded formats from the media player using the SendToProxy: (“COVERART”) notification. Image information is sent with this notification along with the encoded image, including image width, height and format.
COVERART_PATH_CHANGED
Send the new cover art path for the current playing media.
Signature
COVERART_PATH_CHANGED ()
Parameter | Description |
---|---|
image_path | Path to the new image. |
width | Image width |
height | Image height |
GET_COVERART
Command that comes into Received from Proxy.
Signature
GET_COVERART ()
Example
function GetCoverArt()
if (g_ShowCoverArt == true) then
QueueDockCmd(CMD["GET_COVERART_RAW"], 0, 1, g_imageindex-1, 0, "")
End
end
NEW_COVERART
Send the data information to the UI. This information includes image height, width, format, size (if the image is in .jpg format) and the image path, which is where the image file was written.
Signature
NEW_COVERART ()
Parameter | Description |
---|---|
cover_art | Base64 encoded image. |
width | Image width |
height | Image height |
size | Size of the image in bytes - (needed for JPEG format only) |
format | Image format |
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.
Generic Media Player Capabilities
has_ http_playback
This capability instructs media manager to exclude/include movies with http based locations.
Signature
<has_http_playback></has_http_playback>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_http_playback>true</has_http_playback>
</capabilities>
has_menu
This capability instructs media manager to exclude/include movies with http based locations.
Signature
<has_menu></has_menu>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_menu>true</has_menu>
</capabilities>
has_repeat
Media Player supports repeating current media.
Signature
<has_repeat></has_repeat>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_repeat>true</has_repeat>
</capabilities>
has_search
Media Player supports searching.
Signature
<has_search></has_search>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_search>true</has_search>
</capabilities>
has_shuffle
Media Player supports shuffling.
Signature
<has_shuffle></has_shuffle>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_shuffle>true</has_shuffle>
</capabilities>
has_scan_fwd
Media Player supports forward scanning of media.
Signature
<has_scan_fwd></has_scan_fwd>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_scan_fwd>true</has_scan_fwd>
</capabilities>
has_scan_rev
Media Player supports reverse scanning of media.
Signature
<has_scan_rev></has_scan_rev>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_scan_rev>true</has_scan_rev>
</capabilities>
has_skip_fwd
Media Player supports forward skipping through media.
Signature
<has_skip_fwd></has_skip_fwd>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_skip_fwd>true</has_skip_fwd>
</capabilities>
has_skip_rev
Media Player supports reverse skipping through media.
Signature
<has_skip_rev></has_skip_rev>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_skip_rev>true</has_skip_rev>
</capabilities>
has_pause
Media Player supports pausing media.
Signature
<has_pause></has_pause>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<has_pause>true</has_pause>
</capabilities>
media_labels
Media Player supports multiple ways to label media. This is a dynamic capability and can be defined on a device-by-device basis.
Signature
<media_labels></media_labels>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<media_labels>true</media_labels>
</capabilities>
repeat_modes
Media Player supports multiple media repeat types. This is a dynamic capability and can be defined on a device-by-device basis.
Signature
<repeat_modes></repeat_modes>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<repeat_modes>true</repeat_modes>
</capabilities>
shuffle_modes
Media Player supports multiple media shuffling types. This is a dynamic capability and can be defined on a device-by-device basis.
Signature
<shuffle_modes></shuffle_modes>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<shuffle_modes>true</shuffle_modes>
</capabilities>
allow_audio_pathing
This capability is applicable in the scenario where the AV Switch proxy is included as a secondary proxy to the Generic Media Player Proxy. This is useful when modeling streaming media devices that require minidrivers. Prior to O.S. 3.4.0, the Generic Media Proxy could not successfully pass audio paths when bound to the AV Switch Proxy. Setting this capability to True allow for audio pathing through the Generic Media Player to the AV Switch Proxy.
Signature
<allow_audio_pathing></allow_audio_pathing>
Parameter | Description |
---|---|
bool | true/false |
Returns
None
Example
<capabilities>
<allow_audio_pathing>true</allow_audio_pathing>
</capabilities>
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.
DVD Player Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DOWN
Pulse down navigation.
Name
DOWN ()
Parameters
None
Returns
None
EJECT
Eject disc/tape.
Name
EJECT ()
Parameters
None
Returns
None
EMIT_CODE
Emit IR/Serial code (used by AVGen IR/Serial Proxy).
Name
EMIT_CODE ()
Parameter | Type | Description |
---|---|---|
IRCodeID | INT | ID OF IR Code |
Returns
None
EMIT_MACRO
Emit IR/Serial code macro.
Name
EMIT_MACRO ()
Parameter | Type | Description |
---|---|---|
MacroCodeName | STR | Macro Code Name |
Returns
None
ENTER
Navigate Enter key
Name
Enter ()
Parameters
None
Returns
None
GO_TO_DISC
Select specified disc.
Name
GO_TO_DISC ()
Parameter | Type | Description |
---|---|---|
DiscNUMBER | INT | Disc Number |
Returns
None
GO_TO_DISC_TRACK
Select specified disc and track.
Name
GO_TO_DISC_TRACK ()
Parameter | Type | Description |
---|---|---|
DiscNUMBER | INT | Disc Number |
TrackNUMBER | INT | Track Number |
Returns
None
GO_TO_TRACK
Select specified track.
Name
GO_TO_TRACK ()
Parameter | Type | Description |
---|---|---|
TrackNUMBER | INT | Track Number |
Returns
None
GUIDE
Navigate Guide key.
Name
GUIDE ()
Parameters
None
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LEFT
Pulse left navigation.
Name
LEFT ()
Parameters
None
Returns
None
MENU
Navigate menu.
Name
MENU ()
Parameters
None
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER _4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Returns
`None `
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
OPEN_CLOSE
Open/close disc tray.
Name
OPEN_CLOSE ()
Parameters
None
Returns
None
PAGE_DOWN
Pulse menu Page down.
Name
PAGE_DOWN ()
Parameters
None
Returns
None
PAGE_UP
Pulse menu Page up.
Name
PAGE_UP ()
Parameters
None
Returns
None
PAUSE
Place device in stop state.
Name
PAUSE ()
Parameters
None
Returns
None
PLAY
Place device in a playback state.
Name
PLAY ()
Parameters
None
Returns
None
POUND
Pulse # button.
Name
POUND ()
Parameters
None
Returns
None
PULSE_ASPECT_RATIO
Toggle (cycle though) aspect ratio.
Name
PULSE_ASPECT_RATIO ()
Parameters
None
Returns
None
PVR
Pulse PVR button.
Name
PVR ()
Parameters
None
Returns
None
RECALL
Pulse Recall button.
Name
RECALL ()
Parameters
None
Returns
None
RIGHT
Pulse right navigation button.
Name
RIGHT ()
Parameters
None
Returns
None
SCAN_FWD
Pulse/scan forward within track/chapter.
Name
SCAN_FWD ()
Parameters
None
Returns
None
SCAN_REV
Pulse scan reverse within track/chapter.
Name
SCAN_REV ()
Parameters
None
Returns
None
SET_UP_DOWN_SWAP
Swap page UP/DOWN buttons (used by AVGen)
Name
SET_UP_DOWN_SWAP ()
Parameter | Type | Description |
---|---|---|
SWAPFLAG | BOOL | Ability to swap UP/DOWN buttons. |
Returns
None
SKIP_FWD
Advance to next track/chapter.
Name
SKIP_FWD ()
Parameters
None
Returns
None
SKIP_REV
Seek to previous track/chapter.
Name
SKIP_REV ()
Parameters
None
Returns
None
STAR
Pulse *
button.
Name
STAR ()
Parameters
None
Returns
None
START_DOWN
Initiate down arrow navigation.
Name
START_DOWN ()
Parameters
None
Returns
None
START_LEFT
Pulse left navigation.
Name e
START_LEFT ()
Parameters
None
Returns
None
START_PAGE_DOWN
Start menu Page down.
Name
START_PAGE_DOWN ()
Parameters
None
Returns
None
START_PAGE_UP
Start menu Page up.
Name
START_PAGE_UP ()
Parameters
None
Returns
None
START_PAGE_RIGHT
Initiate right-arrow navigation.
Name
START_RIGHT ()
Parameters
None
Returns
None
START_SCAN_FWD
Initiate scan forward within track/chapter.
Name
START_SCAN_FWD ()
Parameters
None
Returns
None
START_SCAN_REV
Initiate scan forward within track/chapter.
Name
START_SCAN_REV ()
Parameters
None
Returns
None
START_UP
Initiate up-arrow navigation.
Name
START_UP ()
Parameters
None
Returns
None
STOP
Place device in stop state.
Name
STOP ()
Parameters
None
Returns
None
STOP_DOWN
Terminate down-arrow navigation.
Name
STOP_DOWN ()
Parameters
None
Returns
None
STOP_LEFT
Terminate left navigation.
Name
STOP_LEFT ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page down.
Name
STOP_PAGE_DOWN ()
Parameters
None
Returns
None
STOP_PAGE_UP
Stop menu page up.
Name
STOP_PAGE_UP ()
Parameters
None
Returns
None
STOP_RIGHT
Terminate RIGHT navigation.
Name
STOP_RIGHT ()
Parameters
None
Returns
None
STOP_SCAN_FWD
Terminate scan forward within track/chapter.
Name
STOP_SCAN_FWD ()
Parameters
None
Returns
None
STOP_SCAN_REV
Terminate reverse scan within track/chapter.
Name
STOP_SCAN_REV ()
Parameters
None
Returns
None
STOP_UP
Stop menu Page up.
Name
STOP_UP ()
Parameters
None
Returns
None
TV_VIDEO
Toggle TV/video input.
Signature
TV_VIDEO ()
Parameters
None
Returns
None
UP
Pulse up navigation.
Name
UP ()
Parameters
None
Returns
None
Projector Protocol Notifications
AUDIO_PARAMETER_CHANGED
Audio parameter has changed
Name
AUDIO_PARAMETER_CHANGED ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
BALANCE_LEVEL_CHANGED
Selected balance level has changed.
Name
BALANCE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
BASS_LEVEL_CHANGED
Selected bass level has changed
Name
BASS_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
CHANNEL_CHANGED
Selected channel has changed
Name
CHANNEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
ChannelNumnber | INT | Channel value |
OutputBindingID | INT | Output Binding ID |
Returns
None
Usage Note
If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “has feedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has.
A CHANNEL CHANGED
must be issued immediately after the INPUT_CHANGED
in order for the UI to update.
Example
C4:SendToproxy(5002,'INPUTCHANGED' {INPUT=3009,BANDTYPE='FMBand',MINCHANNEL=8750,MAXCHANNEL=10790,CHANNELSPACING=20})
C4:SendToProxy(5002,'CHANNELCHANGED',CHANNEL=10290)
Note that in the example to the right, 5002 is the ProxyBindingID for the Tuner. INPUT 3009 is the ID for the FM Antenna on the 5002 Tuner.
Navigator determines AM/FM/XM with the following rule:
- ID 3000 and 3001 are AM
- ID 3002 and 3003 are FM
INPUT_CHANGED
Selected input source has changed.
Name
INPUT_CHANGED ()
Parameter | Type | Description |
---|---|---|
INPUT | INT | INPUT |
Returns
None
Usage Note
If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “hasfeedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has.
A CHANNEL_CHANGED
must be issued immediately after the INPUT_CHANGED
in order for the UI to update.
Example
C4:SendToproxy(5002,'INPUTCHANGED' {INPUT=3009,BANDTYPE='FMBand',MINCHANNEL=8750,MAXCHANNEL=10790,CHANNELSPACING=20})
C4:SendToProxy(5002,'CHANNELCHANGED',CHANNEL=10290)
Note that in the example to the right, 5002 is the ProxyBindingID for the Tuner. INPUT 3009 is the ID for the FM Antenna on the 5002 Tuner.
Navigator determines AM/FM/XM with the following rule: ID 3000 and 3001 are AM ID 3002 and 3003 are FM
LOUDNESS_CHANGED
Loudness state (On/Off) has changed.
Name
LOUDNESS_CHANGED ()
Parameter | Type | Description |
---|---|---|
LOUDNESS | BOOL | True/False |
Returns
None
MUTE_CHANGED
MUTE state (On/Off) has changed.
Name
MUTE_CHANGED ()
Parameter | Type | Description |
---|---|---|
MUTE | BOOL | True/False |
Returns
None
OFF
Device has turned off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned on.
Name
ON ()
Parameter
None
Returns
None
TREBLE_LEVE _CHANGED
Selected treble level has changed.
Name
TREBLE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
VOLUME_LEVEL_CHANGED
Selected volume level has changed.
Name
VOLUME_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
Projector Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DISCONNECT_OUTPUT
Disconnect (turn off) selected output on device.
Name
DISCONNECT_OUTPUT ()
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
PATH DEV LIST | str | Value of the devices directly upstream in the AV path. |
Returns
None
EMIT_CODE
Emit IR/Serial code (used by AVGen IR/Serial Proxy).
Name
EMIT_CODE ()
Parameter | type | Description |
---|---|---|
IRCodeID | INT | ID OF IR Code |
Returns
None
EMIT_MACRO
Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)
Name
EMIT_MACRO ()
Parameter | Type | Description |
---|---|---|
MacroCodeName | STR | Macro Code Name |
Returns
None
GET_DEFAULT_INPUT
Command sent to the protocol during the proxy initialization. Returns the input designated as the default from the protocol device.
Name
GET_DEFAULT_INPUT ()
Parameters
None
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LOUDNESS_OFF
Turn loudness off.
Name
LOUDNESS_OFF ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_ON
Turn loudness on.
Name
LOUDNESS_ON ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_TOGGLE
Toggle loudness on/off.
Name
LOUDNESS_TOGGLE ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
MUTE_OFF
Turn muting off.
Name
MUTE_OFF ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
MUTE_ON
Turn muting on.
Name
MUTE_ON ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
MUTE_TOGGLE
Toggle muting on/off.
Name
MUTE_TOGGLE ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
PAGE_DOWN
Pulse menu Page down.
Name
PAGE_DOWN ()
Parameters
None
Returns
None
PAGE_UP
Pulse menu Page up.
Name
PAGE_UP ()
Parameters
None
Returns
None
PIP
Pulse menu PIP button..
Name
PIP ()
Parameter | Type | Description |
---|---|---|
MacroCodeName | STR | Macro Code Name |
Returns
None
POUND
Pulse # button.
Name
POUND ()
Parameters
None
Returns
None
PRESET_DOWN
Toggle (cycle down) tuning preset.
Name
PRESET_DOWN ()
Parameters
None
Returns
None
PRESET_UP
Toggle (cycle UP) tuning preset.
Name
PRESET_UP ()
Parameters
None
Returns
None
PULSE_ASPECT_RATIO
Toggle (cycle though) aspect ratio.
Name
PULSE_ASPECT_RATIO ()
Parameters
None
Returns
None
PULSE_BALANCE_DOWN
Pulse balance down (Left)
Name
PULSE_BALNCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BALANCE_UP
Pulse balance up.
Name
PULSE_BALNCE_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PULSE_BASS_DOWN
Pulse bass down (Left)
Name
PULSE_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BASS_UP
Pulse bass up (Right)
Name
PULSE_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_CHANNEL_DOWN
Pulse channel value down.
Name
PULSE_CHANNEL_DOWN ()
Parameters
None
Returns
None
PULSE_CHANNEL_UP
Pulse channel value up.
Name
PULSE_CHANNEL_UP ()
Parameters
None
Returns
None
PULSE_INPUT
Toggle (cycle through) input selection on device.
Name
PULSE_INPUT
Parameters
None
Returns
None
PULSE_TREBLE_DOWN
Pulse treble down.
Name
PULSE_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_TREBLE_UP
Pulse treble up.
Name
PULSE_TREBLE_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PULSE_VOL_DOWN
Pulse volume level down.
Name
PULSE_VOL_DOWN
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_VOL_UP
Pulse volume level up.
Name
PULSE_VOL_UP
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PVR
Pulse PVR button.
Name
PVR ()
Parameters
None
Returns
None
RECALL
Pulse Recall button.
Name
RECALL ()
Parameters
None
Returns
None
SEARCH_DOWN
Pulse tuning search down
Name
SEARCH_DOWN ()
Parameters
None
Returns
None
SEARCH_UP
Pulse tuning search UP
Name
SEARCH_UP ()
Parameters
None
Returns
None
SET_BALANCE
Set balance to a specified position.
Name
SET_BALANCE ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_BALANCE_UP
Set balance to a specified position.
Name
SET_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_BASS_LEVEL
Set bass to a specified level.
Name
SET_BASS_LEVEL
Parameter | Type | Description |
---|---|---|
Output | INT | Output Binding ID |
LEVEL | INT | Bass Level |
Returns
None
SET_DEFAULT_INPUT
Specify the default input selection of device.
Name
SET_DEAFULT_INPUT ()
Parameter | Type | Description |
---|---|---|
InputBindingID | INT | Input Binding ID - should be in the BindingID range below. |
outputBindingID | INT | Optional. Output Binding ID - should be in the BindingID range below. |
Returns
None
Usage Note
- Control Bindings = 1 -> 999
- Video Inputs = 1000 -> 1099
- Video Outputs = 2000 -> 2999
- Audio Inputs = 3000 -> 3099
- Audio Outputs = 4000 -> 4999
- Proxy Bindings = 5000 -> 5999
- Network Bindings = 6000 -> 6999
- Room Bindings = 7000 -> 7999
- Power Manager = 8000 -> 8999
SET_INPUT
Specify the input selection of device.
Name
SET_INPUT ()
Parameter | Type | Description |
---|---|---|
Input Binding ID | int | Binding ID in the BindingID range below. |
PREV DEV LIST | str | Value of the device directly upstream in the AV path. |
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
Returns
None
Usage Note
- Control Bindings = 1 -> 999
- Video Inputs = 1000 -> 1099
- Video Outputs = 2000 -> 2999
- Audio Inputs = 3000 -> 3099
- Audio Outputs = 4000 -> 4999
- Proxy Bindings = 5000 -> 5999
- Network Bindings = 6000 -> 6999
- Room Bindings = 7000 -> 7999
- Power Manager = 8000 -> 8999
SET_LOUDNESS
Turn loudness on.
Name
SET_LOUDNESS ()
Parameter | Typen | Description |
---|---|---|
Level | INT | Level Value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_PRESET
Select specified tuning preset.
Name
SET_PRESET ()
Parameter | Type | Description |
---|---|---|
PresetNum | INT | Preset Number |
Returns
None
SET_TREBLE_LEVEL
Set treble to a specified level.
Name
SET_TREBLE_LEVEL ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_UP_DOWN_SWAP
Swap page UP/DOWN buttons (used by AVGen). TRUE
to enable swap, FALSE
to disable.
Name
POUND ()
Parameter | Type | Description |
---|---|---|
SWAPFLAG | BOOL | Ability to swap UP/DOWN buttons. |
Returns
None
SET_VOLUME_LEVEL
Set volume to a specified level.
Name
SET_VOLUME_LEVEL ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_VOL_UP
Begin ramping volume up.
Name
SET_VOL_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STAR
Pulse *
button.
Name
STAR ()
Parameters
None
Returns
None
START_BALANCE_DOWN
Start ramping balance down (left).
Name
START_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_BALANCE_UP
Start ramping balance UP (right).
Name
START_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_BASS_UP
Start ramping bass up.
Name
START_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_CH_DOWN
Start ramping channel down.
Name
START_CH_DOWN ()
Parameters
None
Returns
None
START_PAGE_DOWN
Start menu Page down.
Name
START_PAGE_DOWN ()
Parameters
None
Returns
None
START_PAGE_UP
Start menu Page up.
Name
START_PAGE_UP ()
Parameters
None
Returns
None
START_SEARCH_DOWN
Begin tuning search down.
Name
START_SEARCH_DOWN ()
Parameters
None
Returns
None
START_SEARCH_UP
Begin tuning search UP.
Name
START_SEARCH_UP ()
Parameters
None
Returns
None
START_VOL_DOWN
Start ramping volume down.
Name
START_VOL_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_PAGE_RIGHT
Initiate right-arrow navigation.
Signature
START_RIGHT ()
Parameters
None
Returns
None
START_SCAN_FWD
Initiate scan forward within track/chapter.
Name
START_SCAN_FWD ()
Parameters
None
Returns
None
START_SCAN_REV
Initiate scan backwards within track/chapter.
Name
START_SCAN_REV ()
Parameters
None
Returns
None
START_UP
Initiate up-arrow navigation.
Name
START_UP ()
Parameters
None
Returns
None
STOP_BALANCE_DOWN
Start ramping balance.
Name
STOP_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BALANCE_UP
Stop ramping balance up.
Name
STOP_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass
Name
STOP_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_PAGE_DOWN
Stop menu page down.
Name
STOP_PAGE_DOWN ()
Parameters
None
Returns
None
STOP_PAGE_UP
Stop menu page up.
Signature
STOP_PAGE_UP ()
Parameters
None
Returns
None
TV_VIDEO
Toggle TV/video input.
Signature
TV_VIDEO ()
Parameters
None
Returns
None
Receiver Capabilities
audio_consumer_count
Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_consumer_count></audio_consumer_count>
Parameter | Description |
---|---|
int | Number of audio consumers. |
Example
<capabilities>
<audio_consumer_count>8</audio_consumer_count>
</capabilities>
audio_provider_count
Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_provider_count></audio_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<audio_provider_count>8</audio_provider_count>
</capabilities>
can_downclass
Specifies if the A/V switch can down convert. For example: S-Video -> Composite
Signature
<can_downclass></can_downclass>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_downclass>true</can_downclass>
</capabilities>
can_switch
Device specific capability that when set to True designates switching capability on the receiver.
Signature
<can_switch></can_switch>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_switch>true</can_switch>
</capabilities>
can_switch_separately
Device specific capability that must be set to True to in order for an AV Switch’s Composer Pro interface reflecting independent audio and video signal switching.
Signature
<can_switch_separately></can_switch_separately>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_switch_separately>true</can_switch_separately>
</capabilities>
Usage Note
This capability is not related with the requires separate switching capability. A setting of True or False will have no impact on requires separate switching.
can_upclass
Specifies if the A/V switch can up convert. For example: Composite -> S-Video
Signature
<can_upclass></can_upclass>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_upclass>true</can_upclass>
</capabilities>
has_audio_signal_sense
Specifies AV switching is capable of sensing audio on an input. This is useful in triggering programming in ComposerPro based on the this setting.
Signature
<has_audio_signal_sense></has_audio_signal_sense>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_audio_signal_sense>true</has_audio_signal_sense>
</capabilities>
has_discrete_balance_control
Capable of directly specifying a balance setting.
Signature
<has_discrete_balance_control></has_discrete_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>
has_discrete_bass_control
Capable of directly specifying a bass setting.
Signature
<has_discrete_bass_control></has_discrete_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>
has_discrete_loudness_control
Capable of directly specifying a loudness setting.
Signature
<has_discrete_loudness_control></has_discrete_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>
has_discrete_mute_control
Capable of directly specifying mute ON or OFF setting.
Signature
<has_discrete_ mute_control></has_discrete_ mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>
has_discrete_treble_control
Capable of directly specifying a treble setting.
Signature
<has_discrete_treble_control></has_discrete_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>
has_discrete_volume_control
Capable of directly specifying a volume setting.
Signature
<has_discrete_volume_control></has_discrete_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>
has_discrete_loudness_control
Capable of handling ON/OFF loudness control.
Signature
<has_discrete_loudness_control></has_discrete_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>
has_toggle_mute_control
Capable of handling ON/OFF mute control.
Signature
<has_toggle_mute_control></has_toggle_mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_toggle_mute_control>true</has_toggle_mute_control>
</capabilities>
has_up_down_balance_control
Capable of directly specifying a balance setting.
Signature
<has_up_down_balance_control></has_up_down_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_balance_control>true</has_up_down_balance_control>
</capabilities>
has_up_down_bass_control
Capable of directly specifying a bass setting.
Signature
<has_up_down_bass_control></has_up_down_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_bass_control>true</has_up_down_bass_control>
</capabilities>
has_up_down_treble_control
Capable of directly specifying a treble setting.
Signature
<has_up_down_treble_control></has_up_down_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_treble_control>true</has_up_down_treble_control>
</capabilities>
has_up_down_volume_control
Has capability of handling volume UP and DOWN adjustments.
Signature
<has_up_down_volume_control></has_up_down_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_volume_control>true</has_up_down_volume_control>
</capabilities>
has_video_signal_sense
Specifies AV switching is capable of sensing video on an input. This is useful in triggering programming in ComposerPro based on the this setting.
Signature
<has_video_signal_sense></has_video_signal_sense>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_video_signal_sense>true</has_video_signal_sense>
</capabilities>
video_consumer_count
Count of number of video consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<video_consumer_count></video_consumer_count>
Parameter | Description |
---|---|
int | Number of video consumers. |
Example
<capabilities>
<video_consumer_count>8</video_consumer_count>
</capabilities>
video_provider_count
Count of number of video providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<video_provider_count></video_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<video_provider_count>8</video_provider_count>
</capabilities>
Receiver Protocol Notifications
AUDIO_PARAMETER_CHANGED
Audio parameter has changed
Name
AUDIO_PARAMETER_CHANGED ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
BALANCE_LEVEL_CHANGED
Selected balance level has changed.
Name
BALANCE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
BASS_ LEVEL_CHANGED
Selected bass level has changed
Name
BASS_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | int | Level |
OUTPUT | int | Output Binding ID |
Returns
None
INPUT_OUTPUT_CHANGED
Selected inputs & outputs have changed.
Name
INPUT_OUTPUT_CHANGED ()
Parameter | Type | Description |
---|---|---|
InputBindingID | INT | Input Binding ID |
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_CHANGED
Loudness state (On/Off) has changed.
Name
LOUDNESS_CHANGED ()
Parameter | Type | Description |
---|---|---|
LOUDNESS | BOOL | True/False |
Returns
None
MUTE_CHANGED
MUTE state (On/Off) has changed.
Name
MUTE_CHANGED ()
Parameter | Type | Description |
---|---|---|
MUTE | BOOL | True/False |
Returns
None
OFF
Device has turned off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned on.
Name
ON ()
Parameter
None
Returns
None
TREBLE_LEVEL_CHANGED
Selected treble level has changed.
Name
TREBLE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
VOLUME_ LEVEL_ CHANGED
Selected volume level has changed.
Name
VOLUME_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Level |
OUTPUT | INT | Output Binding ID |
Returns
None
SURROUND_MODE_ CHANGED
Surround mode setting has changed.
Name
SURROUND_MODE_CHANGED ()
Parameter | Type | Description |
---|---|---|
Output | INT | Output Binding ID value |
SURROUND MODE | INT | Surround Mode ID value |
Returns
None
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values as well as information on favoriting and blocking connection classes, please see the Connections section of the DriverWorks Fundamentals Guide.
Receiver Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
CONNECT_OUTPUT
Numerical value of the output. Switch the output to passed ID.
Name
CONNECT OUTPUT ()
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
PATH DEV LIST | str | Value of the device directly upstream in the AV path. |
Returns
None
Usage Note
Preface band width tuner capability must be used in the driver for the CONNECT OUTPUT command to be set.
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DISCONNECT_OUTPUT
Disconnect (turn off) selected output on device.
Name
DISCONNECT_OUTPUT ()
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
PREV DEV LIST | str | Value of the device directly upstream in the AV path. |
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LOUDNESS_OFF
Turn loudness off.
Name
LOUDNESS_OFF ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_ON
Turn loudness on.
Name
LOUDNESS_ON ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_ON
Toggle loudness on/off.
Name
LOUDNESS_TOGGLE ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
MUTE_OFF
Toggle loudness on/off.
Name
MUTE_OFF ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
MUTE_ON
Turn muting on.
Name
MUTE_ON ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
MUTE_TOGGLE
Toggle muting on/off.
Name
MUTE_TOGGLE ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameter | Type | Description |
---|---|---|
CONNECT | INT | Turns the device on. |
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
PAGE_DOWN
Pulse menu Page down.
Name
PAGE_DOWN ()
Parameters
None
Returns
None
PAGE_UP
Pulse menu Page up.
Signature
PAGE_UP ()
Parameters
None
Returns
None
POUND
Pulse ‘#’ button
Name
POUND ()
Parameters
None
Returns
None
PULSE_BALANCE_DOWN
Pulse balance down.
Name
PULSE_BALNCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BALANCE_UP
Pulse balance up
Name
PULSE_BALNCE_RIGHT ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BASS_DOWN
Pulse bass down.
Name
PULSE_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BASS_UP
Pulse bass up.
Name
PULSE_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_INPUT
Toggle (cycle through) input selection on device.
Name
PULSE_INPUT
Parameters
None
Returns
None
PULSE_SUR_UP
Toggle (cycle through) surround mode presets on device.
Name
PULSE_SUR_UP
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_VOL_DOWN
Pulse volume level down.
Name
PULSE_VOL_DOWN
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PULSE_VOL_UP
Pulse volume level up.
Name
PULSE_VOL_UP
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_TREBLE_DOWN
Pulse treble down.
Name
PULSE_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_TREBLE_UP
Pulse treble up.
Name
PULSE_TREBLE_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
RECALL
Pulse Recall button
Name
RECALL ()
Parameters
None
Returns
None
RIGHT
Pulse RIGHT Navigation.
Name
RIGHT ()
Parameters
None
Returns
None
SET_BALANCE
Set balance to a specified position.
Name
SET_BALANCE ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_BASS_LEVEL
Set bass to a specified level.
Name
SET_BASS_LEVEL
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
SET_INPUT
Specify input selection of device.
Name
SET_INPUT ()
Parameter | Type | Description |
---|---|---|
Input Binding ID | int | Binding ID in the BindingID range below. |
PREV DEV LIST | str | Value of the device directly upstream in the AV path. |
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
Returns
None
Usage Note
- Control Bindings = 1 -> 999
- Video Inputs = 1000 -> 1099
- Video Outputs = 2000 -> 2999
- Audio Inputs = 3000 -> 3099
- Audio Outputs = 4000 -> 4999
- Proxy Bindings = 5000 -> 5999
- Network Bindings = 6000 -> 6999
- Room Bindings = 7000 -> 7999
- Power Manager = 8000 -> 8999
SET_OUTPUT_INPUT
Specify input and output selection of device.
Name
SET_OUTPUT_INPUT ()
Parameter | Description |
---|---|
int | Input Binding ID |
int | Output Binding ID |
Returns
None
SET_SURROUND_MODE
Select specified surround mode preset on device.
Name
SET_SURROUND_MODE ()
Parameter | Type | Description |
---|---|---|
SurroundMode | INT | Surround Mode value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_TREBLE_LEVEL
Set treble to a specified level.
Name
SET_TREBLE_LEVEL ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_VOL_DOWN
Start ramping volume up.
Name
SET_VOL_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
SET_VOLUME_LEVEL
Set volume to a specified level.
Name
SET_VOLUME_LEVEL ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
STAR
Pulse *
button
Name
STAR ()
Parameters
None
Returns
None
START_BALANCE_DOWN
Start ramping balance down (left).
Name
START_BALANCE_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
START_BALANCE_UP
Start ramping balance up (right).
Name
START_BALANCE_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
START_BASS_DOWN
Start ramping bass down.
Name
START_BASS_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
START_ BASS_UP
Start ramping bass up.
Name
START_BASS_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
START_CH_DOWN
Start ramping channel down.
Name
START_CH_DOWN ()
Parameter
None
Returns
None
START_CH_UP
Start ramping channel up.
Name
START_CH_UP ()
Parameter
None
Returns
None
START_LEFT
Pulse left navigation.
Name
START_LEFT ()
Parameters
None
Returns
None
START_PAGE_DOWN
Start menu Page down.
Name
START_PAGE_DOWN ()
Parameters
None
Returns
None
START_PAGE_UP
Start menu Page up.
Name
START_PAGE_UP ()
Parameters
None
Returns
None
START_RIGHT
Initiate right arrow navigation.
Name
START_RIGHT ()
Parameters
None
Returns
None
START_TREBLE_DOWN
Start ramping treble down.
Name
START_TREBLE_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
START_TREBLE_UP
Start ramping treble up.
Name
START_TREBLE_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
START_VOL_DOWN
Start ramping volume down.
Name
START_VOL_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
START_VOL_UP
Start ramping volume up.
Name
START_VOL_UP ()
Parameter | Description |
---|---|
int | Volume Level |
int | Output Binding ID |
Returns
None
STOP_BALANCE_DOWN
Start ramping balance.
Name
STOP_BALANCE_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass
Name
STOP_BALANCE_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass
Name
STOP_BASS_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
STOP_BASS_UP
Stop ramping bass
Name
STOP_BASS_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
STOP_CH_UP
StOP ramping channel up.
Name
STOP_CH_UP ()
Parameter
None
Returns
None
STOP_CH_DOWN
Stop ramping channel down.
Name
STOP_CH_DOWN ()
Parameter
None
Returns
None
STOP_LEFT
Stop left navigation.
Name
STOP_LEFT ()
Parameters
None
Returns
None
STOP_RIGHT
Stop right arrow navigation.
Name
STOP_RIGHT ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page down.
Name
STOP_PAGE_DOWN ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page up.
Name
STOP_PAGE_UP ()
Parameters
None
Returns
None
STOP_TREBLE_DOWN
Stop ramping the treble down
Name
STOP_TREBLE_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
STOP_TREBLE_UP
Stop ramping the treble up.
Name
STOP_TREBLE_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
STOP_VOL_DOWN
Stop ramping the volume down
Name
STOP_VOL_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
STOP_VOL_UP
Stop ramping the volume up.
Name
STOP_VOL_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
@ _6-DOWN
DOWN
PULSE DOWN NAVIGATION
Name
DOWN ()
Parameter
None
Returns
None
Satellite Receiver Capabilities
audio_consumer_count
Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_consumer_count></audio_consumer_count>
Parameter | Description |
---|---|
int | Number of audio consumers. |
Example
<capabilities>
<audio_consumer_count>8</audio_consumer_count>
</capabilities>
audio_provider_count
Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_provider_count></audio_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<audio_provider_count>8</audio_provider_count>
</capabilities>
can_downclass
Specifies if the A/V switch can down convert. For example: S-Video -> Composite
Signature
<can_downclass></can_downclass>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_downclass>true</can_downclass>
</capabilities>
can_switch_separately
Device specific capability that must be set to True to in order for an AV Switch’s Composer Pro interface reflecting independent audio and video signal switching.
Signature
<can_switch_separately></can_switch_separately>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_switch_separately>true</can_switch_separately>
</capabilities>
Usage Note
This capability is not related with the requires separate switching capability. A setting of True or False will have no impact on requires separate switching.
can_switch
Device specific capability that when set to True designates switching capability on the receiver.
Signature
<can_switch></can_switch>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_switch>true</can_switch>
</capabilities>
can_upclass
Specifies if the A/V switch can up convert. For example: Composite -> S-Video
Signature
<can_upclass></can_upclass>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<can_upclass>true</can_upclass>
</capabilities>
has_audio_signal_sense
Specifies AV switching is capable of sensing audio on an input. This is useful in triggering programming in ComposerPro based on the this setting.
Signature
<has_audio_signal_sense></has_audio_signal_sense>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_audio_signal_sense>true</has_audio_signal_sense>
</capabilities>
has_discrete_balance_control
Capable of directly specifying a balance setting.
Signature
<has_discrete_balance_control></has_discrete_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>
has_discrete_bass_control
Capable of directly specifying a bass setting.
Signature
<has_discrete_bass_control></has_discrete_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>
has_discrete_loudness_control
Capable of directly specifying a loudness setting.
Signature
<has_discrete_loudness_control></has_discrete_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>
has_discrete_mute_control
Capable of directly specifying mute ON or OFF setting.
Signature
<has_discrete_ mute_control></has_discrete_ mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>
has_discrete_treble_control
Capable of directly specifying a treble setting.
Signature
<has_discrete_treble_control></has_discrete_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>
has_discrete_volume_control
Capable of directly specifying a volume setting.
Signature
<has_discrete_volume_control></has_discrete_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>
has_toggle_loudness_control
Capable of toggling ON/OFF loudness control.
Signature
<has_toggle_loudness_control></has_toggle_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_toggle_loudness_control>true</has_toggle_loudness_control>
</capabilities>
has_toggle_mute_control
Capable of handling ON/OFF mute control.
Signature
<has_toggle_mute_control></has_toggle_mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_toggle_mute_control>true</has_toggle_mute_control>
</capabilities>
has_up_down_balance control
Capable of directly specifying a balance setting.
Signature
<has_up_down_balance_control></has_up_down_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_balance_control>true</has_up_down_balance_control>
</capabilities>
has_up_down_bass_control
Capable of directly specifying a bass setting.
Signature
<has_up_down_bass_control></has_up_down_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_bass_control>true</has_up_down_bass_control>
</capabilities>
has_up_down_treble_control
Capable of directly specifying a treble setting.
Signature
<has_up_down_treble_control></has_up_down_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_treble_control>true</has_up_down_treble_control>
</capabilities>
has_up_down_volume_control
Has capability of handling volume UP and DOWN adjustments.
Signature
<has_up_down_volume_control></has_up_down_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_up_down_volume_control>true</has_up_down_volume_control>
</capabilities>
has_video_signal_sense
Specifies AV switching is capable of sensing video on an input. This is useful in triggering programming in ComposerPro based on the this setting.
Signature
<has_video_signal_sense></has_video_signal_sense>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_video_signal_sense>true</has_video_signal_sense>
</capabilities>
video_consumer_count
Count of number of vidoe consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<video_consumer_count></video_consumer_count>
Parameter | Description |
---|---|
int | Number of video consumers. |
Example
<capabilities>
<video_consumer_count>8</video_consumer_count>
</capabilities>
video_provider_count
Count of number of video providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<video_provider_count></video_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<video_provider_count>8</video_provider_count>
</capabilities>
Satellite Receiver Protocol Notifications
AUDIO_PARAMETER_CHANGED
Audio parameter has changed
Name
AUDIO_PARAMETER_CHANGED ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID value |
Returns
None
BALANCE_LEVEL_CHANGED
Selected balance level has changed.
Name
BALANCE_LEVEL_CHANGED ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
BASS_LEVEL_CHANGED
Selected bass level has changed
Name
BASS_LEVEL_CHANGED ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
INPUT_OUTPUT_CHANGED
Notification indicating that the input or output binding has changed.
Name
INPUT_OUTPUT_CHANGED ()
Parameter | Type | Description |
---|---|---|
OUTPUT | INT | OutputBindingID |
INPUT | INT | Input Binding ID |
Returns
None
LOUDNESS_CHANGED
Loudness state (On/Off) has changed.
Name
LOUDNESS_CHANGED ()
Parameter | Type | Description |
---|---|---|
LOUDNESS | BOOL | True/False |
Output indingID | INT | Output Binding ID value |
Returns
None
MUTE_CHANGED
MUTE state (On/Off) has changed.
Name
MUTE_CHANGED ()
Parameter | Type | Description |
---|---|---|
output | INT | Output Binding ID |
MUTE | BOOL | True/False |
Returns
None
OFF
Device has turned off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned on.
Name
ON ()
Parameter
None
Returns
None
TREBLE_LEVEL_CHANGED
Selected treble level has changed.
Name
TREBLE_LEVEL_CHANGED ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
VOLUME_LEVEL_CHANGED
Selected volume level has changed.
Name
VOLUME_LEVEL_CHANGED ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
SURROUND_MODE_CHANGED
Surround mode setting has changed.
Name
SURROUND_MODE_CHANGED ()
Parameter | Type | Description |
---|---|---|
output | INT | Output Binding ID |
SURROUND MODE | INT | Surround Mode ID value |
Returns
None
Satellite Receiver Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DISCONNECT_OUTPUT
Disconnect (turn off) selected output on device.
Name
DISCONNECT_OUTPUT ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
DOWN
PULSE DOWN NAVIGATION
Name
DOWN ()
Parameter
None
Returns
None
EMIT_CODE
Emit IR/Serial code.
Name
EMIT_CODE ()
Parameter | Type | Description |
---|---|---|
IRCodeID | INT | IR Code value |
Returns
None
EMIT_MACRO
Emit IR/Serial code macro (used by AVGen IR/Serial Proxy)
Name
EMIT_MACRO ()
Parameter | Type | Description |
---|---|---|
s MacroCodeName | STR | Macro Code Name |
Returns
None
ENTER
Navigate Enter key
Name
Enter ()
Parameters
None
Returns
None
GUIDE
Pulse info button.
Name
GUIDE ()
Parameters
None
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LEFT
Pulse left navigation button.
Name
LEFT ()
Parameters
None
Returns
None
LOUDNESS_OFF
Turn loudness off.
Name
LOUDNESS_OFF ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_ON
Turn loudness on.
Name
LOUDNESS_ON ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
LOUDNESS_TOGGLE
Toggle loudness on/off.
Name
LOUDNESS_TOGGLE ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
MUTE_OFF
Turn muting off.
Name
MUTE_OFF ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
MUTE_ON
Turn muting on.
Name
MUTE_ON ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
MUTE_TOGGLE
Toggle muting on/off.
Name
MUTE_TOGGLE ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
OPEN_CLOSE
Open/Close disc tray.
Name
OPEN_CLOSE ()
Parameters
None
PAGE_DOWN
Pulse menu Page down.
Name
PAGE_DOWN ()
Parameters
None
Returns
None
PAGE_UP
Pulse menu Page up.
Name
PAGE_UP ()
Parameters
None
Returns
None
Pause
Place device in pause state.
Name
PAUSE ()
Parameters
None
Returns
None
PIP
Pulse menu PIP button.
Name
PIP ()
Parameter | Type | Description |
---|---|---|
MacroCodeName | STR | Name of Macro Code |
Returns
None
PLAY
Place device in a playback state.
Name
PLAY ()
Parameters
None
Returns
None
POUND
Pulse ‘#’ button
Name
POUND ()
Parameters
None
Returns
None
PRESET_DOWN
Toggle (cycle down) tuning preset
Name
PRESET_DOWN ()
Parameters
None
Returns
None
PRESET_UP
Toggle (cycle up) tuning preset
Name
PRESET_UP ()
Parameters
None
Returns
None
PULSE_ASPECT_RATIO
Toggle (cycle though) aspect ratio.
Name
PULSE_ASPECT_RATIO ()
Parameters
None
Returns
None
PULSE_BALANCE_DOWN
Pulse balance down (Left)
Name
PULSE_BALNCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BALANCE_UP
Pulse balance up (Right)
Name
PULSE_BALNCE_RIGHT ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PULSE_BASS_DOWN
Pulse bass down (Left)
Name
PULSE_BASS_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PULSE_ BASS_UP
Pulse bass up (Right)
Name
PULSE_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_CHANNEL_DOWN
Pulse channel value down.
Name
PULSE_CHANNEL_DOWN ()
Parameters
None
Returns
None
PULSE_CHANNEL_UP
Pulse channel value up.
Name
PULSE_CHANNEL_UP ()
Parameters
None
Returns
None
PULSE_INPUT
Toggle (cycle through) input selection on device.
Name
PULSE_INPUT
Parameters
None
Returns
None
PULSE_TREBLE_DOWN
Pulse treble down.
Name
PULSE_TREBLE_DOWN ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PULSE_TREBLE_UP
Pulse treble up.
Name
PULSE_TREBLE_UP ()
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PULSE_VOL_DOWN
Pulse volume level down.
Name
PULSE_VOL_DOWN
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
PVR
Pulse PVR button.
Name
PVR ()
Parameters
None
Returns
None
PULSE_VOL_UP
Pulse volume level up.
Name
PULSE_VOL_UP
Parameter | Description |
---|---|
int | Output Binding ID |
Returns
None
RECALL
Pulse Recall button
Name
RECALL ()
Parameters
None
Returns
None
RIGHT
Pulse RIGHT NAVIGATION
Name
RIGHT ()
Parameters
None
Returns
None
SCAN_FWD
Pulse/scan forward within track/chapter.
Name
SCAN_FWD ()
Parameters
None
Returns
None
SCAN_REV
Pulse scan reverse within track/chapter.
Name
SCAN_REV ()
Parameters
None
Returns
None
SEARCH_DOWN
Pulse tuning search down
Name
SEARCH_DOWN ()
Parameters
None
Returns
None
SEARCH_UP
Pulse tuning search UP
Name
SEARCH_UP ()
Parameters
None
Returns
None
SET_BALANCE
Set balance to a specified position.
Name
SET_BALANCE ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_BALANCE_UP
Set balance to a specified position.
Name
SET_BALANCE ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_BASS_LEVEL
Set bass to a specified level.
Name
SET_BASS_LEVEL
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_CHANNEL
Tune device to the specified channel.
Name
SET_CHANNEL ()
Parameter | Type | Description |
---|---|---|
CHANNEL | STR | Channel value in string format. |
Returns
None
Example
The examples to the right detail the table of information that is received from the proxy when a channel is selected:
FM:
ReceivedFromProxy: SET_CHANNEL
BindingID 5002
CHANNEL 96.3
INPUT 3028
OUTPUT 0
AM:
ReceivedFromProxy: SET_CHANNEL
INPUT 3027
BindingID 5002
CHANNEL 1100
INPUT 3027
OUTPUT 0
In the FM example, channel 96.3 has been selected in the tuner protocol. The 96.3 value is passed into the data table as a string.
It is important to note that if the bandwidth type (AM, FM) is not provided (and the proxy in question is not TV) a manner in which to identify the bandwidth type will need to be developed. An example of this code follows:
if tParams['BANDTYPE'] == nil then
if (string.find(tParams['CHANNEL'],"%p") ~= nil) then
tParams['BANDTYPE'] = 'FM'
local ChannelLen = string.len(tParams['CHANNEL'] )
local ChannelFix = string.sub(tParams['CHANNEL'],1,ChannelLen-2) .. '.' .. string.sub(tParams['CHANNEL'],ChannelLen-1,ChannelLen-1)
tParams ['CHANNEL'] = ChannelFix
else
tParams['BANDTYPE'] = 'AM'
end
end
SET_LOUDNESS
Turn loudness on.
Name
SET_LOUDNESS ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
SET_OUTPUT_INPUT
Specify input and output selection of device.
Name
SET_OUTPUT_INPUT ()
Parameter | Type | Description |
---|---|---|
InputBindingID | INT | Input Binding ID |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_UP_DOWN_SWAP
Swap page UP/DOWN buttons (used by AVGen). TRUE
to enable swap, FALSE
to disable.
Name
POUND ()
Parameter | Type | Description |
---|---|---|
SWAPFLAG | BOOL | True/False |
Returns
None
SET_VOLUME_LEVEL
Set volume to a specified level.
Name
SET_VOLUME_LEVEL ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID value |
Returns
None
SET_PRESET
Set specified tuning preset
Name
SET_PRESET ()
Parameter | Type | Description |
---|---|---|
PresetNum | INT | Preset Number |
Returns
None
SET_TREBLE_LEVEL
Set treble to a specified level.
Name
SET_TREBLE_LEVEL ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level |
Output Binding ID | INT | Output Binding ID |
Returns
None
SKIP_FWD
Advance to next track/chapter.
Name
SKIP_FWD ()
Parameters
None
Returns
None
STAR
Pulse *
button
Name
STAR ()
Parameters
None
Returns
None
START_BALANCE_DOWN
Start ramping balance down (left).
Name
START_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID value |
Returns
None
START_BALANCE_UP
Start ramping balance up (right).
Name
START_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_BASS_DOWN
Start ramping bass down.
Name
START_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID value |
Returns
None
START_BASS_UP
Start ramping bass up.
Name
START_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_CHANNEL_UP
Start ramping channel up.
Name
START_CHANNEL_UP ()
Parameter
None
Returns
None
START_DOWN
Start down NAVIGATION.
Name
START_DOWN ()
Parameters
None
Returns
None
START_LEFT
Pulse left navigation.
Name
START_LEFT ()
Parameters
None
Returns
None
START_PAGE_DOWN
Start menu Page down.
Name
START_PAGE_DOWN ()
Parameters
None
Returns
None
START_PAGE_UP
Start menu Page up.
Name
START_PAGE_UP ()
Parameters
None
Returns
None
START_RIGHT
Initiate right arrow navigation.
Name
START_RIGHT ()
Parameters
None
Returns
None
START_SCAN_FWD
Initiate scan forward within track/chapter.
Name
START_SCAN_FWD ()
Parameters
None
Returns
None
START_SCAN_REV
Initiate scan backward within track/chapter.
Name
START_SCAN_REV ()
Parameters
None
Returns
None
START_SEARCH_DOWN
Initiate tuning search down
Name
START_SEARCH_DOWN ()
Parameters
None
Returns
None
START_SEARCH_UP
Initiate tuning search up.
Name
START_SEARCH_UP ()
Parameters
None
Returns
None
START_TREBLE_DOWN
Start ramping treble down.
Name
START_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_TREBLE_UP
Start ramping treble up.
Name
START_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_VOL_DOWN
Start ramping volume down.
Name
START_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_SCAN_REV
Stop scan forward within track/chapter.
Name
STOP_SCAN_REV ()
Parameters
None
Returns
None
START_UP
Initiate up arrow navigation.
Name
START_UP ()
Parameters
None
Returns
None
STOP_BALANCE_DOWN
Start ramping balance down.
Name
STOP_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass down
Name
STOP_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BALANCE_UP
Stop ramping balance up.
Name
STOP_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BASS_UP
Stop ramping bass up.
Name
STOP_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_CHANNEL_UP
Stop ramping channel up.
Name
STOP_CHANNEL_UP ()
Parameter
None
Returns
None
STOP_LEFT
Stop left navigation.
Name
STOP_LEFT ()
Parameters
None
Returns
None
STOP_RIGHT
Stop right arrow navigation.
Name
STOP_RIGHT ()
Parameters
None
Returns
None
STOP_SCAN_FWD
Stop scan forward within track/chapter.
Name
STOP_SCAN_FWD ()
Parameters
None
Returns
None
STOP_SEARCH_DOWN
Stop tuning search down
Name
STOP_SEARCH_DOWN ()
Parameters
None
Returns
None
STOP_SEARCH_UP
Stop tuning search UP
Name
STOP_SEARCH_UP ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page down.
Name
STOP_PAGE_DOWN ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page up.
Name
STOP_PAGE_UP ()
Parameters
None
Returns
None
STOP_TREBLE_DOWN
Stop ramping the treble down
Name
STOP_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_TREBLE_UP
Stop ramping the treble up.
Name
STOP_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_UP
Stop up arrow navigation.
Name
STOP_UP ()
Parameters
None
Returns
None
STOP_VOL_DOWN
Stop ramping the volume down
Name
STOP_VOL_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_VOL_UP
Stop ramping the volume up.
Name
STOP_VOL_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
TV_VIDEO
Toggle TV/video input.
Name
TV_VIDEO ()
Parameters
None
Returns
None
TUNE_DOWN
Toggle (cycle down) frequency or channel
Name
TUNE_DOWN ()
Parameters
None
Returns
None
TUNE_UP
Toggle (cycle UP) frequency or channel
Name
TUNE_UP ()
Parameters
None
Returns
None
STAR
Pulse up button.
Name
UP ()
Parameters
None
Returns
None
Tuner Capabilities
audio_consumer_count
Count of number of audio consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_consumer_count></audio_consumer_count>
Parameter | Description |
---|---|
int | Number of audio consumers. |
Example
<capabilities>
<audio_consumer_count>8</audio_consumer_count>
</capabilities>
audio_provider_count
Count of number of audio providers (outputs) of the device. This value must match the number of connections in the driver.
Signature
<audio_provider_count></audio_provider_count>
Parameter | Description |
---|---|
int | Number of audio providers. |
Example
<capabilities>
<audio_provider_count>8</audio_provider_count>
</capabilities>
has_channel_up_down
Tuner can cycling up or down for valid channels
Signature
<has_channel_up_down></has_channel_up_down>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_channel_up_down>true</has_channel_up_down>
</capabilities>
has_discrete_channel_select
Capability of directly selecting specified channel.
Signature
<has_discrete_channel_select></has_ discrete_channel_select>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_channel_select>true</has_discrete_channel_select>
</capabilities>
has_discrete_input_select
Capability of directly selecting specified input.
Signature
<has_discrete_input_select></has_ discrete_input_select>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_input_select>true</has_discrete_input_select>
</capabilities>
has_discrete_preset
Capable of directly selecting from a preset list.
Signature
<has_discrete_preset></has_discrete_preset>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_preset>true</has_discrete_preset>
</capabilities>
has_feedback
Device has the ability to report back the tuner channel. Required so the Tuner channel can be displayed through navigator.
Signature
<has_feedback></has_feedback>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_feedback>true</has_feedback>
</capabilities>
has_provider_count
Count of number of video providers (outputs) of the device.
Signature
<has_provider_count></has_provider_count>
Parameter | Description |
---|---|
int | Number of video providers. |
Example
<capabilities>
<has_provider_count>8</has_provider_count>
</capabilities>
has_preset_up_down
Tuner can cycle up or down through a preset list.
Signature
<has_preset_up_down></has_preset_up_down>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_preset_up_down>true</has_preset_up_down>
</capabilities>
has_toad_input_select
Capability of toggling through inputs
Signature
<has_toad_input_select></has_toad_input_select>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_toad_input_select>true</has_toad_input_select>
</capabilities>
has_tune_ up_down
Tuner can cycle up or down through tuning frequencies or channels
Signature
<has_tune_up_down></has_tune_up_down>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_tune_up_down>true</has_tune_up_down>
</capabilities>
preset_count
Number of Tuner presets available.
Signature
<preset_count></preset_count>
Parameter | Description |
---|---|
int | Number of Presets |
Example
<capabilities>
<preset_count>6</preset_count>
</capabilities>
selection_delay
Delay time in milliseconds before new tuner selection is online.
Signature
<selection_delay></selection_delay>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<selection_delay>true</selection_delay>
</capabilities>
video_consumer_count
Count of number of video consumers (inputs) of the device. This value must match the number of connections in the driver.
Signature
<video_consumer_count></video_consumer_count>
Parameter | Description |
---|---|
int | Number of video consumers. |
Example
<capabilities>
<video_consumer_count>8</video_consumer_count>
</capabilities>
preface_band_with_tuner_ capability
Specifies if the device can switch to the Tuner input (AM, FM..) and then send the
SET_CHANNEL
command.
Signature
<preface_bandwith_tuner_capability></preface_bandwith_tuner_capability>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<preface_bandwith_tuner_capability>true</preface_bandwith_tuner_capability>
</capabilities>
Tuner Protocol Notifications
CHANNEL_CHANGED
Selected disc has changed.
Name
CHANNEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
ChannelNumber | INT | Channel Number |
Returns
None
Usage Note
Usage Note:If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “has feedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has.
A CHANNEL CHANGED must be issued immediately after the INPUT CHANGED in order for the UI to update.
Example
C4:SendToProxy(5002, "INPUT_CHANGED", {INPUT=3014,BANDTYPE='FMBand',MINCHANNEL=8750,MAXCHANNEL=10450,CHANNELSPACING=10})
C4:SendToProxy(5002, "CHANNEL_CHANGED", {CHANNEL=8780})
Note that in the example to the right, 5002 is the ProxyBindingID for the Tuner. INPUT 3014 is the ID for the FM Antenna on the 5002 Tuner.
Navigator determines AM/FM/XM with the following rule:
- ID 3000 and 3001 are AM
- ID 3002 and 3003 are FM
INPUT_CHANGED
Selected input has changed.
Name
INPUT_CHANGED ()
Parameter | Type | Description |
---|---|---|
INT | Binding ID of RF cloud | |
STR | One of the following case sensitive values: “AMBand” “FMBand” | |
INT | Lowest tune-able channel e.g. 8750 for FM, 530 for AM | |
INT | Highest tunable channel e.g. 10790 for FM, 1760 for AM | |
INT | Channel increment e.g. 20 for FM in U.S., 10 for AM in U.S. |
Returns
None
Usage Note
If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “hasfeedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has.
A CHANNEL_CHANGED
must be issued immediately after the INPUT_CHANGED
in order for the UI to update.
Example
C4:SendToproxy(5002,'INPUTCHANGED',{INPUT=3009,BANDTYPE='FMBand',MINCHANNEL=8750,
MAXCHANNEL=10790,CHANNELSPACING=20})
C4:SendToProxy(5002,'CHANNELCHANGED',CHANNEL=10290)
Note that in the example to the right, 5002 is the ProxyBindingID for the Tuner. INPUT 3009 is the ID for the FM Antenna on the 5002 Tuner.
Navigator determines AM/FM/XM with the following rule:
- ID 3000 and 3001 are AM
- ID 3002 and 3003 are FM
OFF
Device has turned Off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned On.
Name
ON ()
Parameter
None
Returns
None
RADIO_TEXT_CHANGED
Text from RDS has changed.
Name
RADIO_TEXT_CHANGED ()
Parameter | Type | Description |
---|---|---|
RADIO TEXT | STR | Two free-form text strings. Radio information/text from RDS and currently playing title. |
Usage Note
MaxImum 64 characters in two free form text strings.
Returns
None
PSN_CHANGED
Text from PSN has changed.
Name
PSN_CHANGED ()
Parameter | Type | Description |
---|---|---|
PSN | STR | Two free-form text strings. Radio information and text from the station ID. Periodically updated from the station. |
Usage Note
MaxImum 64 characters in two free form text strings.
Returns
None
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.
Tuner Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
PAGE_DOWN
Pulse menu Page down.
Name
PAGE_DOWN ()
Parameters
None
Returns
None
PAGE_UP
Pulse menu Page up.
Name
PAGE_UP ()
Parameters
None
Returns
None
POUND
Pulse # button.
Name
POUND ()
Parameters
None
Returns
None
PRESET_DOWN
Toggle (cycle down) tuning preset.
Name
PRESET_DOWN ()
Parameters
None
Returns
None
PRESET_UP
Toggle (cycle UP) tuning preset.
Name
PRESET_UP ()
Parameters
None
Returns
None
PULSE_CHANNEL_DOWN
Pulse channel value down.
Name
PULSE_CHANNEL_DOWN ()
Parameters
None
Returns
None
PULSE_CHANNEL_UP
Pulse channel value up.
Name
PULSE_CHANNEL_UP ()
Parameters
None
Returns
None
RECALL
Pulse Recall button.
Name
RECALL ()
Parameters
None
Returns
None
SEARCH_DOWN
Pulse tuning search down
Name
SEARCH_DOWN ()
Parameters
None
Returns
None
SEARCH_UP
Pulse tuning search UP
Name
SEARCH_UP ()
Parameters
None
Returns
None
SET_CHANNEL
Tune device tot he specifies channel.
Name
SET_CHANNEL ()
Parameter | Type | Description |
---|---|---|
STR | Channel value in string format | |
STR | Band Type |
Returns
None
Example
The example to the right detail the table of information that is received from the proxy when a channel is selected:
FM:
ReceivedFromProxy: SET_CHANNEL
BindingID 5002
CHANNEL 96.3
INPUT 3028
OUTPUT 0
AM:
ReceivedFromProxy: SET_CHANNEL
INPUT 3027
BindingID 5002
CHANNEL 1100
INPUT 3027
OUTPUT 0
In the FM example, channel 96.3 has been selected in the tuner protocol. The 96.3 value is passed into the data table as a string. It is important to note that if the bandwidth type (AM, FM) is not provided (and the proxy in question is not TV) a manner in which to identify the bandwidth type will need to be developed. An example of this code follows:
if tParams['BANDTYPE'] == nil then
if (string.find(tParams['CHANNEL'],"%p") ~= nil) then
tParams['BANDTYPE'] = 'FM'
local ChannelLen = string.len(tParams['CHANNEL'] )
local ChannelFix = string.sub(tParams['CHANNEL'],1,ChannelLen-2) ..
string.sub(tParams['CHANNEL'],ChannelLen-1,ChannelLen-1)
tParams ['CHANNEL'] = ChannelFix
else
tParams['BANDTYPE'] = 'AM'
end end
end
SET_PRESET
Select specified tuning preset.
Name
SET_PRESET ()
Parameter | Type | Description |
---|---|---|
PresetNum | INT | Preset Number |
Returns
None
STAR
Pulse *
button.
Name
STAR ()
Parameters
None
Returns
None
START_CH_DOWN
Start ramping channel down.
Name
START_CH_DOWN ()
Parameters
None
Returns
None
START_CH_UP
Start ramping channel UP.
Name
START_CH_UP ()
Parameters
None
Returns
None
STOP_CH_UP
StOP ramping channel UP.
Name
STOP_CH_UP ()
Parameters
None
Returns
None
START_PAGE_DOWN
Start menu Page down.
Name
START_PAGE_DOWN ()
Parameters
None
Returns
None
START_PAGE_UP
Start menu Page up.
Name
START_PAGE_UP ()
Parameters
None
Returns
None
START_SEARCH_DOWN
Begin tuning search down.
Name
START_SEARCH_DOWN ()
Parameters
None
Returns
None
START_SEARCH_UP
Begin tuning search UP.
Name
START_SEARCH_UP ()
Parameters
None
Returns
None
STOP_CH_DOWN
Stop ramping channel down.
Name
STOP_CH_DOWN ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page down.
Name
STOP_PAGE_DOWN ()
Parameters
None
Returns
None
STOP_PAGE_UP
Stop menu page up.
Name
STOP_PAGE_UP ()
Parameters
None
Returns
None
STOP_SEARCH_UP
Stop tuning search up.
Name
STOP_SEARCH_UP ()
Parameters
None
Returns
None
STOP_SEARCH_DOWN
Stop tuning search down.
Name
STOP_SEARCH_DOWN ()
Parameters
None
Returns
None
TUNE_DOWN
Toggle (cycle down) frequency or channel
Name
TUNE_DOWN ()
Parameters
None
Returns
None
TUNE_UP
Toggle (cycle up) frequency or channel
Name
TUNE_UP ()
Parameters
None
Returns
None
TV Proxy Commands
BACK
Pulse Back button
Name
BACK ()
Parameters
None
Returns
None
CANCEL
Pulse Cancel button
Name
CANCEL ()
Parameters
None
Returns
None
CLOSED_CAPTION
This command toggles closed caption services on the TV.
Name
CLOSED_CAPTION ()
Parameters
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
DASH
Pulses the ‘-’ button.
Name
DASH ()
Parameter
None
Returns
None
DISCONNECT_OUTPUT
Disconnect (turn off) selected output on device.
Name
DISCONNECT_OUTPUT ()
Parameter | Type | Description |
---|---|---|
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
PATH DEV LIST | str | Value of the device directly upstream in the AV path. |
Returns
None
EMIT CODE
Emit IR/Serial code.
Name
EMIT_CODE ()
Parameter | Type | Description |
---|---|---|
IRCodeID | INT | ID of the IR Code |
Returns
None
EMIT MACRO
Emit IR/Serial code macro.
Name
EMIT_MACRO ()
Parameter | Type | Description |
---|---|---|
MacroCodeName | INT | Macro Code Name |
Returns
None
GET_DEFAULT_INPUT
Command sent to the protocol during the proxy initialization. Returns the input designated as the default from the protocol device.
Name
GET_DEFAULT_INPUT ()
Parameters
None
Returns
None
HYPHEN
Pulse ‘-’ button
Name
HYPHEN ()
Parameters
None
Returns
None
INFO
Pulse Info button
Name
INFO ()
Parameters
None
Returns
None
LOUDNESS_OFF
Turn loudness off.
Name
LOUDNESS_OFF ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_ON
Turn loudness on.
Name
LOUDNESS_ON ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
LOUDNESS_TOGGLE
Toggle loudness on/off.
Name
LOUDNESS_TOGGLE ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
MUTE_OFF
Turn muting off.
Name
MUTE_OFF ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
MUTE_ON
Turn muting on.
Name
MUTE_ON ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
MUTE_TOGGLE
Toggle muting on/off.
Name
MUTE_TOGGLE ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
NUMBER_0
Pulse ‘0’ button
Name
Number_0 ()
Parameters
None
Returns
None
NUMBER_1
Pulse ‘1’ button
Name
Number_1 ()
Parameters
None
Returns
None
NUMBER_2
Pulse ‘2’ button
Name
Number_2 ()
Parameters
None
Returns
None
NUMBER_3
Pulse ‘3’ button
Name
Number_3 ()
Parameters
None
Returns
None
NUMBER_4
Pulse ‘4’ button
Name
Number_4 ()
Parameters
None
Returns
None
NUMBER_5
Pulse ‘5’ button
Name
Number_5 ()
Parameters
None
Returns
None
NUMBER_6
Pulse ‘6’ button
Name
Number_6 ()
Parameters
None
Returns
None
NUMBER_7
Pulse ‘7’ button
Name
Number_7 ()
Parameters
None
Returns
None
NUMBER_8
Pulse ‘8’ button
Name
Number_8 ()
Parameters
None
Returns
None
NUMBER_9
Pulse ‘9’ button
Name
Number_9 ()
Parameters
None
Returns
None
OFF
Turn device Off.
Name
OFF ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
ON
Turn device On.
Name
ON ()
Parameters
None
Returns
None
Usage Note
The ON and OFF proxy commands have the ability to send proxy notifications to display a device power state in Composer and Navigator Devices only. Any desired commands or notifications based off the device ON/OFF state must be handled by your DriverWorks driver.
PAGE_DOWN
Pulse menu Page down.
Name
PAGE_DOWN ()
Parameters
None
Returns
None
PAGE_UP
Pulse menu Page up.
Name
PAGE_UP ()
Parameters
None
Returns
None
PIP
Pulse menu PIP button..
Name
PIP ()
Parameter | Type | Description |
---|---|---|
MacroCodeName | STR | MacroCodeName |
Returns
None
POUND
Pulse # button.
Name
POUND ()
Parameters
None
Returns
None
PRESET_DOWN
Toggle (cycle down) tuning preset.
Name
PRESET_DOWN ()
Parameters
None
Returns
None
PRESET_UP
Toggle (cycle UP) tuning preset.
Name
PRESET_UP ()
Parameters
None
Returns
None
PULSE_ASPECT_RATIO
Toggle (cycle though) aspect ratio.
Name
PULSE_ASPECT_RATIO ()
Parameters
None
Returns
None
PULSE_BALANCE_DOWN
Pulse balance down (Left)
Name
PULSE_BALNCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BALANCE_UP
Pulse balance up (Right)
Name
PULSE_BALNCE_RIGHT ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BASS_DOWN
Pulse bass down (Left)
Name
PULSE_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_BASS_UP
Pulse bass up (Right)
Name
PULSE_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_CHANNEL_DOWN
Pulse channel value down.
Name
PULSE_CHANNEL_DOWN ()
Parameters
None
Returns
None
PULSE_CHANNEL_UP
Pulse channel value up.
Name
PULSE_CHANNEL_UP ()
Parameters
None
Returns
None
PULSE_INPUT
Toggle (cycle through) input selection on device.
Name
PULSE_INPUT
Parameters
None
Returns
None
PULSE_TREBLE_DOWN
Pulse treble down.
Name
PULSE_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_TREBLE_UP
Pulse treble up.
Name
PULSE_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_VOL_DOWN
Pulse volume level down.
Name
PULSE_VOL_DOWN
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PULSE_VOL_UP
Pulse volume level up.
Name
PULSE_VOL_UP
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
PVR
Pulse PVR button.
Name
PVR ()
Parameters
None
Returns
None
RECALL
Pulse Recall button.
Name
RECALL ()
Parameters
None
Returns
None
SEARCH_DOWN
Pulse tuning search down
Name
SEARCH_DOWN ()
Parameters
None
Returns
None
SEARCH_UP
Pulse tuning search UP
Name
SEARCH_UP ()
Parameters
None
Returns
None
SET_BALANCE
Set balance to a specified position.
Name
SET_BALANCE ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level value |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_BALANCE_UP
Set balance to a specified position.
Name
SET_BALANCE_UP ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
SET_BASS_LEVEL
Set bass to a specified level.
Name
SET_BASS_LEVEL
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_CHANNEL
Tune device to the specified channel.
Name
SET_CHANNEL ()
Parameter | Type | Description |
---|---|---|
CHANNEL | STR | Channel value in string format. |
BANDTYPE | STR | Band Type |
Returns
None
Example
The example to the right detail the table of information that is received from the proxy when a channel is selected:
FM:
ReceivedFromProxy: SET_CHANNEL
BindingID 5002
CHANNEL 96.3
INPUT 3028
OUTPUT 0
AM:
ReceivedFromProxy: SET_CHANNEL
INPUT 3027
BindingID 5002
CHANNEL 1100
INPUT 3027
OUTPUT 0
In the FM example, channel 96.3 has been selected in the tuner protocol. The 96.3 value is passed into the data table as a string. It is important to note that if the bandwidth type (AM, FM) is not provided (and the proxy in question is not TV) a manner in which to identify the bandwidth type will need to be developed. An example of this code follows:
if tParams['BANDTYPE'] == nil then
if (string.find(tParams['CHANNEL'],"%p") ~= nil) then
tParams['BANDTYPE'] = 'FM'
local ChannelLen = string.len(tParams['CHANNEL'] )
local ChannelFix = string.sub(tParams['CHANNEL'],1,ChannelLen-2) ..
string.sub(tParams['CHANNEL'],ChannelLen-1,ChannelLen-1)
tParams ['CHANNEL'] = ChannelFix
else
tParams['BANDTYPE'] = 'AM'
end end
end
SET_DEFAULT_INPUT
Specify the default input selection of device.
Name
SET_DEAFULT_INPUT ()
Parameter | Type | Description |
---|---|---|
InputBindingID | INT | Input Binding ID - should be in the BindingID range. |
OutputBindingID | INT | IOptional. Output Binding ID - should be in the BindingID range. |
Returns
None
Usage Note
- Control Bindings = 1 -> 999
- Video Inputs = 1000 -> 1099
- Video Outputs = 2000 -> 2999
- Audio Inputs = 3000 -> 3099
- Audio Outputs = 4000 -> 4999
- Proxy Bindings = 5000 -> 5999
- Network Bindings = 6000 -> 6999
- Room Bindings = 7000 -> 7999
- Power Manager = 8000 -> 8999
SET_INPUT
Specify the input selection of device.
Name
SET_INPUT ()
Parameter | Type | Description |
---|---|---|
Input Binding ID | int | Binding ID in the BindingID range below. |
PREV DEV LIST | str | Value of the device directly upstream in the AV path. |
Output Binding ID | int | Optional. Output Binding ID - should be in the BindingID range in the usage note below. |
Returns
None
Usage Note
- Control Bindings = 1 -> 999
- Video Inputs = 1000 -> 1099
- Video Outputs = 2000 -> 2999
- Audio Inputs = 3000 -> 3099
- Audio Outputs = 4000 -> 4999
- Proxy Bindings = 5000 -> 5999
- Network Bindings = 6000 -> 6999
- Room Bindings = 7000 -> 7999
- Power Manager = 8000 -> 8999
SET_LOUDNESS
Turn loudness on.
Name
SET_LOUDNESS ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_PRESET
Select specified tuning preset.
Name e
SET_PRESET ()
Parameter | Type | Description |
---|---|---|
PresetNum | INT | Preset Number |
Returns
None
SET_TREBLE_LEVEL
Set treble to a specified level.
Name
SET_TREBLE_LEVEL ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level |
OutputBindingID | INT | Output Binding ID |
Returns
None
SET_UP_DOWN_SWAP
Swap page UP/DOWN buttons (used by AVGen). TRUE
to enable swap, FALSE
to disable.
Name
SET_UP_DOWN_SWAP ()
Parameter | Type | Description |
---|---|---|
SWAPFLAG | BOOL | True/False |
Returns
None
SET_VOLUME_LEVEL
Set volume to a specified level.
Name
SET_VOLUME_LEVEL ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
SET_VOL_UP
Begin ramping volume up.
Name
SET_VOL_UP ()
Parameter | Type | Description |
---|---|---|
Output indingID | INT | Output Binding ID |
Returns
None
STAR
Pulse *
button.
Name
STAR ()
Parameters
None
Returns
None
START_BALANCE_DOWN
Start ramping balance down (left).
Name
START_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_BALANCE_UP
Start ramping balance UP (right).
Name
START_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_BASS_DOWN
Start ramping bass down.
Name
START_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_ BASS_ UP
Start ramping bass up.
Name
START_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_CH_DOWN
Start ramping channel down.
Name
START_CH_DOWN ()
Parameters
None
Returns
None
START_CH_UP
Start ramping channel up.
Name
START_CH_UP ()
Parameters
None
Returns
None
START_DOWN
Initiate down-arrow navigation.
Name
START_DOWN ()
Parameters
None
Returns
None
START_LEFT
Initiate left-arrow navigation.
Name
START_LEFT ()
Parameters
None
Returns
None
START_PAGE_DOWN
Start menu Page down.
Name
START_PAGE_DOWN ()
Parameters
None
Returns
None
START_PAGE_UP
Start menu Page up.
Name
START_PAGE_UP ()
Parameters
None
Returns
None
START_PAGE_RIGHT
Initiate right-arrow navigation.
Name
START_RIGHT ()
Parameters
None
Returns
None
START_SEARCH_DOWN
Begin tuning search down.
Name
START_SEARCH_DOWN ()
Parameters
None
Returns
None
START_SEARCH_UP
Begin tuning search UP.
Name
START_SEARCH_UP ()
Parameters
None
Returns
None
START_TREBLE_UP
Start ramping treble up.
Name
START_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_TREBLE_DOWN
Start ramping treble down.
Name
START_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_UP
Initiate up-arrow navigation.
Name
START_UP ()
Parameters
None
Returns
None
START_VOL_DOWN
Start ramping volume down.
Name
START_VOL_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
START_VOL_UP
Start ramping volume up.
Name
START_VOL_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BALANCE_DOWN
Start ramping balance.
Name
STOP_BALANCE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BALANCE_UP
Stop ramping bass
Name
STOP_BALANCE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BASS_DOWN
Stop ramping bass down.
Name
STOP_BASS_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_BASS_UP
Stop ramping bass up.
Name
STOP_BASS_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_CH_DOWN
Stop ramping channel down.
Name
STOP_CH_DOWN ()
Parameters
None
Returns
None
STOP_CH_UP
Stop ramping channel up.
Name
STOP_CH_UP ()
Parameters
None
Returns
None
STOP_DOWN
Stop down-arrow navigation.
Name
STOP_DOWN ()
Parameters
None
Returns
None
START_LEFT
Stop left-arrow navigation.
Name
STOP_LEFT ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page down.
Name
STOP_PAGE_DOWN ()
Parameters
None
Returns
None
STOP_PAGE_DOWN
Stop menu page up.
Name
STOP_PAGE_UP ()
Parameters
None
Returns
None
STOP_PAGE_RIGHT
Stop right-arrow navigation.
Name
STOP_RIGHT ()
Parameters
None
Returns
None
STOP_SEARCH_DOWN
Stop tuning search down.
Name
STOP_SEARCH_DOWN ()
Parameters
None
Returns
None
STOP_SEARCH_UP
Stop tuning search UP.
Name
STOP_SEARCH_UP ()
Parameters
None
Returns
None
STOP_TREBLE_DOWN
Stop ramping treble down.
Name
STOP_TREBLE_DOWN ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_TREBLE_UP
Stop ramping treble up.
Name
STOP_TREBLE_UP ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID |
Returns
None
STOP_UP
Initiate up-arrow navigation.
Name
STOP_UP ()
Parameters
None
Returns
None
TUNE_DOWN
Toggle (cycle down) frequency or channel.
Name
TUNE_DOWN ()
Parameters
None
Returns
None
TUNE_UP
Toggle (cycle down) frequency or channel.
Name
TUNE_UP ()
Parameters
None
Returns
None
TV_VIDEO
Toggle TV/video input.
Name
TV_VIDEO ()
Parameters
None
Returns
None
TV Protocol Notifications
AUDIO_PARAMETER_CHANGED
Audio parameter has changed
Name
AUDIO_PARAMETER_CHANGED ()
Parameter | Type | Description |
---|---|---|
OutputBindingID | INT | Output Binding ID value |
Returns
None
BALANCE_LEVEL_CHANGED
Selected balance level has changed.
Name
BALANCE_LEVEL_CHANGED ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
BASS_LEVEL_CHANGED
Selected bass level has changed
Name
BASS_LEVEL_CHANGED ()
Parameter | Description |
---|---|
int | Level |
int | Output Binding ID |
Returns
None
CHANNEL_CHANGED
Selected channel has changed
Name
CHANNEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
ChannelNumber | INT | Channel Number |
Returns
None
Usage Note
If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “has_feedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has. A CHANNEL_CHANGED must be issued immediately after the INPUT_CHANGED in order for the UI to update. See the example to the right.
C4:SendToproxy(5002,'INPUT_CHANGED',
{INPUT=3009,BANDTYPE='FMBand',MINCHANNEL=8750,
MAXCHANNEL=10790,CHANNELSPACING=20})
C4:SendToProxy(5002,'CHANNEL_CHANGED',{CHANNEL=10290})
Note that in the example, 5002 is the ProxyBindingID for the Tuner. INPUT 3009 is the ID for the FM Antenna on the 5002 Tuner. Navigator determines AM/FM/XM with the following rule:
- ID 3000 and 3001 are AM
- ID 3002 and 3003 are FM
INPUT_CHANGED
Notification indicating that the TV's input source has changed.
Name
INPUT_CHANGED ()
Parameter | Type | Description |
---|---|---|
INPUT | INT | Changed Input |
Returns
None
Usage Note
If the BANDTYPE is not supplied, as in older drivers, the INPUT binding # will be used to determine which band the tuner is on. All DriverWorks drivers need to use the BANDTYPE parameter if they want the band to propagate up to Navigator to display the channel properly. If the DriverWorks driver does not know the current channel and the “has_feedback” capability is not set to “True”, none of this matters and everything will keep working as it previously has. A CHANNEL_CHANGED must be issued immediately after the INPUT_CHANGED in order for the UI to update. See the example to the right.
C4:SendToproxy(5002,'INPUT_CHANGED',
{INPUT=3009,BANDTYPE='FMBand',MINCHANNEL=8750,
MAXCHANNEL=10790,CHANNELSPACING=20})
C4:SendToProxy(5002,'CHANNEL_CHANGED',{CHANNEL=10290})
Note that in the example, 5002 is the ProxyBindingID for the Tuner. INPUT 3009 is the ID for the FM Antenna on the 5002 Tuner. Navigator determines AM/FM/XM with the following rule:
- ID 3000 and 3001 are AM
- ID 3002 and 3003 are FM
LOUDNESS_CHANGED
Loudness state (On/Off) has changed.
Name
LOUDNESS_CHANGED ()
Parameter | Type | Description |
---|---|---|
LOUDNESS | BOOL | True/False |
Returns
None
MUTE_CHANGED
MUTE state (On/Off) has changed.
Name
MUTE_CHANGED ()
Parameter | Description | Description |
---|---|---|
output | INT | Output Binding ID |
MUTE | BOOL | True/False |
Returns
None
OFF
Device has turned off.
Name
OFF ()
Parameter
None
Returns
None
ON
Device has turned on.
Name
ON ()
Parameter
None
Returns
None
TREBLE_LEVEL_CHANGED
Selected treble level has changed.
Name
TREBLE_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level |
OutputBindingID | INT | Output Binding ID |
Returns
None
VOLUME_LEVEL_CHANGED
Selected volume level has changed.
Name
VOLUME_LEVEL_CHANGED ()
Parameter | Type | Description |
---|---|---|
Level | INT | Level |
Output Binding ID | OINT | OutputBindingID |
Returns
None
XM Tuner Protocol Notifications
AVAILABLE_CHANNEL_MAP
Displays current artist.
Name
AVAILBLE_CHANNEL_MAP ()
Parameter | Type | Description |
---|---|---|
MAP_HALF | INT | MAP HALF: 1 is used for channels 0-127. 0 is used for channels 128 - 255. |
MAP_STRING | STR | MAP STRING: 32 character (hex values) string representing the binary (1 = available or 0 = not) state of each of the channels in all possible combinations. Each hex digit covers all the possible available combinations of 4 channels. |
Example
`00000000000000000000000000000001 indicates that channel 0 (or 128) is the only channel available.`
`00000000000000000000000000000002 indicates that channel 1 (or 129) is the only channel available.`
`00000000000000000000000000000003 indicates that channels 0 & 1 (or 128 & 129) are the only channels available.`
`00000000000000000000000000000004 indicates that channel 2 (or 130) is the only channel available.`
`00000000000000000000000000000005 indicates that channels 0 & 2 (or 128 & 130) are the only channels available.`
`00000000000000000000000000000006 indicates that channels 1 & 2 (or 129 & 130) are the only channels available.`
`00000000000000000000000000000007 indicates that channels 0, 1 & 2 (or 128, 129 & 130) are the only channels available.`
`00000000000000000000000000000008 indicates that channel 3 (or 131) is the only channel available.`
`00000000000000000000000000000009 indicates that channels 0 & 3 (or 128 & 131) are the only channels available.`
`0000000000000000000000000000000A indicates that channels 1 & 3 (or 129 & 131) are the only channels available.`
`0000000000000000000000000000000B indicates that channels 0, 1 & 3 (or 128, 129 & 131) are the only channels available.`
`0000000000000000000000000000000C indicates that channels 2 & 3 (or 130 & 131) are the only channels available.`
`0000000000000000000000000000000D indicates that channels 0, 2 & 3 (or 128, 130 & 131) are the only channels available.`
`0000000000000000000000000000000E indicates that channels 1, 2 & 3 (or 129, 130 & 131) are the only channels available.`
`0000000000000000000000000000000F indicates that channels 0, 1, 2 & 3 (or 128, 129, 130 & 131) are the only channels available.`
SIGNAL_STRENGTH
Notification indicating the signal strength has changed.
Name
SIGNAL_STRENGTH ()
Parameter | Type | Description |
---|---|---|
STRENGTH | INT | 0 = “None”, 1 = “Weak”, 2 = “Fair”, 3 = “Good” |
Returns
None
SONG_INFO_CHANGED
Displays current song information.
Name
SONG_INFO_CHANGED ()
Parameter | Type | Description |
---|---|---|
ARTIST | STR | ARTIST information |
TITLE | STR | TITLE information |
CATEGORY | STR | CATEGORY information |
CHANNEL | STR | CHANNEL information |
NAME | STR | NAME information |
Returns
None
XMARDS_ID
Satellite Digital Audio Radio Service
Name
XMARDS_ID ()
Parameter | Type | Description |
---|---|---|
ID_TEXT | STR | Value representing the XM SDARS value of the satellite device. |
Returns
None
XM_CATEGORY_NAME_CHANGE
Notification indicating that the name of the current station's category has changed.
Name
XM_CATEGORY_NAME_CHANGE ()
Parameter | Type | Description |
---|---|---|
NUMBER | INT | Channel |
NAME | STR | Channel name |
Returns
None
XM_GET_AVAILABLE_CHANNELS
Displays available XM channels.
Name
XM_GET_AVAILABLE_CHANNELS ()
Parameter | Type | Description |
---|---|---|
MAP_HALF | INT | MAP HALF: 1 is used for channels 0-127. 0 is used for channels 128 - 255. |
Returns
None
Example
00000000000000000000000000000001 indicates that channel 0 (or 128) is the only channel available.
00000000000000000000000000000002 indicates that channel 1 (or 129) is the only channel available.
00000000000000000000000000000003 indicates that channels 0 & 1 (or 128 & 129) are the only channels available.
00000000000000000000000000000004 indicates that channel 2 (or 130) is the only channel available.
00000000000000000000000000000005 indicates that channels 0 & 2 (or 128 & 130) are the only channels available.
00000000000000000000000000000006 indicates that channels 1 & 2 (or 129 & 130) are the only channels available.
00000000000000000000000000000007 indicates that channels 0, 1 & 2 (or 128, 129 & 130) are the only channels available.
00000000000000000000000000000008 indicates that channel 3 (or 131) is the only channel available.
00000000000000000000000000000009 indicates that channels 0 & 3 (or 128 & 131) are the only channels available.
0000000000000000000000000000000A indicates that channels 1 & 3 (or 129 & 131) are the only channels available.
0000000000000000000000000000000B indicates that channels 0, 1 & 3 (or 128, 129 & 131) are the only channels available.
0000000000000000000000000000000C indicates that channels 2 & 3 (or 130 & 131) are the only channels available.
0000000000000000000000000000000D indicates that channels 0, 2 & 3 (or 128, 130 & 131) are the only channels available.
0000000000000000000000000000000E indicates that channels 1, 2 & 3 (or 129, 130 & 131) are the only channels available.
0000000000000000000000000000000F indicates that channels 0, 1, 2 & 3 (or 128, 129, 130 & 131) are the only channels available.
XM_GET_CHANNEL_DETAILS_CHANGED
Displays current channel details.
Name
XM_GET_CHANNEL_DETAILS_CHANGED ()
Parameter | Type | Description |
---|---|---|
CHANNEL | INT | Channel |
CATEGORY | STR | Channel category |
NAME | STR | Channel name |
Returns
None
Audio Output Bindings and Proxy Events
Note: Audio Output binding ID values defined in drivers written in conjunction with this Proxy must start with a binding value of 4000. The acceptable range for Audio Outputs is 4000 - 4999. However, if the first output binding ID value is not 4000, issues with Proxy Events firing correctly can be encountered.
For a list of valid Binding ID values please see the Connections section of the DriverWorks Fundamentals Guide.
TV Capabilities
has_audio
Television is capable of producing audio.
Signature
<has_audio></has_audio>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_audio>true</has_audio>
</capabilities>
has_discrete_balance_control
Capable of directly specifying a balance setting.
Signature
<has_discrete_balance_control></has_discrete_balance_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_balance_control>true</has_discrete_balance_control>
</capabilities>
has_discrete_bass\ control
Capable of directly specifying a bass setting.
Signature
<has_discrete_bass_control></has_discrete_bass_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_bass_control>true</has_discrete_bass_control>
</capabilities>
has_discrete_channel_select
Capability of direcretly selecting specified channel.
Signature
<has_discrete_channel_select></has_discrete_ channel_select>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_channel_select>true</has_discrete_channel_select>
</capabilities>
has_discrete_input_select
Capability of directly selecting specified input.
Signature
<has_discrete_input_select></has_discrete_input_select>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_input_select>true</has_discrete_input_select>
</capabilities>
has_discrete_loudness_control
Capable of directly specifying a loudness setting.
Signature
<has_discrete_loudness_control></has_discrete_loudness_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_loudness_control>true</has_discrete_loudness_control>
</capabilities>
has_discrete_mute_control
Capable of directly specifying mute ON or OFF setting.
Signature
<has_discrete_ mute_control></has_discrete_ mute_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_mute_control>true</has_discrete_mute_control>
</capabilities>
has_discrete_treble_control
Capable of directly specifying a treble setting.
Signature
<has_discrete_treble_control></has_discrete_treble_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_treble_control>true</has_discrete_treble_control>
</capabilities>
has_discrete_volume_control
Capable of directly specifying a volume setting.
Signature
<has_discrete_volume_control></has_discrete_volume_control>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_discrete_volume_control>true</has_discrete_volume_control>
</capabilities>
requires_channel_after_input
When set to True, the TV proxy will first switch the input and then select the channel. It is recommended that this capability be set to True.
Signature
<requires_channel_after_input></requires_channel_after_input>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<requires_channel_after_input>true</requires_channel_after_input>
</capabilities>
Dynamic Transport Controls in Navigator
Introduction
Beginning with O.S. 3.2.3, AV drivers have the ability to define which transport controls are displayed on Navigators. This includes which buttons appear on the Button Bar as well as the Media Dashboard.
This enhancement allows for the appropriate transport controls being displayed for each AV device. This is accomplished using the driver’s Capabilities, Variables and several Proxy Commands.
Transport Controls and Driver XML
To designate which transport controls appear on Navigators, the driver’s capabilities XML needs to contain a new<transports></transports>
section. Within the transports XML is a <supported></supported
tag. The supported tag lists the default supported transports for the driver. Note that there is a fixed set of "transports" that can be included in the supported tag. These include:
- PLAY
- PAUSE
- STOP
- SCAN_FWD
- SCAN_REV
- SKIP_FWD
- SKIP_REV
- RECORD
- PG_UP
- PG_DOWN
- PRG_BTNS
- KEYPAD
- CH_UP_DN
- DPAD
The transport controls XML in the example to the right contains the full set of possible transports. A driver can support all of these or a subset of these transports.
<capabilities>
<transports>
<supported>
PLAY, PAUSE, STOP, SCAN_FWD, SCAN_REV, SKIP_FWD, SKIP_REV,
RECORD, PG_UP, PG_DOWN, PRG_BTNS, KEYPAD, CH_UP_DN, DPAD
</supported>
</transports>
</capabilities>
button _bar and Driver XML
To designate which transport control buttons appear on the Button Bar, the transports capabilities XML needs to include a <button_bar></button_bar
tag.
Within the button bar XML is a <buttons></buttons>
tag. This tag contains the buttons that will display in the button bar. Each button is defined further in the XML with a <button></button>
tag that includes an id, name, command, type.
Element | Description |
---|---|
id | Identification used for the button. For example: PLAY. This id value is important as it used by a corresponding Proxy Variable to identify this button. |
name | Name used for the button. For example: Play. This text will be displayed in the button if no alternative icon is defined. |
command | The command that is sent to the Room or Proxy. For example: PLAY. |
type | Whether the command is sent to the Room or the Proxy. Values include ROOM or PROXY. |
<capabilities>
<transports>
<button_bar>
<buttons>
<button>
<id>PLAY</id>
<name>Play</name>
<command>PLAY</command>
<type>PROXY</type>
</button>
...
</buttons>
<default_buttons>GUIDE, MENU, CANCEL, INFO</default_buttons>
<button_bar>
...
</transports>
...
</capabilities>
Note the <default_buttons></default_buttons>
XML in the example to the right. This tag can contain up to eight default buttons in a comma separated list.
Example image of the Controls in the Button Bar:
Media Dashboard and Driver XML
The ability to define what transport controls display on the Media Dashboard is supported. The Media Dashboard is shown when Navigators are displaying a single line "dashboard" view of transport controls. This requires the addition of a <dashboard></dashboard>
tag to the transports XML section. Note that Media Dashboard buttons are always shown using an icon. See below for more information.
<capabilities>
<transports>
<dashboard>
<buttons>
<button>
<id>PLAY</id>
<icon>http://sampleiconURL.com</icon>
<name>Play</name>
<command>PLAY</command>
<type>PROXY</type>
</button>
...
</buttons>
<default_large>SCAN_REV, PLAY, PAUSE, SSCAN_FWD</default_large>
<default_small>SCAN_REV, PLAY, PAUSE, SCAN_FWD</default_small>
</dashboard>
...
</transports>
...
</capabilities>
Note the use of the default_large and default_small XML tags in the example to the right:
<default_large>
- A comma separated list of ID values which match those defined in the button XML section. A maximum of 7 IDs are allowed. default_large is meant for large user interfaces such as tablets.
<default_small>
- A comma separated list of ID values which match those defined in the button XML section. A maximum of 5 IDs are allowed. default_small is meant for smaller user interfaces such as phones.
Referencing Built In Icons for the Media Dashboard
Media Dashboard button icons are typically accessed using the <icon></icon>
tag containing a URL. In addition to this, a small set of built in icons can be referenced by using the following “ID”s and omitting the "icon" tag from the definition:
Icon ID | Icon |
---|---|
PLAY | |
PAUSE | |
STOP | |
CH_UP | |
CH_DOWN | |
SCAN_FWD | |
SCAN_REV | |
SKIP_REV | |
SKIP_FWD | |
RECORD |
For example, to use the built in icon for PLAY, see the example to the right.
<buttons>
<button>
<id>PLAY</id>
<name>Play</name>
<command>PLAY</command>
<type>PROXY</type>
</button>
...
</buttons>
Example image of the Icons in the Media Dashboard:
Proxy Interface
The Proxy Interface is used to update the Variables defined in the next section.
A driver can update the currently enabled buttons and transports by making SendToProxy calls. SendToProxy does not necessarily need to be called unless the driver wants to change the buttons. If no changes from the provided default values in the Variables are needed; the Capability XML can simply be added to the driver and no other calls need to be made.
The SendToProxy call supports the use of the following parameters:
Parameter | Description |
---|---|
replace | Replaces the entire list with the given list which is a comma separated list of button IDs. |
add | Add a single button. A position is required for this parameter. |
remove | Remove a single button. |
Example
To update the large dashboard to show just buttons with the IDs of PLAY and PAUSE:
C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_DASHBOARD_LARGE", {replace = "PLAY,PAUSE"})
Example
To update the small dashboard:
C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_DASHBOARD_SMALL", {replace = "PLAY,PAUSE"})
Example
To update supported transport controls:
C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_SUPPORTED", {replace = "PLAY,PAUSE"})
Example
To update button bar buttons:
C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_BUTTONS", {replace = "PLAY,PAUSE"})
Example
To use the add parameter, a position must also be specified to add the button. This is a zero-based index. For example, to add PLAY at index 5:
C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_DASHBOARD_LARGE", {add = "PLAY", position = 5})
Example
To remove the button with the ID of PLAY from the large dashboard:
C4:SendToProxy(PROXY_BINDING, "UPDATE_TRANSPORTS_DASHBOARD_LARGE", {remove = "PLAY"})
Proxy Variables
The following Variables are used by Navigators. These Variables, with the exception of TRANSPORTS_DEFINITION, are set by using the SendToProxy commands defined in the previous section. This causes the Proxy to set the Variable value. Navigators then read that Variable value which results in the correct transport elements being displayed on the Navigator interface.
Note that It is not necessary for your driver to write Variable values.
TRANSPORTS_DEFINITION
Allows Navigators to get new button definitions without a Navigator refresh call. This cannot be updated by using SendToProxy. It is updated through the driver’s Capabilities at initialization or a driver update.
Parameter | Description |
---|---|
XML | <transports></transports> xml from the driver capabilities. Defaults to the full <transports>..</transports> from the driver’s capabilities. Must be updated when the driver is updated. |
TRANSPORTS_BUTTONS
Parameter | Description |
---|---|
str | Comma separated list of button IDs referencing the buttons in the <button_bar > section of the capabilities. The UIs would show the buttons in the order specified here. For example: "GUIDE, MENU, CANCEL, INFO”. Defaults to the data set specified in <default_buttons></default_buttons> XML. |
TRANSPORTS_SUPPORTED
Parameter | Description |
---|---|
str | Comma separated list of transports. The UIs would show the buttons in the order specified here. Defaults to the data set specified in <supported></supported> XML. This can be updated to include different sets on the fly such as hiding play and showing pause or vice versa when play/pause state changes. |
TRANSPORTS_DASHBOARD_SMALL
Dashboard to use on smaller devices. The UIs would show the buttons in the order specified here.
Parameter | Description |
---|---|
str | Comma separated list of IDs. IDs reference button definitions in the media_dashboard capability. This should be 5 buttons or less. Defaults to the "default_small" set of transports in the media_dashboard: "SCAN_REV, PLAY, PAUSE, SCAN_FWD”. Defaults to the data set specified in <default_small></default_small> XML. |
TRANSPORTS_DASHBOARD_LARGE
Dashboard to use on larger devices.
Parameter | Description |
---|---|
str | Comma separated list of IDs. The IDs reference button definitions in the media_dashboard capability. This should be 7 buttons or less. Defaults to the "default_large" set of transports in the media_dashboard: "SKIP_REV, SCAN_REV, PLAY, PAUSE, SCAN_FWD, SKIP_FWD, RECORD”. Defaults to the data set specified in <default_large></default_large> XML. |
Blind Proxy Commands
SET_LEVEL_TARGET
Requests a blind to go to a different position.
Name
SET_LEVEL_TARGET ()
Parameter | Type | Description |
---|---|---|
LEVEL_TARGET | INT | Integer of level that includes or is between level closed and level open (or level open + level closed secondary if level closed secondary is used). |
Level_Target_Nam | STR | String of the level value, such as Open, Closed, Secondary Closed |
Returns
None
SET_MOVEMENT
Name
SET_MOVEMENT ()
Parameter | Type | Description |
---|---|---|
SET_MOVEMENT | NUM | Enumeration of the blind movement. |
Returns
None
SET_TYPE
Sets the blind type for the proxy.
Name
SET_TYPE ()
Parameter | Type | Description |
---|---|---|
SET_Type | NUM | Enumeration of the blind type. |
Blind Types:
- 0 - Shade (Default as all coverings are considered to be Shades in the industry)
- 1 - Group
- 2 - Blind (Since a blind has slates/louvers that often move, a blind can be bound to a louver movement for association)
- 3 - Louver
- 4 - Curtain
- 5 - Shutter
- 6 - Blackout
- 7 - Opaque Glass
- 8 - Awning
- 9 - Door
- 10 - Screen
If set to -1 then a dealer can select a choice from a pulldown in the proxy property control. This Notification sends DataToUI of blind setup xml.
Returns
None
Blind Protocol Notifications
SET_CAN_STOP
Configuration Notification used by the protocol to inform the proxy if the blind supports stopping or not.
Name
SET_CAN_STOP ()
Parameter | Type | Description |
---|---|---|
SET_CAN_STOP | BOOL | A boolean indicating if the blind control supports stop. |
Returns
None
Usage Note
The blind level will be sent to the UI using a DataToUI as set can_stop_click = boolean
. This Notification sends DataToUI of: blind_setup xml
.
SET_HAS_LEVEL
Configuration Notification used by the protocol to inform the proxy that the driver does or does not support level control.
Name
SET_HAS_LEVEL ()
Parameter | Type | Description |
---|---|---|
HAS LEVEL | bool | Boolean indicating if level support is available |
LEVEL OPEN | int | Open value. Blinds without feedback, regardless of stop support, should use 0. |
LEVEL CLOSED | int | Closed value. Blinds without feedback and without a stop function should use 1. Blinds without feedback but with stop function should use 2 as the value of 1 is to indicate an unknown state in the case that someone pressed up or down and then pressed stop before the blind was able to get to the target open/close state. |
HAS LEVEL CLOSED SECONDARY | bool | Boolean indicating if the blind is using a secondary closed level |
LEVEL CLOSED SECONDARY | int | Secondary closed value for blinds that can go both directions from an Open state. |
LEVEL DISCRETE CONTROL | bool | Boolean indicating if the blind control has discrete level input. If false a UI will only send the specific level_closed and level_open values to the proxy/driver but a driver can still notify of various levels interpolated based on movement duration/time in each direction or using another formula. If true, the driver should support all level values in the range. This could be discrete percentages or even include using level values of 1,2,3,... to execute presets but the driver should always be developed for close (level_close ) and open (level_open ) levels respectively. |
Returns
None
Usage Note
All parameters are optional. This Notification sends DataToUI of: blind_setup xml
.
SET_MOVEMENT
Configuration Notification used by the protocol to inform the proxy that the driver is a particular blind movement function. If this is used, the proxy will disable the pull-down from being select-able by a dealer.
Name
SET_MOVEMENT ()
Parameter | Type | Description |
---|---|---|
SET MOVEMENT | INT | Enumeration of the blind movement type. |
Movement Types:
- 0 - Open/Close (Open/Close)
- 1 - Up to Down (Up is open, Down is closed)
- 2 - Down to Up (Down is open, Up is Closed)
- 3 - Out to In (Out is Open, In is Open)
- 4 - Left to Right (Left is Open, Right is Closed)
- 5 - Right to Left (Right is Open, Left is Closed)
If set to -1 then a dealer can again select a choice from a pull-down in the proxy property control.
Returns
None
Usage Note
This Notification sends DataToUI of: blind_setup xml
.
SET_TYPE
Configuration Notification used by the protocol to inform the proxy that the driver is a particular blind type. If this is used, the proxy will disable the pulldown from being selectable by a dealer.
Name
SET_TYPE ()
Parameter | Type | Description |
---|---|---|
SET TYPE | INT | Enumeration of the blind type. |
Movement Types:
- 0 - Shade (Default as all coverings are considered to be Shades in the industry)
- 1 - Group
- 2 - Blind (Since a blind has slates/louvers that often move, a blind can be bound to a louver movement for association)
- 3 - Louver
- 4 - Curtain
- 5 - Shutter
- 6 - Blackout
- 7 - Opaque Glass
- 8 - Awning
- 9 - Door
- 10 - Screen
If set to -1 then a dealer can select a choice from a pulldown in the proxy property control.
Returns
None
Usage Note
This Notification sends DataToUI of: blind_setup xml
.
STOPPED
State Notification used by the protocol to inform the proxy the blinds have stopped moving. A Stop notification that uses the optional LEVEL parameter should be used if a blind is moving and changes direction.
Name
STOPPED ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Where the blinds stopped at. This will also set the general level as well to this value. |
Returns
None
Usage Note
This Notification Fires Director Event: Stop
level_final
is also updated to the value passed in through the level parameter.
Sends DataToUI "Stopped" including: level
- The level it stopped at.
MOVING
State Notification Used by the protocol to inform the proxy the blinds have started to move.
Name
MOVING ()
Parameter | Type | Description |
---|---|---|
LEVEL TARGET | INT | Integer of the target level that the blinds are currently expected to stop at. |
RAMP RATE | NUM | Number of milliseconds it is expected to take to get to the level_target . |
LEVEL | INT | Optional. Integer of the level the blind started moving from. If not specified, the proxy assumes the last level sent by a STOPPED Notification. This optional parameter should be sent in the case the blind was moving to a level but is interrupted/commanded to go to a different level. Without specifying this parameter in an interruption case, Toggle on UIs and UI display of blind movement and direction will be inaccurate. Drivers might need to do a STOP or GET for hardware position before the blind direction is commanded to go to the new position in order to obtain an accurate LEVEL for this value of where the blind was before the new movement began. |
Returns
None
Usage Note
This Notification Fires Director Event: Moving. Sends DataToUI: "Moving" including:
level
- Where the blind is starting from.level_target
- Where the blind is going to.ramp_rate
- The number of milliseconds it will take the blind to reach this position.
Blind Capabilities
always_send_level
If value is true, then the SetTargetLevel commands are always sent regardless of current level values. This is useful if the blind device does not support two-way communication and is controlled outside of the Control4 operating system. Setting this capability to True ensures that the SetTargetLevel values are always available so accurate blind performance can occur.
Signature
<always_send_level></always_send_level>
Parameter | Description |
---|---|
bool | True/False. Defaults to False |
Example
<capabilities>
<always_send_level>true</always_send_level>
</capabilities>
can_stop
Capability to stop movement of blinds
Signature
<can_stop></can_stop>
Parameter | Description |
---|---|
bool | True/False |
Usage Note
This capability was delivered pre-2.9.0. It is still supported by the latest version of the proxy for drivers that do not have the has_level capbility
defined.
Example
<capabilities>
<can_stop>true</can_stop>
</capabilities>
driver_handles_toggle
Capability to stop movement of blinds
Signature
<driver_handles_toggle></driver_handles_toggle>
Parameter | Description |
---|---|
bool | True/False |
Usage Note
This capability defaults to false. If false, the proxy will handle the toggle commands (which sends SET_LEVEL_TARGET
commands to the driver) or if true will send a LEVEL_TOGGLE
command to the driver so the driver can handle toggle as it desires.
We strongly recommend driver developers do not set this to true unless they absolutely must. Inconsistencies will occur if there are a mix of different driver types in a blind group. This will cause blinds to move differently when that group is commanded to toggle.
The blind proxy has logic that treats toggle the same as lights in Control4. If a blind is not moving but open any amount and someone presses toggle, the proxy will always send a SET_LEVEL_TARGET
of the closed value. This is due to the high possibility of someone entering a room and not knowing what direction the blind previously moved. However, if a blind is currently in motion and someone presses toggle, the proxy will send SET_LEVEL_TARGET
of the opposite direction that the blind is moving. This has the most natural use of toggle for real-world scenarios.
Example
<capabilities>
<driver_handles_toggle>true</driver_handles_toggle>
</capabilities>
has_level
A boolean capability indicating if the blind can support reporting of discrete level values through Notifications. Default to False in order for older drivers to work.
Signature
<has_level></has_level>
Parameter | Description |
---|---|
bool | True/False |
Usage Note
If stop is not supported 0 is closed and 1 is open.
If stop is supported 0 is closed and 1 is somewhere in the middle depending when stop is pressed and 2 for open.
If a blind supports closed, 4 distinct middle levels, and open then 0 is closed, 1-4 would be the distinct levels, and 5 would be open.
Reporting discrete values is possible even if accepting discrete commands is not. Presets, timers, or other formulas can be used to report discrete values.
Example
<capabilities>
<has_level>true</has_level>
</capabilities>
level_closed
Integer indicating the closed level of the control surface. Default to 0. This capability is only needed if has_level
is set and the value is other than 0. The value passed in this capability should be less than the value for level_open
.
Signature
<level_closed></level_closed>
Example
<capabilities\>
<level_closed>true</level_closed>
</capabilities>
level_open
Integer indicating the open level of the control surface. Defaults to 1 and must be a higher integer than level_closed
. This capability is only needed if has_level
is set and the value is other than 1. For example, if the blind control supports adjustments every 5%, use 20.)
Signature
<level_open></level_open>
Example
<capabilities>
<level_open>1</level_open>
</capabilities>
level_discrete_control
Boolean indicating if a control surface can be set by a COMMAND to something other than the level for closed and the level for open.
If false, a UI will only send level_closed and level_open integer values to the proxy/driver. However, a driver could still notify various levels interpolated based on movement and or duration/time in each direction or using another formula.
If true, the driver should support all level values in the level range. This could be discrete percentages or even include using level values of 1,2,3,... to execute presets. However, the min (0) and max (X) should always be programmed for close and open levels respectively.
Signature
<level_discrete_control</level_discrete_control>
Example
<capabilities>
<level_discrete_control>true</level_discrete_control>
</capabilities>
level_closed_secondary
Integer indicating how far past open `(levelopen) the blind can go to a second closed state. No default value exists for this capability and drivers should not include level_closed_secondary if a secondary closed position does not exist.
An example case is a full range louver with 11 positions (0% to 100% with 10% resolution) that has:
-
level_closed
of 0 level_open
of 5-
level_close_secondary
of 5
This gives the full close-open-close range of 0 to 10.
It should be noted that a generic "Close" UI or Composer Programming commands will send the level_closed
value for "Close". No default value exists for this capability and drivers should not include level_closed_secondary
if a secondary closed position does not exist.
Signature
<level_closed_secondary></level_closed_secondary>
Example
<capabilities>
<level_closed_secondary>11</level_closed_secondary>
</capabilities>
level_unknown
Integer indicating the level value that is to be specified as "unknown blind position". This is often, but not always, a value outside of the range of valid level values. This allows a driver that is initializing (not yet communicating with the blind), lost communication or for any other reason does not know the exact location of the blind to notify Director that the current level is unknown.
Signature
<level_unknown></level_unknown>
Example
<capabilities\>
<level_unknown>11</level_unknown>
</capabilities>
movement
Integer enumeration of a movement function for the blind. If set in the driver, the pull-down to select this value will be disabled in the proxy. For louvers and other slate type objects, the movement observed is that of the forward/leading (aka nearest to the person viewing the movement) edge of the louver or slate.
An example for a general louver would be where the primary closed position for the leading edge is Down, so Up (Middle) would be Open, and an optional Secondary Closed would be where the front edge is furthest up.
Signature
<movememt></movement>
Parameter | Description |
---|---|
0 | Open/Close (Open/Close) |
1 | Up to Down (Up is open, Down is closed) |
2 | Down to Up (Down is open, Up is Closed) |
3 | Out to In (Out is Open, In is Closed) |
4 | Left to Right (Left is Open, Right is Closed) |
5 | Right to Left (Right is Open, Left is Closed) |
Example
<capabilities>
<movememt>4</movememt>
</capabilities>
type
Integer representing the enumeration of a type of blind. If set in a driver, the pull-down to select this value will be disabled in the proxy
Signature
<type></type>
Parameter | Description |
---|---|
0 | Shade (Default as all coverings are considered to be Shades in the industry) |
1 | Group |
2 | Blind (Since a blind has slates/louvers that often move, a blind can be bound to a louver movement for association) |
3 | Louvre |
4 | Curtain |
5 | Shutter |
6 | Blackout |
7 | Opaque Glass |
8 | Awning |
9 | Door |
10 | Screen |
Example
<capabilities>
<type>6</type>
</capabilities>
Blind Events
The following Events are included with the 2.9.0 and later releases. The events fired by the proxy have to deal with changes in the blind itself. They include:
Open
(ID=1) - Fired when the blinds are opened from a closed state.
Fully Closed
(ID=2) - Fired when the blinds are fully closed from an open state.
Stopped
(ID=3) - Fired when the stop notify arrives at proxy.
Fully Opened
(4) - Fired when the blinds are at their full open state
Moving
(ID=5) - Fired when the moving notify arrives at proxy.
Level_Changed
(ID=6) - Fired when the level changes.
Level_Target_Changed
(ID=7) - Fired when the level end changes.
Opening
(ID=8) - Fired when the blinds begin to open
Closing
(ID=9) - Fired when the blinds begin to close.
Blind Variables
Registered Variables included in post 2.9.0 releases include:
Open
(ID=1000) - A boolean indicating if the control is open. Will be true when level is at level_open
.
Fully Closed
(ID=1001) - A boolean indicating if the control is fully closed. Will be true when level is at level_closed
.
Stopped
(ID=1002) - A boolean indicating if the blind is stopped. On drivers that support stop and extended functionality, drivers must send stopped = false when the hardware starts to move and stopped = true once it has finished moving.
Fully Open
(ID=1003) - A boolean indicating if the control is fully open.
Level
(ID=1004) - An integer indicating the blind level (level range is potentially unique per driver.
Target Level
(ID=1005) - An integer indicating the target blind level when the hardware is to stop. This is used to know if a driver is currently going up or down.
Type
(ID=1006) - A string representation of the enumeration for the type.
Movement
(ID=1007) - A string representation of the enumeration for the movement.
Opening
(ID= 1008) - A boolean indicating if the control is in the process of opening.
Closing
(ID= 1009) - A boolean indicating if the control is in the process of closing.
Camera Proxy Commands
CAMERA_OFF
Command to turn camera image capturing off.
Name
CAMERA_OFF ()
Parameters
None
Returns
None
CAMERA_ON
Command to turn camera image capturing on.
Name
CAMERA_ON ()
Parameters
None
Returns
None
CHANGE_PRESET_NAME
Change theme of a Preset.
Name
CHANGE_PRESET_NAME ()
Parameter | Description |
---|---|
INT | Preset ID, required. |
STR | Base64 encoded preset name, required. |
Returns
None
CHANGE_PRESET_ORDER
Change the order of the Presets
Name
CHANGE_PRESET_ORDER ()
Parameter | Description |
---|---|
STR | Presets: Comma separated list of preset IDs in the new order. For example: "4,5,2,1" |
Returns
None
CHECK_ADDRESS_PORT
Composer Pro command used in the Camera Test/Validation area. Verifies the camera Address and Port ID.
Name
CHECK_ADDRESS_PORT ()
Parameter | Description |
---|---|
str | Address to verify. |
int | Port ID to verify. |
Returns
None
CHECK_URL
Composer Pro command used in the Camera Test/Validation area. Verifies the camera 's URL components.
Name
CHECK_URL ()
Parameter | Type | Description |
---|---|---|
Mode | STR | SNAPSHOT, MJPEG OR H264 |
Address | STR | Address. The address to verify. |
Port ID | INT | Port ID to verify. |
Query | STR. | Query. The path/query of the URL. |
Returns
None
CREATE_PRESET
Creates a new preset.
Name
CREATE_PRESET ()
Parameter | Description |
---|---|
STR | Base64 encoded preset name, required. |
Returns
None
DELETE_PRESET
Deletes a Preset.
Name
DELETE_PRESET ()
Parameter | Type | Description |
---|---|---|
PRESET ID | INT | Preset ID, required. |
Returns
None
GET_MJPEG_QUERY
Command that is initiated in Composer Pro and immediately returns a block of XML information. It returns the query string needed to create the URL for MJPEG server push request.
Name
GET_MJPEG_QUERY ()
Parameter | Description |
---|---|
num | The desired resolution x-axis value. |
num | The desired resolution y-axis value. |
num | The delay in milliseconds between pushed frames |
str | Query. The path/query of the URL. |
Returns
XML: <mjpeg_query_string> url-query-string</mjpeg_query_string>
GET_PROPERTIES
Command called once by a UI entity to learn how to access a camera. It returns a block of XML reporting the properties of the camera.
Name
GET_PROPERTIES ()
Returns
<camera_properties>
<address >hostname or internet address</address>
<http_port>port</http_port>
<rtsp_port>port</rtsp_port>
<authentication_required>true or false</authentication_required>
<authentication_type>BASIC</authentication_type>
<username>~username~</username>
<password>password</password>
<publicly_accessible>true or false</publicly_accessible>
</camera_properties>
GET_ RTSP_H264_QUERY_ STRING
Command that is initiated in Composer Pro and immediately returns a block of XML information. It returns the query string needed to create the URL for RTSP H264 stream request.
Name
GET_RTSP_H264_QUERY ()
Parameter | Description |
---|---|
num | The desired resolution x-axis value. |
num | The desired resolution y-axis value. |
num | The delay in milliseconds between pushed frames |
str | Query. The path/query of the URL. |
Returns
XML: <rtsp_h264_query_string> url-query-string</rtsp_h264_query_string>
GET_SNAPSHOT_QUERY_STRING
Command that is initiated in Composer Pro and immediately returns a block of XML information. It returns the query string needed to create the URL for HTTP snapshot request.
Name
GET_SNAPSHOT_QUERY_STRING ()
Parameter | Description |
---|---|
SIZE X | The desired resolution x-axis value. |
SIZE Y | The desired resolution y-axis value. |
Returns
XML: <snapshot_query_string>url-query-string</snapshot_query_string>
GET_STREAM_URLS
This command is used to obtain URLs for a camera that does not have a constant URL like a Cloud based camera or for cameras that have a wider range of features and configurable options that can produce better customer experiences using various clients.
A Client will make this request to a driver and provide information about how the client will be using the stream. The driver optionally can adjust the URL(s) returned based on this information. Driver developers are encouraged to test their driver on various devices to ensure good customer experiences when viewing collages, high resolution or high frame rate streams.
Parameter | Description |
---|---|
CODEC | Optional. Comma separated list of codecs that the client can support with the most preferred first. A driver is not required to handle this but some drivers may want to if they support multiple codecs. (mjpeg, h264, h265) |
RESOLUTION | Optional. Resolution that the client will be using to display the stream. A driver is not required to support this but this can be helpful for clients that may need a lower resolution stream for collages of multiple cameras and a 4MP or higher stream would tax the client hardware. |
FPS | Optional. Frames Per Second that the client would prefer. A driver is not required to support this but if it does it may result in better customer experience when dealing with collages on Navigators. |
Examples
An example of the simplest XML returned by a driver is shown to the right:
<streams>
<stream url="http://192.168.1.150/view_camera.cgi">
</streams>
or
<streams>
<stream url="https://192.168.1.150:443/view_camera.cgi" codec="h264">
<stream url="http://192.168.1.150:80/view_camera_h265.cgi" codec="h265">
</streams>
This is followed by an example from a camera with more features and can provide more options to allow clients to pick a better stream:
<streams>
<stream url="rtsps://server.company.com:554/rtsp.cgi" codec="h265" resolution="1920x1080" fps="60">
<stream url="rtsps://server.company.com:554/cloudapi.cgi?fh2f5hw2" codec="h265" resolution="640x480" fps="5">
<stream url="rtsp://server.company.com:554/cloudapi.cgi?fh2f4hw1" codec="h264" resolution="1920x1080" fps="60">
<stream url="rtsp://server.company.com:554/cloudapi.cgi?fh2f4hw2" codec="h264" resolution="640x480" fps="5">
<stream url="https://server.company.com:443/cloudapi.cgi?fh2fhsw3" codec="mjpeg" resolution="1920x1080" fps="20">
<stream url="https://server.company.com:443/cloudapi.cgi?fh2fhsw5" codec="mjpeg">
<stream url="http://server.company.com:80/cloudapi.cgi?fh2fhw3" codec="mjpeg" resolution="1920x1080" fps="20">
<stream url="http://server.company.com:80/cloudapi.cgi?fh2fhw5" codec="mjpeg">
</streams>
HOME
Move the camera to its home position.
Name
HOME ()
Parameters
None
Returns
None
MODIFY_PRESET
Modify an existing Preset.
Name
MODIFY_PRESET ()
Parameter | Type | Description |
---|---|---|
PRESET ID | INT | Preset ID, required. |
Returns
None
MOVE_TO
Have the camera move to location x and y within the specified window.
Name
MOVE_TO ()
Parameter | Description |
---|---|
int | Width |
int | Height |
int | The desired x-axis value. |
int | The desired y-axis value. |
Returns
None
NIGHT_MODE
Enable/disable night mode.
Name
NIGHT_MODE ()
Parameter | Type | Description |
---|---|---|
bool | BOOL | Enable/disable night mode. |
Returns
None
PAN_LEFT
Pan to the left.
Name
PAN_LEFT ()
Parameters
None
Returns
None
PAN_RIGHT
Pan to the right.
Name
PAN_RIGHT ()
Parameters
None
Returns
None
PAN_SCAN
Have the camera execute a complete scan from left to right.
Name
PAN_SCAN ()
Parameters
None
Returns
None
PRESET
Set the camera to preset location.
Name
NIGHT_MODE ()
Parameter | Type | Description |
---|---|---|
Index Unit | NUM | Valid values: 1 – n, where n is max preset defined by capabilities |
Returns
None
SELECT_PRESET
Select the Preset.
Name
SELECT_PRESET ()
Parameter | Type | Description |
---|---|---|
PRESET ID | INT | Camera Preset ID. Required. |
Returns
None
SET_ADDRESS
Set the camera address.
Name
SET_ADDRESS ()
Parameter | Type | Description |
---|---|---|
STR | Camera Address |
Returns
None
SET_AUTHENTICATION_REQUIRED
Composer Pro command to set whether or not authentication is required
Name
SET_AUTHENTICATION_REQUIRED ()
Parameter | Description |
---|---|
bool | True/False |
Returns
None
Usage Note
See the DriverWorks API documentation for URL Interface API: POST for Authentication information.
SET_AUTHENTICATION_TYPE
Composer Pro command to set whether or not authentication is required
Name
SET_AUTHENTICATION_TYPE ()
Parameter | Description |
---|---|
str | BASIC or DIGEST |
Returns
None
Usage Note
Note that as of 2.5.3 only Basic Authentication is supported. See the DriverWorks API documentation for URL Interface API: POST for Authentication information.
SET_USERNAME
Composer Pro command to set the Authentication username.
Name
SET_USERNAME ()
Parameter | Description |
---|---|
str | Username |
Returns
None
Usage Note
See the DriverWorks API documentation for URL Interface API: POST for Authentication information.
SET_HTTP_PORT
Composer Pro command to set the HTTP Port
Name
SET_HTTP_PORT ()
Parameter | Type | Description |
---|---|---|
PORT ID | INT | Port ID |
Returns
None
SET_RSTP_PORT
Composer Pro Command to set the Rapid Spanning Tree Protocol port.
Name
SET_RSTP_PORT ()
Parameter | Type | Description |
---|---|---|
PORT ID | INT | Port ID |
Returns
None
SET_PASSWORD
ComposerPro command to set the Authentication password.
Name
SET_PASSWORD ()
Parameter | Description |
---|---|
str | Password |
Returns
None
SET_PUBLICLY_ACCESSIBLE
Composer Pro command to set whether or not the camera can be accessed from public Internet.
Name
SET_PUBLICLY_ACCESSIBLE ()
Parameter | Description |
---|---|
bool | True/False |
Returns
None
SET_SNAPSHOT_REFRESH_RATE
Sets image refresh rate in seconds.
Name
SET_SNAPSHOT_REFRESH_RATE ()
Parameter | Type | Description |
---|---|---|
RATE UNIT | NUM | Rate Unit in seconds. |
Returns
None
TILT_DOWN
Tilt camera down.
Name
TILT_DOWN ()
Parameters
None
Returns
None
TILT_SCAN
Have the camera execute a complete scan from top to bottom.
Name
TILT_SCAN ()
Parameters
None
Returns
None
TILT_UP
Tilt camera down.
Name
TILT_UP ()
Parameters
None
Returns
None
USE_DEFAULTS
Command to use the camera's factory defaults as defined by the driver capabilities.
Name
USE_DEFAULTS ()
Parameters
None
Returns
None
ZOOM_IN
Zoom canera in.
Name
ZOOM_IN ()
Parameters
None
Returns
None
ZOOM_OUT
Zoom camera out.
Name
ZOOM_OUT ()
Parameters
None
Returns
None
Camera Protocol Notifications
ADDRESS_CHANGED
Notification that the camera's address has a changed. Sent from the API OnNetworkBindingChanged.
Name
ADDRESS_CHANGED ()
Parameter | Description |
---|---|
str | New address value. |
Returns
None
DYNAMIC_URLS_CHANGED
Notify used when the configured camera URLS have been changed. The Camera proxy will then force Navigators to refresh any cached URLs.
Name
DYNAMIC_URLS_CHANGED ()
Parameters
None
Returns
None
Example
C4:SendToProxy(PROXY_BINDING, 'DYNAMIC_URLS_CHANGED', { }, 'NOTIFY')
HTTP_PORT_CHANGED
Notification that the HTTP port has changed. Used rarely but applicable in instances where the protocol driver sets the HTTP port.
Name
HTTP_PORT_CHANGED ()
Parameters
None
Returns
None
HTTPS_PORT_CHANGED
Used to update the HTTPS port that will be used when constructing HTTPS URLs.
Name
HTTPS_PORT_CHANGED ()
Parameter | Type | Description |
---|---|---|
PORT | INT | PORT - The new HTTPS port to be used. |
Returns
None
DYNAMIC_CAPABILITY_CHANGED
Used to Notify the Proxy that the driver would like to change a capabilities value. This is only applicable to capabilities denoted as "Yes" in the Dynamic Capabilities section of this Proxy’s Capabilities section.
Name
DYNAMIC_CAPABILITY_CHANGED ()
Parameter | Description |
---|---|
capabilities | Table of capabilities as defined in the c4i/.c4z. The value of this parameter would be the value as denoted in the .c4i/.c4z as well. |
Returns
None
Example
NOTIFY.DYNAMIC_CAPABILITIES_CHANGED({supports_color=true}, 5001)
PRESETS_CHANGED
The camera driver should send this notification to the Proxy on startup with the current presets list. The driver should also notify again whenever presets are changed: created, renamed, updated, deleted, or re-ordered.
Name
PRESETS_CHANGED ()
Parameters
None
Returns
None
Example
`C4:SendToProxy(PROXY_BINDING, 'PRESETS_CHANGED', { XML = "<dynamic_presets><max_presets>100</max_presets><preset...</dynamic_presets>" }, 'NOTIFY') `
— Note that formed XML for dynamic_presets should resemble the following:
<dynamic_presets>
<max_presets> Int of max allowed presets </max_presets>
<presets>
<preset>
<id> preset id </id>
<name> Base64 encoded name </name>
</preset>
…
</presets>
</dynamic_presets>
PROPERTY_DEFAULTS
Notification sent from the protocol driver through ON DRIVER LATE INIT containing the camera's default properties
Name
PROPERTY_DEFAULTS ()
Parameter | Type | Description |
---|---|---|
HTTP Port. | NUM | HTTP Port. Default port is 80. |
RTSP Port | NUM | RTSP Port. Default port is 554. |
AUTHENTICATION_REQUIRED |
BOOL | AUTHENTICATION_REQUIRED True/False. |
AUTHENTICATION_TYPE |
STR | AUTHENTICATION_TYPE “BASIC” or “DIGEST”. |
deafult_username |
STR | Username - deafult_username |
deafult_password |
STR | Password - deafult_password |
Returns
None
STREAM_URLS_READY
Notify used for following up to a GET_STREAM_URLS Synchronous call. This Notify will let a UI know that the URL information they requested is ready. The driver must use the same key parameter value that was returned to the UI as the key parameter in this notify.
Parameter | Description |
---|---|
KEY | Key of the originating call for the snapshot to be created. |
URLS | String of XML object as described in the description of this call. |
Examples
An example of the simplest XML used by a driver is shown to the right:
<streams key="1234">
<stream url="http://192.168.1.150/view_camera.cgi">
</streams>
or
<streams key="1234" camera_address="192.168.1.150">
<stream url="https://192.168.1.150:443/view_camera.cgi" codec="h264">
<stream url="http://192.168.1.150:80/view_camera_h265.cgi" codec="h265">
</streams>
This is followed by an example from a camera with more features and can provide more options to allow clients to pick a better stream:
<streams key="1234" camera_address="server.company.com">
<stream url="rtsps://192.168.1.150:554/rtsp.cgi" codec="h265" resolution"1920x1080" fps="60">
<stream url="rtsps://192.168.1.150:554/cloudapi.cgi?fh2f5hw2" codec="h265" resolution"640x480" fps="5">
<stream url="rtsp://192.168.1.150:554/cloudapi.cgi?fh2f4hw1" codec="h264" resolution"1920x1080" fps="60">
<stream url="rtsp://192.168.1.150:554/cloudapi.cgi?fh2f4hw2" codec="h264" resolution"640x480" fps="5">
<stream url="https://192.168.1.150:443/cloudapi.cgi?fh2fhsw3" codec="mjpeg" resolution"1920x1080" fps="20">
<stream url="https://192.168.1.150:443/cloudapi.cgi?fh2fhsw5" codec="mjpeg">
<stream url="http://192.168.1.150:80/cloudapi.cgi?fh2fhw3" codec="mjpeg" resolution"1920x1080" fps="20">
<stream url="http://192.168.1.150:80/cloudapi.cgi?fh2fhw5" codec="mjpeg">
</streams>
USE_HTTPS_CHANGED
Used to update the proxy to tell it to generate HTTPS URLs instead of HTTP URLs.
Name
USE_HTTPS_CHANGED ()
Parameter | Type | Description |
---|---|---|
USE HTTPS | BOOL | A flag that indicates an HTTPS URL should be generated instead of an HTTP URL. |
Returns
None
Camera Properties
ADDRESS
The camera Hostname or Internet address. Displayed on the Camera Driver's Properties page in Composer Pro.
AUDIO
Established whether or not audio distribution is supported from the camera. If present, this property is displayed on the Camera Driver's Properties page in Composer Pro.
ASPECT RATIO
Allows for the setting of the desired aspect ratio for camera queries. Navigators use this value when sending a request to a camera. Displayed on the Camera Driver's Properties page in Composer Pro.
Populated by the defined:1 aspect_ratio capability
.
ASPECT RATIO LIST
Comma-delimited list of possible aspect ratios that the camera supports. The values here are displayed on the Camera Driver's Properties page in Composer Pro.
AUTHENTICATION REQUIRED
Established whether or not authentication is required. Displayed on the Camera Driver's Properties page in Composer Pro.
AUTHENTICATION TYPE
The type of authentication: "BASIC" or "DIGEST" Displayed on the Camera Driver's Properties page in Composer Pro. Note that prior to O.S Release 2.5.3 only Basic Authentication was supported.
HTTP PORT
The camera’s HTTP port. Displayed on the Camera Driver's Properties page in Composer Pro.
PASSWORD
The password value displayed on the Camera Driver's Properties page in Composer Pro.
PUBLICLY ACCESSIBLE
Can the camera be accessed on public Internet. Displayed on the Camera Driver's Properties page in Composer Pro.
RTSP PORT
The camera’s RTSP port to setup H.264 stream. Displayed on the Camera Driver's Properties page in Composer Pro.
SNAPSHOT REFRESH RATE
The amount of time in seconds for the camera to refresh its image signal. Displayed on the Camera Driver's Properties page in Composer Pro.
USERNAME
The username value. This is displayed on the Camera Driver's Properties page in Composer Pro.
Camera Proxy Extras Interface Library
Extras are configured from the Setting option from the main menu in ComposerPro. The settings option only shows if the has_extras capability is set to true.
Extras Class
Overview
This class provides an interface between instances of the ExtrasObjectBasedClass. This class can cover following use cases:
- Add/Remove/Change Extras Section of an Extras Object
- Add/Remove Extras Object
- Get instance of an existing Extras Object
- Make Extras State/Setup XML strings based on objects provided
- Update Extras Object state
ObjectParameters
Structure that contains all fields needed to initialize ExtrasObject instance
Field Name | Field Type |
---|---|
id | string |
command | string |
label | string |
hidden | string_bool |
readonly | string_bool |
extraparams | table<string,string> |
Extras:addObjects
Adds extras object to the container in the section named sectionLabel
New object will be added at the end of the section and will be displayed as the last section element in the CI. In case of object array, Object order in the CI will be in the same order objects were sorted in the input array.
Function Signature:
Extras:addObjects(objects, sectionLabel)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objects | ExtrasObjectBasedClass\ | ExtrasObjectBasedClass: List or individual extras object |
sectionLabel | string |
Returns:
Name | Type | Description |
---|---|---|
cnt | number | Number of objects added |
Extras:getObject
Returns extras object with id no matter the section
Function Signature:
Extras:getObject(id)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object |
Returns:
Name | Type | Description |
---|---|---|
object | ExtrasObjectBasedClass | nil |
Extras:updateObject
Updates value and hide parameter for the object with objId and sends notification to proxy bound to proxyId
If value or hide is not provided, field value will not change. This methods updates fields and sends Proxy Notification that state has been changed.
Function Signature:
Extras:updateObject(proxyId, objId, newValue, hide)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objId | string | ID of the extras object |
newValue | string | Value to be updated |
hide | string_bool | True or false string |
Extras:removeObject
Removes extras object with id no matter the section.
Function Signature:
Extras:removeObject(id)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object |
Returns:
Name | Type | Description |
---|---|---|
ret | boolean | Returns true if removal was successful |
Extras:makeSetupXml
This method makes complete XML string to be send as response to GET_EXTRAS_SETUP proxy command.
Function Signature:
Extras:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
Extras:makeStateXml
This method makes complete XML string to be send as response to GET_EXTRAS_STATE proxy command or to be sent after extras object update.
Function Signature:
Extras:makeStateXml()
Returns:
Name | Type |
---|---|
xml | string |
Extras:sendSetup
Builds xml and sends proxy notification EXTRAS_SETUP_CHANGED
Function Signature:
Extras:sendSetup(proxyId)
Extras:sendState
Builds xml and sends proxy notification EXTRAS_STATE_CHANGED
Function Signature:
Extras:sendState(proxyId)
Section
Structure that represent a section. Holds section name and ExtrasObject based classes array.
Field Name | Field Type |
---|---|
label | string |
objects | ExtrasObjectBasedClass] |
ExtrasObjectBasedClass
This alias is for all classes that inherits the ExtrasObject class.
Type
Name | Value |
---|---|
ExtrasObjectBasedClass | ExtrasButton, ExtrasCheckbox |
string_bool
Alias for values can be provided as hide argument
Type
Name | Value |
---|---|
string_bool | "true" "false" |
Extras
Container class for the ExtrasObject based instances (Button, Checkbox ...) This class is used to hold ExtrasObject based instances and to handle XML assembling and sending. This class handles sections as well as = inheritsFrom(nil)
Field Name | Field Type |
---|---|
sections | Section |
proxyId | number |
has_extras | boolean |
Function Parameters:
Parameter | Type |
---|---|
proxyId | number |
Extras:addSection
Adds section to the instance
A Section table will be initialized and added in the self.sections field. The object field of the table type Section will bi initialized as empty table. Section order in the CI will be in the same order section were added in the container class instance.
Function Signature:
Extras:addSection(label)
Function Parameters:
Parameter | Type | Description |
---|---|---|
label | string | Name of the section that will be displayed in the CI |
Returns:
Name | Type | Description |
---|---|---|
ret | boolean | Returns true if insertion was successful |
Extras:removeSection
Removes the section with the label sectionLabel from the list
This method will remove the section with label sectionLabel and all objects in the section. Section indexes will be changed to fill the empty space but the order will not change.
Function Signature:
Extras:removeSection(sectionLabel)
Function Parameters:
Parameter | Type | Description |
---|---|---|
sectionLabel | string |
Returns:
Name | Type | Description |
---|---|---|
ret | boolean | Returns true if the operation was successful |
Extras:getSection
Returns section table with the label sectionLabel
Function Signature:
Extras:getSection(sectionLabel)
Function Parameters:
Parameter | Type | Description |
---|---|---|
sectionLabel | string |
Returns:
Name | Type | Description |
---|---|---|
section | Section: nil |
Extras:changeSection
Moves extras object with id in section named newSection
Function Signature:
Extras:changeSection(id, newSection)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object |
newSection | string | Name of the new section to put the object |
Extras:cleanCapability
This method cleans the has_extras capability.
Function Signature:
Extras:cleanCapability()
Extras:setCapability
This method sets the has_extras capability.
Function Signature:
Extras:setCapability()
ExtrasButton
Overview
This class represents an abstraction of the Extras Button object. The class interface provides following cations:
- Initialization of an Extras Button object
- Setting Extras Button object parameters (label, button text, etc)
ExtrasButton : ExtrasObject
Class that represent extras button functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasButton = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | string |
text |
ExtrasButton:construct
ExtrasButton constructor
Function Signature:
ExtrasButton:construct(objParams, text)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
text | string | Button text that will be displayed on the button in the CI |
ExtrasButton:makeSetupXml
Returns XML string that represents the button setup with all extra parameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasButton:makeSetupXml()
Returns:
Name | Type |
---|---|
xml | string |
ExtrasButton:getStateXml
Returns XML string that represents extras object state
This method overrides the method from the base class. This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string.
The string will be return in the following command:
- \<object id= "\[self.id]" value="\[self.value]" /\>
Function Signature:
ExtrasButton:getStateXml()
Returns:
Name | Type |
---|---|
xml | string |
ExtrasCheckbox
Overview
This class represents an abstraction of the Extras Checkbox object. The class interface provides following cations:
- Initialization of an Extras Checkbox object
- Setting Extras Checkbox object parameters and value
ExtrasCheckbox : ExtrasObject
Class that represent extras checkbox functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasCheckbox = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
ExtrasCheckbox:construct
ExtrasCheckbox constructor
Function Signature:
ExtrasCheckbox:construct(objParams, value)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
value | string | Checkbox value (true, false) that will be displayed on the button in the CI |
ExtrasCheckbox:makeSetupXml
Returns XML string that represents the button setup with all extra parameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasCheckbox:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasIcon
Overview
This class represents an abstraction of the Extras Icon object. The class interface provides following cations:
- Initialization of an Extras Icon object
- Setting Extras Icon object parameters and value
ExtrasIcon : ExtrasObject
Class that represent extras icon functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasIcon = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
ExtrasIcon:construct
ExtrasIcon constructor
Function Signature:
ExtrasIcon:construct(objParams, value)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters: For initialization of the base class | |
value | string | Link or path to the image that will be displayed in the CI |
ExtrasIcon:makeSetupXml
Returns XML string that represents the button setup with all extra parameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasIcon:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasList
Overview
This class represents an abstraction of the Extras List object. The class interface provides following cations:
- Initialization of an Extras List object
- Setting Extras Checkbox object parameters and list parameters
- Setting the currently selected item
ExtrasListParameters
Field Name | Field Type |
---|---|
value | string |
maxSelections | Maximal |
minSelections | Minimal |
list | table<string,string> |
ExtrasList : ExtrasObject
Class that represent extras list functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasList = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
__name | Methafield |
maxSelections | number |
minSelections | number |
list | table <string,string> |
ExtrasList:construct
ExtrasList constructor
Function Signature:
ExtrasList:construct(objParams, listParams)
Function Parameters:
Parameter | Description |
---|---|
objParams | ObjectParameters: For initialization of the base class |
ExtrasListParameters | Parameters for initialization of the list |
ExtrasList:makeListXml
Returns the xml string needed to for response to the GET_EXTRAS_SETUP proxy message.
Returns complete list tag. This tag should be a child tag of the object tag.
Function Signature:
ExtrasList:makeListXml()
Returns:
Name | Type |
---|---|
mxl | string |
ExtrasList:makeSetupXml
Returns XML string that represents the list setup with all extra parameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasList:makeSetupXml()
Returns:
Name | Type |
---|---|
xml | string |
ExtrasNumber
Overview
This class represents an abstraction of the Extras Number object. The class interface provides following cations:
- Initialization of an Extras Number object
- Setting Extras Number object parameters, number parameters
ExtrasNumber : ExtrasObject
Class that represent extras number functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasNumber = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
min | number |
max | number |
resolution | number |
ExtrasNumber:construct
ExtrasNumber constructor
Function Signature:
ExtrasNumber:construct(objParams, numberParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
numberParams | table<string,number\ | string> |
ExtrasNumber:makeSetupXml
Returns XML string that represents the button setup with all extra parameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasNumber:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject
ExtrasObject
Base class for classes that represent extras objects (button, checkbox ...) Should not create independent instance from this class This class only purpose is to be base class for extras object classesrasObject = inheritsFrom(nil)
Field Name | Field Type |
---|---|
id | string |
command | string |
label | string |
hidden | string_bool |
readonly | string_bool |
extraparams | table<string,string> |
ExtrasObject:construct
ExtrasObject constructor
Function Signature:
ExtrasObject:construct(objParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters: Table of parameters needed to assemble XML |
ExtrasObject:addExtraparam
Adding extra parameter to the Object instance
If extra parameter is added, tParams argument of the Proxy command will contain value of the extras object with id.
Function Signature:
ExtrasObject:addExtraparam(id, name)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object that will be connected |
name | string | of the extras object that will be connected |
ExtrasObject:removeExtraparam
Removing extra parameter from the list
This method will remove extra parameter with id and value of that extras object will not be received in proxy command.
Function Signature:
ExtrasObject:removeExtraparam(id)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string |
ExtrasObject:getStateXml
Returns XML string that represents extras object state
This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string. The string will be return in the following command:
`- \<object id= "\[self.id]" value="\
self.value" />
``
Function Signature:
ExtrasObject:getStateXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject:getExtraparamsXml
Returns XML string that represents list of extraparameters
This string should be incorporated in response to GET_EXTRAS_SETUP Key and value of the extraparams field will be escaped end integrated in the message.
Function Signature:
ExtrasObject:getExtraparamsXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject:update
Update extras object individually.
This method should be called when the user wants to udate an object individually. The method from the Extras class will update all objects, this method will update just this on object. Also, this method is inherited by all ExtrasObjectBasedClass instances.
Function Signature:
ExtrasObject:update(value, hidden)
Function Parameters:
Parameter | Type | Description |
---|---|---|
value | string | New value for the extras object |
hidden | string | Hide the object or not |
ExtrasSlider : ExtrasObject
Class that represent extras slider functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSlider = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
__name | Methafield |
min | number\ |
max | number\ |
resolution | number\ |
ExtrasSlider:construct
ExtrasSlider constructor
Function Signature:
ExtrasSlider:construct(objParams, sliderParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters: For initialization of the base class | |
sliderParams | table<string,number\ | string> |
ExtrasSlider:makeSetupXml
Returns XML string that represents the button setup with all extra parameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasSlider:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject
Base class for classes that represent extras objects (button, checkbox ...) Should not create independent instance from this class This class only purpose is to be base class for extras object classesrasObject = inheritsFrom(nil)
Field Name | Field Type |
---|---|
id | string |
command | string |
label | string |
hidden | string_bool |
readonly | string_bool |
extraparams | table<string,string> |
ExtrasObject:construct
ExtrasObject constructor
Function Signature:
ExtrasObject:construct(objParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters: Table of parameters needed to assemble XML |
ExtrasObject:addExtraparam
Adding extra parameter to the Object instance
If extra parameter is added, tParams argument of the Proxy command will contain value of the extras object with id.
Function Signature:
ExtrasObject:addExtraparam(id, name)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object that will be connected |
name | string | of the extras object that will be connected |
ExtrasObject:removeExtraparam
Removing extra parameter from the list
This method will remove extra parameter with id and value of that extras object will not be received in proxy command.
Function Signature:
ExtrasObject:removeExtraparam(id)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string |
ExtrasObject:getStateXml
Returns XML string that represents extras object state
This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string.The string will be return in the following command:
- \<object id= "\[self.id]" value="\[self.value]" /\>
Function Signature:
ExtrasObject:getStateXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject:getExtraparamsXml
Returns XML string that represents list of extraparameters
This string should be incorporated in response to GET_EXTRAS_SETUP Key and value of the extraparams field will be escaped end integrated in the message.
Function Signature:
ExtrasObject:getExtraparamsXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject:update
Update extras object individually.
This method should be called when the user wants to update an object individually. The method from the Extras class will update all objects, this method will update just this on object. Also, this method is inherited by all ExtrasObjectBasedClass instances.
Function Signature:
ExtrasObject:update(value, hidden)
Function Parameters:
Parameter | Type | Description |
---|---|---|
value | string | New value for the extras object |
hidden | string | Hide the object or not |
ExtrasSlider
Overview
This class represents an abstraction of the Extras Slider object. The class interface provides following cations:
- Initialization of an Extras Slider object
- Setting Extras Slider object parameters and slider parameters
ExtrasSlider : ExtrasObject
Class that represent extras slider functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSlider = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
min | number |
max | number |
resolution | number |
ExtrasSlider:construct
ExtrasSlider constructor
Function Signature:
ExtrasSlider:construct(objParams, sliderParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
sliderParams | table<string,number\ | string> |
ExtrasSlider:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasSlider:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasSwitch
Overview
This class represents apstraction of the Extras Switch object. The class interface provides following cations:
- Initialization of an Extras Switch object
- Setting Extras Switch object parameters and value
ExtrasSwitch : ExtrasObject
Class that represent extras switch functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSwitch = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
__name | Methafield |
ExtrasSwitch:construct
ExtrasSwitch constructor
Function Signature:
ExtrasSwitch:construct(objParams, value)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
value | string | Switch value (true, false) that will be displayed on the button in the CI |
ExtrasSwitch:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasSwitch:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasText
Overview
This class represents an abstraction of the Extras Text object. The class interface provides following cations:
- Initialization of an Extras Text object
- Setting Extras Text object parameters and value
ExtrasText : ExtrasObject
Class that represent extras text functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasText = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
ExtrasText:construct
ExtrasText constructor
Function Signature:
ExtrasText:construct(objParams, value)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
value | string | Text value that will be displayed on the element in the CI |
ExtrasText:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasText:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasTextField
Overview
This class represents abstraction of the Extras Text Field object. The class interface provides following cations:
- Initialization of an Extras Text Field object
- Setting Extras Text Field object parameters, text field mode and value
TextFieldMode
Type
Name | Value |
---|---|
TextFieldMode | "normal"\ |
ExtrasTextField : ExtrasObject
Class that represent extras checkbox functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasTextField = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
__name | Methafield |
mode | TextFieldMode |
ExtrasTextField:construct
ExtrasTextField constructor
Function Signature:
ExtrasTextField:construct(objParams, value, mode)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
value | string | TextField value that will be displayed on the field in the CI |
mode | TextFieldMode | Text field mode: password, numberic ... |
ExtrasTextField:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasTextField:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
Extras Library Use Case Examples
Importing the library
To use this library, please move all *.lua
files to the source directory of your driver, then import Extras.lua
file in your driver.lua
file. The Extras.lua
file includes all other library files needed.
This library depends on a driver template. Please, make sure that the driver template files are included in the path. NOTE Make sure paths are setup correctly
How to use the library
Set Up
The code to the right is an example how to setup the extras library:
require "Extas"
function ON_DRIVER_INIT.SetupExtras()
extras = Extras:new(DEFAULT_PROXY_BINDINGID)
extras:addSection("ButtonLabel")
extras:addSection("CheckboxLabel")
local bt1Table = {
id = "Button1ID",
label = "Button 1 Label",
command = "Button1Command",
extraparams = {
Checkbox4ID = "Extr1",
Checkbox3ID = "Extr2",
Button2ID = "Extr3"
}
}
extras:addObjects({ExtrasButton:new(bt1Table, "ButtonText1"),
ExtrasButton:new({id = "Button3ID", label = "Button 3 Label", command = "Button1Command"}, "ButtonText3"),
ExtrasButton:new({id = "Button2ID", label = "Button 2 Label", command = "Button1Command"}, "ButtonText2"),
ExtrasButton:new({id = "Button4ID", label = "Button 4 Label", command = "Button1Command"}, "ButtonText4")},
"ButtonLabel")
extras:addObjects({ExtrasCheckbox:new({id = "Checkbox1ID", label = "Checkbox 1 Label", command = "Checkbox1Command"}, "true"),
ExtrasCheckbox:new({id = "Checkbox2ID", label = "Checkbox 2 Label", command = "Checkbox1Command"}, "true"),
ExtrasCheckbox:new({id = "Checkbox3ID", label = "Checkbox 3 Label", command = "Checkbox1Command"}, "true"),
ExtrasCheckbox:new({id = "Checkbox4ID", label = "Checkbox 4 Label", command = "Checkbox1Command"}, "true")},
"CheckboxLabel")
extras:sendSetup(DEFAULT_PROXY_BINDINGID)
end
- Section order in the CI will be in the same order section were added in the container class instance.
- Object order in the CI will be in the same order objects were added in the section.
- Remember that object could be added as separated elements or as an array of objects.
- This setup can be called in
DriverLateInit()
. Setting extras in theDriverInit()
callback is possible but not recommended.
Handling Proxy Commands
The next code example shows how to write handlers for proxy commands received when extras change:
-- Proxy Command Handlers
PRX_CMD.Button1Command(proxyId, tParams)
C4:SetVariable("Extras_Button1", os.date())
LogDebug(os.date() .. " " .. extras:getObject(tParams.id).label .. " - Extras Button pressed")
end
function PRX_CMD.Checkbox1Command(proxyId, tParams)
C4:SetVariable("Extras_Checkbox1", tParams.value)
LogDebug(os.date() .. " " .. extras:getObject(tParams.id).label .. " - Extras Checkbox switched")
extras:updateObject(proxyId, tParams.id, tParams.value)
end
To handle changes in extras parameters coming from the device side, the updateObject
method can be used. This method updates extras object instance and sends proxy notification that extras status has been changed. Also, each ExtrasObjectBasedClass
class supports the ExtrasObjectBasedClass:update(value, hidden)
method that enables extras update from the class instance directly.
It is nice to create a variable for each extras object, to give the partner opportunity to monitor and take action based on extras states. Sample variable definitions are to the right.
--Variable Examples
C4:AddVariable("Extras_Button1", "", "STRING")
C4:AddVariable("Extras_Checkbox1", "", "BOOL")
Sqishy
If the Lua Squish is used, the Module code snippet below should be included in the squishy file:
-- Lua Squish Sample
Module "Extras" "extras/Extras.lua"
Module "ExtrasObject" "extras/ExtrasObject.lua"
Module "ExtrasButton" "extras/ExtrasButton.lua"
Module "ExtrasCheckbox" "extras/ExtrasCheckbox.lua"
Module "ExtrasIcon" "extras/ExtrasIcon.lua"
Module "ExtrasList" "extras/ExtrasList.lua"
Module "ExtrasSwitch" "extras/ExtrasSwitch.lua"
Module "ExtrasNumber" "extras/ExtrasNumber.lua"
Module "ExtrasSlider" "extras/ExtrasSlider.lua"
Module "ExtrasText" "extras/ExtrasText.lua"
Module "ExtrasTextField" "extras/ExtrasTextField.lua"
In this case, the library can be used as git submodule.
Removing
To remove the object or the section please use following methods:
Extras:removeObject(id)
Extras:removeSection(sectionLabel)
This way, you will avoid lost objects (objects that are in section array but will not be displayed because empty index before). It is strongly recommended to hide rather than remove objects that will be temporary removed form the CI.
Before destroying an Extras class instance, please use the Extras:cleanCapability()
method. Also, please pay attention to the Capability section of the documentation.
Dynamic Camera Streams
The Camera Proxy has been enhanced with regard to what types of streams it provides. This is a result of the release of Control4’s next generation T4 touchscreens, new controllers and support for H.265 streaming. Camera drivers now have the ability to provide more stream options and can support a larger set of mixed hardware environments.
Also, Navigators now support streaming tiles which results in the need to stream many cameras in parallel. To provide this functionality over a remote connection, it is desirable to offer the option to pick a lower bandwidth stream.
For the best experience, cameras should be minimally configured with the following streams by default:
Next Gen C4 OSD | T4 Touch Screens | Mobile |
---|---|---|
High Resolution H.265 | 1080p H.265 | High Resolution H.265 |
Legacy C4 OSD | T3 Touch Screens |
---|---|
720p H.264 | 720p H.264 |
Small Streaming Tiles |
---|
Low Resolution H.265 |
Driver Support for Dynamic Streams
See the Related APIs section below for detailed information regarding the functions discussed in this section.
New camera drivers should implement the dynamic streams API to provide a list of streams that the Navigators can pick from. In order to support dynamic streams the driver should:
Set the requires_dynamic_stream_urls dynamic capability to “true”.
Implement the GET_STREAM_URLS UI request command. This can be either implemented synchronously, by returning the list of cameras directly or it can also be implemented asynchronously. For example, if the driver needs to query a web service to get the current streams.
If implemented asynchronously, when the stream list is available it will be necessary to send the Proxy the STREAM_URLS_READY Notify with the results.
Drivers that do not have static URLs for streams will need to respond to the GET_STREAM_URLS call with an XML object that indicates the URL(s) is/are being generated and include a key with the response. Once the driver has been able to obtain a URL for the stream, the driver should send a STREAM_URLS_READY Notify with the same key that is provided with this Synchronous call response. An example of the response is:
<streams generating_key="1234"/>
The key should be a unique 32 bit integer value. We recommend starting at 1 and incrementing by 1 for each request that comes in.
Also, if the driver does have a valid temporary URL that is still valid when it gets the call, no further Notify is needed and the driver should respond to this call with the XML of streams information.
To indicate to a client that the driver supports this API call, a driver needs to set the requires_dynamic_stream_urls capability to true in the driver c4i or via DYNAMIC_CAPABILITIES_CHANGED Notify.
If no Port is provided with a URL, the following ports are used by all clients as the default for the transport:
- http - 80
- https - 443
- rtsp - 554
- rtsps - 443
Support for Caching URLs
The ability to cache the stream URL list is also supported. This removes the need to have to execute the GET_STREAM_URLS request every time a camera stream is loaded. This is supported with the capability: dynamic_urls_use_type.
The driver also needs to send a DYNAMIC_URLS_CHANGED notification to the proxy when the configured URLs have been changed. The proxy would then send a "DYNAMIC_URLS_CHANGED" DataToUI in response to this that the Navigators would key off of to refresh any cached URLs. This is useful for driver's with MULTIPLE use type URLs.
Related APIs
requires_dynamic_stream_urls
Capability determining whether the camera should be asked for stream URLs through the more advanced API call.
Signature
<requires_dynamic_stream_urls></requires_dynamic_stream_urls>
Type
Boolean: Defaults to false.
Dynamic Capability
Yes
Example
<capabilities>
<requires_dynamic_stream_urls>true</requires_dynamic_stream_urls>
</capabilities>
requires_dynamic_snapshot_urls
Capability determining whether the camera should be asked for snapshot URLs through the more advanced API call.
Signature
<requires_dynamic_snapshot_urls></requires_dynamic_snapshot_urls>
Type
Boolean: Defaults to false.
Dynamic Capability
Yes
Example
<capabilities>
<requires_dynamic_snapshot_urls>true</requires_dynamic_snapshot_urls>
</capabilities>
GET_STREAM_URLS
This command is used to obtain URLs for a camera that does not have a constant URL like a Cloud based camera or for cameras that have a wider range of features and configurable options that can produce better customer experiences using various clients.
A Client will make this request to a driver and provide information about how the client will be using the stream. The driver optionally can adjust the URL(s) returned based on this information. Driver developers are encouraged to test their driver on various devices to ensure good customer experiences when viewing collages, high resolution or high frame rate streams.
Parameter | Description |
---|---|
CODEC | Optional. Comma separated list of codecs that the client can support with the most preferred first. A driver is not required to handle this but some drivers may want to if they support multiple codecs. (mjpeg, h264, h264i, h265) |
RESOLUTION | Optional. Resolution that the client will be using to display the stream. A driver is not required to support this but this can be helpful for clients that may need a lower resolution stream for collages of multiple cameras and a 4MP or higher stream would tax the client hardware. |
FPS | Optional. Frames Per Second that the client would prefer. A driver is not required to support this but if it does it may result in better customer experience when dealing with collages on Navigators. |
Examples
An example of the simplest XML returned by a driver is shown to the right:
--- simple
<streams>
<stream url="http://192.168.1.150/view_camera.cgi">
</streams>
or
<streams>
<stream url="https://192.168.1.150:443/view_camera.cgi" codec="h264">
<stream url="http://192.168.1.150:80/view_camera_h265.cgi" codec="h265">
</streams>
This is followed by a more complex example from a camera with more features and can provide more options to allow clients to pick a better stream:
--- complex
<streams>
<stream url="rtsps://server.company.com:554/rtsp.cgi" codec="h265" resolution="1920x1080" fps="60">
<stream url="rtsps://server.company.com:554/cloudapi.cgi?fh2f5hw2" codec="h265" resolution="640x480" fps="5">
<stream url="rtsp://server.company.com:554/cloudapi.cgi?fh2f4hw1" codec="h264" resolution="1920x1080" fps="60">
<stream url="rtsp://server.company.com:554/cloudapi.cgi?fh2f4hw2" codec="h264" resolution="640x480" fps="5">
<stream url="https://server.company.com:443/cloudapi.cgi?fh2fhsw3" codec="mjpeg" resolution="1920x1080" fps="20">
<stream url="https://server.company.com:443/cloudapi.cgi?fh2fhsw5" codec="mjpeg">
<stream url="http://server.company.com:80/cloudapi.cgi?fh2fhw3" codec="mjpeg" resolution="1920x1080" fps="20">
<stream url="http://server.company.com:80/cloudapi.cgi?fh2fhw5" codec="mjpeg">
</streams>
GET_SNAPSHOT_URLS
This command is used to obtain URLs for a camera that does not have a constant URL like a Cloud based camera or for cameras that have a wider range of features and configurable options that can produce better customer experiences using various clients.
A Client will make this request to a driver and provide information about how the client will be using the snapshot. The driver optionally can adjust the URL(s) returned based on this information.
Examples
An example of the simplest XML returned by a driver is shown to the right:
<snapshots>
<snapshot url="http://192.168.1.150/view_camera.cgi">
</snapshots>
or
<snapshots>
<snapshot url="http://192.168.1.150:80/custom_resolution_as_requested_by_client.cgi" resolution="644x481">
<snapshot url="https://192.168.1.150:443/view_snapshot.cgi" resolution="3840x2160">
<snapshot url="https://192.168.1.150:443/view_snapshot.cgi" resolution="1920x1080">
<snapshot url="https://192.168.1.150:80/view_snapshot.cgi" resolution="640x480">
</snapshots>
Usage Note
Cloud Based Cameras
Drivers that do not have static URLs for snapshots will need to respond to this call with an XML object that indicates the URL(s) is/are being generated and include a key with the response. Once the driver has been able to obtain a URL for the stream, the driver should send a SNAPSHOT_URLS_READY Notify with the same key that is provided with this Synchronous call response. An example of the response is:
<streams generating_key="1234"/>
The driver would then follow up with the SNAPSHOT_URLS_READY Notify and specify KEY=1234 in that notify along with the URL. The key should be a unique 32 bit integer value. We recommend starting at 1 and incrementing by 1 for each request that comes in.
Also, if the driver does have a valid temporary that is still valid when it gets the call, no further Notify is needed and the driver should respond to this call with the XML of snapshots information.
To indicate to a client that the driver supports this API call, a driver needs to set the requires_dynamic_stream_urls capability to true in the driver or via the DYNAMIC_CAPABILITIES_CHANGED Notify.
If no Port is provided with a URL, the following ports are used by all clients as the default for the transport:
http - 80 https - 443
STREAM_URLS_READY
Protocol Notification used for following up to a GET_STREAM_URLS Synchronous call. This Notify will let a UI know that the URL information they requested is ready. The driver must use the same key parameter value that was returned to the UI as the key parameter in this notify.
Parameter | Description |
---|---|
KEY | Key of the originating call for the snapshot to be created. |
URLS | String of XML object as described in the description of this call. |
Examples
An example of the simplest XML used by a driver is shown to the right:
<streams key="1234">
<stream url="http://192.168.1.150/view_camera.cgi">
</streams>
or
<streams key="1234" camera_address="192.168.1.150">
<stream url="https://192.168.1.150:443/view_camera.cgi" codec="h264">
<stream url="http://192.168.1.150:80/view_camera_h265.cgi" codec="h265">
</streams>
This is followed by an example from a camera with more features and can provide more options to allow clients to pick a better stream:
<streams key="1234" camera_address="server.company.com">
<stream url="rtsps://192.168.1.150:554/rtsp.cgi" codec="h265" resolution"1920x1080" fps="60">
<stream url="rtsps://192.168.1.150:554/cloudapi.cgi?fh2f5hw2" codec="h265" resolution"640x480" fps="5">
<stream url="rtsp://192.168.1.150:554/cloudapi.cgi?fh2f4hw1" codec="h264" resolution"1920x1080" fps="60">
<stream url="rtsp://192.168.1.150:554/cloudapi.cgi?fh2f4hw2" codec="h264" resolution"640x480" fps="5">
<stream url="https://192.168.1.150:443/cloudapi.cgi?fh2fhsw3" codec="mjpeg" resolution"1920x1080" fps="20">
<stream url="https://192.168.1.150:443/cloudapi.cgi?fh2fhsw5" codec="mjpeg">
<stream url="http://192.168.1.150:80/cloudapi.cgi?fh2fhw3" codec="mjpeg" resolution"1920x1080" fps="20">
<stream url="http://192.168.1.150:80/cloudapi.cgi?fh2fhw5" codec="mjpeg">
</streams>
SNAPSHOT_URLS_READY
Notify used for following up to a GET_SNAPSHOT_URLS Synchronous call. This Notify will let a UI know that the URL information they requested is ready. The driver must use the same key parameter value that was returned to the UI as the key parameter in this notify.
Parameter | Description |
---|---|
KEY | Key of the originating call for the snapshot to be created. |
URLS | String of XML object as described in the description of this call. |
Example
<snapshots key="1234">
<snapshot url="http://192.168.1.150/view_camera.cgi">
</snapshots>
or
<snapshots key="1234">
<snapshot url="http://192.168.1.150:80/custom_resolution_as_requested_by_client.cgi" resolution="644x481">
<snapshot url="https://192.168.1.150:443/view_snapshot.cgi" resolution="3840x2160">
<snapshot url="https://192.168.1.150:443/view_snapshot.cgi" resolution="1920x1080">
<snapshot url="https://192.168.1.150:80/view_snapshot.cgi" resolution="640x480">
</snapshots>
dynamic_urls_use_type
Supports the following use types:
MULTIPLE - Default if the capability is not specified. URLs can be used repeatedly. If URLs change, the driver should send DYNAMIC_URLS_CHANGED notification to the proxy.
SINGLE - URLs can only be used once. Driver must be asked each time for a new set of URLs.
EXPIRING (Do not include in 3.3.1) - URLs can be used more than once, but expire after some time period.
Signature
<dynamic_urls_use_type></dynamic_urls_use_type>
Dynamic Capability
Yes
Example
<capabilities>
<dynamic_urls_use_type>SINGLE</dynamic_urls_use_type>
</capabilities>
Camera Audio Distribution
Beginning with O.S. 3.4.0, camera drivers have the ability to distribute audio to devices running Navigator.
If a camera supports the proper CODEC and the camera microphone has been enabled in the appropriate interface a new audio button will appear at the bottom of the single-camera view. This will allow the user to hear live audio with the live video.
Note that if the camera does not support the proper codec, or the camera microphone has been disabled in the camera interface, no button will appear in the single-camera view.
Requirements
Camera has a microphone and it's enabled. Note that most most are disabled by default. Depending on the camera/camera driver, the camera microphone can be enabled/disabled within the driver or in OvrC.
Ensure the configuration for the camera stream is video & audio, not just video.
The camera supports codec G.711 u-law (G.711μ).
The driver for the camera shows the Audio Property is present.
Camera Capabilities
address_readonly
Defaults to false.
Signature
<address_readonly></address_readonly>
Example
<capabilities>
<address_readonly>false</address_readonly>
</capabilities>
aspect_ratio
Comma-delimited list of possible aspect ratios that the camera supports. If this capabilities is not defined in the c4i/c4z file, it will default to ‘16x9,4x3’ for aspect_ratio
.
Signature
<aspect_ratio></aspect_ratio>
Example
<capabilities>
<aspect_ratio>false</aspect_ratio>
</capabilities>
default_aspect_ratio
The expected ratio that the camera will use at start up. The value in the default_aspect_ratio
capability should be one of the entries in the aspect_ratios
list. If this capabilities is not defined in the c4i/c4z file, it will default to 16x9.
Signature
<deafult_aspect_ratio></default_aspect_ratio>
Example
<capabilities>
<default_aspect_ratio>false</default_aspect_ratio>
</capabilities>
default_authentication_required
Defaults to false.
Signature
<default_authentication_required></default_authentication_required
Example
<capabilities>
<default_authentication_required>false</default_authentication_required>
</capabilities>
default_authentication_type
Defaults to BASIC.
Signature
<default_authentication_type></default_authentication_type>
Example
<capabilities>
<default_authentication_type>BASIC</default_authentication_type>
</capabilities>
default_http_port
Defaults to 80.
Signature
<default_http_port></default_http_port>
Example
<capabilities>
<default_http_port>80</default_http_port>
</capabilities>
default_password
Defaults to “password”.
Signature
<default_password></default_password>
Example
<capabilities>
<default_password>password</default_password>
</capabilities>
default_rtsp_port
Defaults to 554.
Signature
<default_rtsp_port></default_rtsp_port>
Example
<capabilities>
<default_rtsp_port>554</default_rtsp_port>
</capabilities>
default_username
Defaults to “username”.
Signature
<default_username></default_username>
Example
<capabilities>
<default_username>username</default_username>
</capabilities>
dynamic_urls_use_type
Support the following use types:
MULTIPLE - Default if the capability is not specified. URLs can be used repeatedly. If URLs change, the driver should send DYNAMIC_URLS_CHANGED notification to the proxy.
SINGLE - URLs can only be used once. Driver must be asked each time for a new set of URLs.
Signature
<dynamic_urls_use_type></dynamic_urls_use_type>
Dynamic Capability
Yes
Example
<capabilities>
<dynamic_urls_use_type>SINGLE</dynamic_urls_use_type>
</capabilities>
has_dynamic_presets
Returns true if the cameras support for dynamic presets. Defaults to false.
Signature
<has_dynamic_presets></has_dynamic_presets>
Example
C4:SendToProxy(PROXY_BINDING, 'DYNAMIC_CAPABILITIES_CHANGED', { has_dynamic_presets = true }, 'NOTIFY')
has_extras
Boolean indicating if the device has extras commands support. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
Signature
<has_extras></has_extras>
Dynamic Capability
Yes
Example
<capabilities>
<has_extras>TRUE</has_extras>
</capabilities>
has_ pan
True/False. Default is False. This is a Dynamic Capability.
Signature
<has_pan></has_pan>
Example
<capabilities>
<has_pan>false</has_pan>
</capabilities>
has_pan_scan
True/False. Default is False.
Signature
<has_pan_scan></has_pan_scan>
Example
<capabilities>
<has_pan_scan>false</has_pan_scan>
</capabilities>
has_tilt
True/False. Default is False. This is a Dynamic Capability.
Signature
<has_tilt></has_tilt>
Example
<capabilities>
<has_tilt>false</has_tilt>
</capabilities>
has_tilt_scan
True/False. Default is False.
Signature
<has_tilt_scan></has_tilt_scan>
Example
<capabilities>
<has_tilt_scan>false</has_tilt_scan>
</capabilities>
has_zoom
True/False. Default is False. This is a Dynamic Capability.
Signature
<has_zoom></has_zoom>
Example
<capabilities>
<has_zoom>false</has_zoom>
</capabilities>
has_home
True/False. Default is False. This is a Dynamic Capability.
Signature
<has_home></has_home>
Example
<capabilities>
<has_home>false</has_home>
</capabilities>
has_night_mode
True/False. Default is False.
Signature
<has_night_mode></has_night_mode>
Example
<capabilities>
<has_night_mode>false</has_night_mode>
</capabilities>
modes
Signature
<modes></modes>
Parameter | Description |
---|---|
str | SNAPSHOT – HTTP snapshot |
str | MJPEG– HTTP motion jpeg |
str | H264 – RTSP/(UDP)RTP H.264 |
str | H264I – RTSP/(TCP)RTP Interlaced H.264 |
str | H265 - HEVC |
Example
<capabilities>
<modes>MJPEG</modes>
</capabilities>
number_presets
Signature
<number_presets></number_preets>
Parameter | Description |
---|---|
num | Number of Presets |
Usage Note
Default is 0. Note that Navigator devices will truncate this value to a number in which they support.
Example
<capabilities>
<number_presets>6</number_presets>
</capabilities>
requires_dynamic_stream_urls
Whether the camera should be asked for stream URLs through the more advanced API call.
Signature
<requires_dynamic_stream_urls></requires_dynamic_stream_urls>
Type
Boolean: Defaults to false.
Dynamic Capability
Yes
Example
<capabilities>
<requires_dynamic_stream_urls>true</requires_dynamic_stream_urls>
</capabilities>
show_test_url
Signature
<show_test_url></show_test_url>
Parameter | Description |
---|---|
bool | True/False |
Usage Note
Default is True.
Example
<capabilities>
<show_test_url>true</show_test_url>
</capabilities>
use_http_for_h264
Signature
<use_http_for_h264> </use_http_for_h264>
Parameter | Description |
---|---|
bool | True/False |
Usage Note
Default is False.
Example
<capabilities>
<use_http_for_h264>true</use_http_for_h264>
</capabilities>
Fan Proxy Commands
ON
Turn the fan on to the designated preset level. Another possible behavior would be to turn it back on to the most recent on speed.
Name
ON ()
Parameters
None
Returns
None
OFF
Turn the fan OFF.
Name
OFF ()
Parameters
None
Returns
None
TOGGLE
If the fan is on, turn it off. If the fan is off, do the same behavior as the ON command.
Name
TOGGLE ()
Parameters
None
Returns
None
DESIGNATE_PRESET
Specifies which fan preset value should be the default one to go to when an ON or TOGGLE command is sent.
Name
DESIGNATE_PRESET ()
Parameter | Type | Description |
---|---|---|
PRESET | NUM | PRESET value. Valid values: 1 – N |
Returns
None
SET_SPEED
Set the current speed of the fan to the designated level. Setting to 0 will turn the fan off.
Name
SET_SPEED ()
Parameter | Type | Description |
---|---|---|
SPEED | NUM | SPEED valid values: 0 – N |
Returns
None
CYCLE_SPEED_UP
Bump the fan up to the next higher speed from its current setting. It would be up to the protocol driver to decide if it wraps or stops when we’re already at the highest speed.
Name
CYCLE_SPEED_UP ()
Parameters
None
Returns
None
CYCLE_SPEED_DOWN
Bump the fan down to the next lower speed from its current setting. It would be up to the protocol driver to decide if it wraps or stops when the fan is currently off.
Name
CYCLE_SPEED_DOWN ()
Parameters
None
Returns
None
SET_DIRECTION
Tell the fan which direction to spin. This command would only be valid if the can_reverse
capability is set to true in the driver file.
Name
SET_DIRECTION ()
Parameter | Description |
---|---|
str | “FORWARD” “REVERSE” |
Returns
None
TOGGLE_DIRECTION
Reverse the direction which the fan is currently spinning. This command would only be valid if the can_reverse
capability is set to true in the driver file.
Name
TOGGLE_DIRECTION ()
Parameters
None
Returns
None
GET_CURRENT_STATE
Tell the protocol to report its current values. This wouldn’t be available through programming, but generated by the proxy to get its initial settings.
Name
GET_CURRENT_STATE ()
Parameters
None
Returns
None
GET_STATE
Command handled by the proxy driver. Immediately returns a block of XML information to the caller. Reports the current state of the device.
Name
GET_STATE ()
Parameters
None
Returns
None
Example
<fan_state>
<current_speed>3</current_speed>
<is_reversed>false</is_reversed>
</fan_state>
GET_SETUP
Command handled by the proxy driver. Immediately returns a block of XML information to the caller. Usually called just once by a UI entity to know how to setup the UI. This would report such things as how many settings the device has and what the name of those settings are.
Name
GET_SETUP ()
Parameters
None
Returns
None
Example
<fan_setup>
<speeds_count>4</speeds_count>
<speed_names>Low,Low Medium,Medium High,High</speed_names>
<can_reverse>false</can_reverse>
<can_set_preset>true</can_set_preset>
<preset_speed>3</preset_speed>
</fan_setup>
Fan Protocol Notifications
CURRENT_SPEED
Received from the protocol driver when the fan speed changes. This would also happen when the fan turned off because it would be set to speed 0.
Name
CURRENT_SPEED ()
Parameter | type | Description |
---|---|---|
SPEED | INT | SPEED valid values: 0 - N |
Returns
None
DIRECTION
Received from the protocol driver when the fan direction changes.
Name
DIRECTION ()
Parameter | Description |
---|---|
str | FORWARD/REVERSE |
Returns
None
PRESET_SPEED
Received from the proxy when the preset speed changes.
Name
PRESET_SPEED ()
Parameter | Type | Description |
---|---|---|
SPEED | INT | SPEED valid values: 1 - N |
Returns
None
ON
Received from the protocol when the power goes from off to on. The proxy would assume that the fan just went to its preset speed. Would not be required, but could be used if the fan only has one speed.
Signature
ON ()
Parameters
None
Returns
None
OFF
Received from the protocol when the power goes from on to off. Would not be required, but could be used if the fan only has one speed.
Signature
OFF ()
Parameters
None
Returns
None
Fan Capabilities
can_reverse
Signature
<can_reverse></can_reverse>
Parameter | Description |
---|---|
bool | TRUE/FALSE. Defaults to False. |
Example
<capabilities>
<can_reverse>true</can_reverse>
</capabilities>
can_set_preset
Signature
<can_set_preset></can_set_preset>
Parameter | Description |
---|---|
bool | TRUE/FALSE. Defaults to False. |
Example
<capabilities>
<can_set_preset>true</an_set_preset>
</capabilities>
discrete_levels
Signature
<discrete_levels></discrete_levels>
Parameter | Description |
---|---|
num | 0 to N. Defaults to 1. A count of 0 would mean that the speeds are analog rather than discreet. |
Example
<capabilities>
<discrete_levels>1</discrete_levels>
</capabilities>
preset_speed
Signature
<preset_speed></preset_speed>
Parameter | Description |
---|---|
num | 1 to N. Defaults to the highest available speed. |
Example
<capabilities>
<preset_speed>1</preset_speed>
</capabilities>
proxy_fan_speed_connections
This capability is applicable to newer fan drivers which create BUTTON_LINK connections dynamically in association with fan speeds in the fan proxy. Setting this capability to true simply enables this ability. It relies on two other capabilities to successfully implement the dynamic connection functionality. They include: discreet_levels and speed_name.
Available from 3.4.2.
Signature
<proxy_fan_speed_connections></proxy_fan_speed_connections>
Parameter | Description |
---|---|
bool | True = Creates BUTTON LINK connections dynamically. |
Example
<capabilities>
<proxy_fan_speed_connections>true</proxy_fan_speed_connections>
</capabilities>
speed_names
Signature
<speed_names></speed_names>
Parameter | Description |
---|---|
num | Default for 1 is “On” |
num | Default for 2 is “Low,High” |
num | Default for 3 is “Low,Medium,High” |
num | Default for 4 is “Low,Medium Low,Medium High,High” |
num | Default for 5 is “Low,Medium Low,Medium,Medium High,High” |
num | Default for >5 is ““Level 1,Level2, … Level N” |
Example
<capabilities>
<speed_names>3</speed_names>
</capabilities>
Fan Conditionals
Is On
Parameters
None
Returns
Returns true if the fan is on at any speed.
Is Off
Parameters
None
Returns
Returns true if the fan is off.
Current Speed Equal/NotEqual
Parameter | Description |
---|---|
num | SPEED value |
Returns
True if the current speed is equal to (or not equal) to the reference number
Is Reversed
Parameters
None
Returns
Return true if the fan is spinning in reverse. This would only be available if the can_reverse
capability is set to true in the driver file.
Fan Events
Fan Events
The following Events are supported by the Fan Proxy. The events fired by the proxy have to deal with changes in the fan itself. They include:
turned_on
- Fired when the power goes from off to on.
turned_off
- Fired when the power goes from on to off.
speed_changed
- Fired when the speed number changes. Since turning on or off also involves a change of speed this would also fire when the fan turns on or off.
direction_changed
- Fired when the fan spin direction changes. This would only be available if the can_reverse
capability is set to true in the driver file.
Intercom Proxy Terminology
The following terms are specific to the Control4 Intercom Proxy and their use in developing a door station or door station like driver. Note that this content does not include the scope of developing a touch panel to support intercom use.
Intercom Call Commands – Includes a set of commands that are sent from the Intercom Proxy to the door station device that is supported by your driver. An example of an Intercom Proxy Command is START_CALL. When your driver receives the START_CALL command, it must handle the command in a manner that enables your device to begin a call.
Intercom Call Notifications - Includes a set of notifications that are sent from the device you are supporting, via your driver, to the Intercom Proxy. For example, when your driver receives a START_CALL command, it will send a CALL_ACCEPTED notification to the Intercom Proxy.
Intercom Call Requests - These functions represent requests that are sent from your device driver to the Intercom Proxy to obtain various sets of call data. For example, when needed your driver may send the Intercom Call Request of GET_DEVICE_LIST. The GET_DEVICE_LIST request is a function for gathering information about other devices on the network that might communicate with your device. Information returned includes data such as whether another device has a camera, does it include a display, etc.
Intercom State Commands - These functions consist of commands that impact the state of the device you are writing a driver for. For example, your driver may receive a State Command of SET_RINGER_VOLUME from the Intercom Proxy. SET_RINGER_VOLUME will be sent with a numerical value indicating the new ringer volume level. Your driver will need to receive this state command and adjust the ringer volume on your device accordingly.
Intercom State Notifications - These functions consist of notifications that are sent from the device you are supporting, via your driver, to the Intercom Proxy. For example, when your driver receives the State Command of SET_RINGER_VOLUME, it needs to send a State Notification of RINGER_VOLUME_CHANGED that includes the new ringer volume value.
Intercom State Requests - These functions represent requests that are sent from your device driver to the Intercom Proxy for various sets of device state data. For example, when needed your driver may send the Intercom Call Request of GET_STATE_LIST. This request returns the device states for all of the intercom endpoints in the project.
Intercom Call Group Requests - Currently, this consists of one function: GET_GROUP_LIST which can be used by your driver to obtain the group list of all of intercom call groups in the project.
Intercom Capabilities - These functions consist of Boolean XML elements that need to be defined in your driver. They represent functionality supported by your device such as do not disturb support, camera inclusion or its ability to play a door chime.
Intercom Events - Events are useful to define in your driver as they provide an opportunity for ComposerPro programming to occur based on them being fired. For example, if the speaker_volume_changed Event is defined in your driver and that Event fires when the speaker volume of your device changes, it would be possible (through programming in ComposerPro) to modify the speaker volume of other intercom devices in the project.
Intercom Conditionals - Conditionals are useful to define in your driver as they also provide an opportunity for ComposerPro programming to occur based on their state. For example, if the In a Call conditional is set to true, the device that reported this conditional could be displayed as busy on Navigators.
Intercom Variables – The Intercom Proxy supports three Variables which can also be used in ComposerPro programming when defined in your driver. For example, the CALL_DURATION Variable can be assigned a time limit for a call, If that limit is exceeded, the call can be terminated.
Fan Variables
Fan Variables
The following Variables are supported by the Fan Proxy. They include:
Is On - Boolean: Read/Write
Current Selected Speed - Unsigned Long: Read/Write
Is Reversed - Boolean: Read/Write
Current Preset- Unsigned Long: Read/Write
Intercom Proxy Best Practices
Overview
The Intercom Proxy interface is defined in terms of Commands, Requests and Notifications, each of which are described in this section of the proxy and Protocol Guide.
Intercom Proxy Commands are issued by a proxy consumer and may or may not result in an asynchronous notification in response. Commands typically change state of the Intercom Proxy, or other components of the intercom architecture.
Intercom Proxy Requests are issued from a proxy consumer with the expectation of getting a response from the protocol. Requests do not change state of the intercom proxy or any other component of the architecture.
Intercom Proxy Notifications are sent from the intercom proxy to the intercom consumer asynchronously, and indicate a state change in the intercom proxy or one of its related architecture components.
All communication through the proxy interface is asynchronous. Even request responses, such as getting a list of known intercom devices, are returned asynchronously with respect to the request for that data.
Storing Session IDs
Many intercom API commands and requests require the sessionId as an input parameter. The value for this parameter is provided by the SIP Client on the device in response to issuing a START_CALL
command or a physical button press event.
This sessionId value is included in the resulting OUTGOING_CALL
or INCOMING_CALL
notifications. The intercom proxy consumer is responsible for storing the sessionId returned with these notifications for use in subsequent commands and requests.
Using the RemoteAor Property
When the “remoteAor” parameter is used in a notification or command, the value is always the address of record of the other intercom device participating in an intercom call.
For example, consider that intercom device A has address of record of “sip-user-A@192.168.1.123” and intercom device B has an address of record of “sip-user-B@192.168.1.123”.
Intercom device A initiates a call with intercom device B, which results in an INCOMING_CALL
notification on intercom device B. When intercom device B issues the ACCEPT_CALL
command, which takes remoteAor as a parameter, intercom device B should use “sip-user-A@192.168.1.123” (the address of record of intercom device A, or the initiator) as the value of this parameter.
Likewise, when intercom device A sends the CALL_ACCEPTED
notification, it will contain a remoteAor property that has the value of the address of record of intercom device B, or “sip-user-B@192.168.1.123”.
Intercom Proxy Settings
Exclude from Navigator
This setting is used to control whether or not an intercom endpoint is displayed on the Navigator Landing Page. It can be used to hide endpoints from the user interface so that they can only be accessed from programming.
Do Not Disturb
This setting is used to control whether or not an intercom endpoint can receive incoming calls; it has no effect on the endpoint’s ability to make an outgoing call.
Auto Answer
This setting is used to control whether or not an intercom endpoint automatically answers incoming calls. Note that Auto Answer is ignored in the case of group calls.
Send Video
This setting is used to control whether or not an intercom endpoint automatically sends video when it starts or receives a call; if the has_camera
capability is false, this setting has no effect.
Monitor Mode
This setting is used to control whether or not an intercom endpoint is in monitor mode; a monitor mode call works like a baby monitor; it will quietly auto answer the incoming call on the receiver's (monitored) endpoint, the initiator's (monitoring) endpoint is automatically muted so that there is no transmission of sound to the monitored endpoint. The initiator can un-mute the call anytime two way communications are needed. Endpoints with monitor enabled will not receive broadcast calls, even if they are specified in the call group used for the broadcast.
Monitor mode also has a feature that allows the call to be taken over by different endpoint without having to end the original call. This feature is allows the user to continue to monitor a particular endpoint as they move from one room to another.
Ringer Volume
This setting is used to control the ringer volume level of an intercom endpoint.
Speaker Volume
This setting is used to control the speaker volume level of an intercom endpoint.
Microphone Gain
This setting is used by some Control4 devices to control the microphone gain level of an intercom endpoint. Control4 intercom endpoints do not support microphone gain adjustments; this setting is provided for 3rd party use.
Camera Enabled
This setting is used to control whether or not an intercom endpoint’s camera will be used when the endpoint is in a call; if the has_camera
capability is false, this setting has no effect.
AEC Enabled
This setting is used to control whether or not an intercom endpoint will use conservative auto echo cancelation (AEC) when the endpoint is in a call.
If the can_set_aec
capability is false, this setting has no effect.
Play Door Chime
This setting is used to control whether or not an intercom endpoint will use the door chime sound effect when a call is received from a door station. If this setting is disabled the endpoint will ring normally when a door station call is received.
Intercom Call Commands
ACCEPT_CALL
The ACCEPT_CALL command is sent from the Intercom Proxy to the device driver. When the driver receives the ACCEPT_CALL command, it must handle the command in a manner that enables the device to accept the incoming call. When implemented successfully, receipt of the ACCEPT_CALL command is followed the CALL_ACCEPTED notification being sent from the device driver to the Proxy.
Signature
ACCEPT_CALL ()
Call Flow:
- A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “incoming call”.
- This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
- Upon call acceptance, this is followed by the device driver sending a CALL_ACCEPTED notification to the Proxy.
Parameter | Description |
---|---|
num | DEVICE_ID - The proxy ID of the caller |
num | REMOTE_DEVICE - The proxy ID of the callee |
num | SESSION_ID - The session ID of the call. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
num | AUDIO - The requested audio capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only (RECV_ONLY), |
num | VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only (RECV_ONLY). 3 = Inactive (NO_SEND_ RECV) |
Returns
None
Usage Notes:
This call command can be initiated by pressing a button on a UI displayed on devices running Navigator, Control-Control in ComposerPro and Composer Programming.
END_CALL
This command only applies to an established call session. If a call has not been established – it cannot be ended. The END_CALL command is sent from the Intercom Proxy to the device driver when an established call is to be terminated. After the call is terminated, the device driver must send the CALL_ENDED notification to both the initiator and the receiver of the call.
Signature
END_CALL ()
Call Flow:
- A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “incoming call”.
- This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
- Upon call acceptance, this is followed by the device driver sending a CALL_ACCEPTED notification to the Proxy.
- When the call is to be terminated, The END_CALL command is sent from the intercom proxy to the device driver.
- When the device driver terminates the call (SIP BYE), the CALL_ENDED notification is sent from the driver to the Intercom proxy.
Parameter | Description |
---|---|
num | DEVICE_ID - The proxy ID of the caller. |
num | REMOTE_DEVICE - The proxy ID of the callee. |
str | SESSION_ID - The session ID of the call. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
Returns
None
MUTE_CALL
This command only applies to an established call session. If a call has not been established – it cannot be muted. Likewise, a call cannot be muted when it is in a ringing state or a SIP BYE or ENDING states. The MUTE_CALL command is sent from the Intercom Proxy to the device driver. When the driver receives the MUTE_CALL command, it must handle the command in a manner that enables the device to place the existing call in a muted or un-muted state. Placing the device in a true muted state or setting the device volume to zero is supported for muting purposes. There is no associated notification for the MUTE_CALL command. The device driver must maintain the state of the call in order to un-mute or mute the call correctly
Signature
MUTE_CALL
Call Flow:
- A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “incoming call”.
- This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
- Upon call acceptance, this is followed by the device driver sending a CALL_ACCEPTED notification to the Proxy.
- When the call is to be muted or un-muted, the MUTE_CALL command is sent from the intercom proxy to the device driver.
Parameter | Description |
---|---|
bool | muteAudio - A Boolean flag indicating whether to mute or un-mute the indicated session. (0=false, 1=true) |
Returns
None
Example
<MUTE_CALL>
<muteAudio>[0]</muteAudio>
</MUTE_CALL>
PAUSE_CALL
NOTE: The PAUSE_CALL command is currently deprecated and not available for use._
This command can be issued by either the initiator or receiver and causes the call associated with the indicated session to be placed on hold (or paused). This command will result in a CALL_PAUSED
notification being sent to both the initiator and the receiver of the call.
Signature
PAUSE_CALL ()
Parameter | Description |
---|---|
num | DEVICE_ID - The proxy ID of the caller |
num | REMOTE_DEVICE - The proxy ID of the callee |
num | SESSION_ID - The session ID of the call. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
Returns
None
PLAY_DOOR_ CHIME
NOTE: The PLAY_DOOR_CHIME command is currently deprecated and not available for use._
This command can be issued by any device to play the currently defined door chime sound effect on that device.
Signature
PLAY_DOOR_CAHIME ()
Parameters
None
Returns
None
REJECT_CALL
The REJECT_CALL command is sent from the Intercom Proxy to the device driver. When the driver receives the Reject Call command, it must handle the command in a manner that enables the device to reject the incoming call. When implemented successfully, receipt of the REJECT_CALL command should be followed by sending a CALL_REJECTED notification from the device driver to the Proxy.
Signature
REJECT_CALL ()
Call Flow:
- A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “incoming call”.
- This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
- Upon call acceptance, this is followed by the device driver sending a CALL_REJECTED notification to the Proxy.
Parameter | Description |
---|---|
num | DEVICE_ID - The proxy ID of the caller. |
num | REMOTE_DEVICE - The proxy ID of the callee. |
str | SESSION_ID - The session ID of the call. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
Returns
None
Usage Notes:
This command can be initiated by pressing a button on a UI displayed on devices running Navigator, Control-Control in ComposerPro and Composer Programming.
The Reject Call command has no effect when sent during an active call session. End Call should be used in this instance.
If auto-answer is enabled, it overrides the option to reject the call and the Proxy will automatically accept it.
RESUME_CALL
NOTE: The RESUME_CALL command is currently deprecated and not available for use._
This command can be issued by an intercom device that has already paused the call associated with the indicated session id. This command will result in a CALL_RESUMED
notification being sent to both the initiator and the receiver of the call.
Signature
RESUME_CALL ()
Parameter | Description |
---|---|
num | DEVICE_ID - The proxy ID of the caller |
num | REMOTE_DEVICE - The proxy ID of the callee |
num | SESSION_ID - The session ID of the call. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
Returns
None
START_CALL
The START_CALL command is initiated through Programming or Control/Control in ComposerPro. It is sent to the Intercom Proxy, which then sends a START_CALL to the device driver. When the driver receives the START_CALL command, it must handle the command in a manner that enables the device to begin a call. When implemented successfully, receipt of the START_CALL command is followed by the CALL_ACCEPTED notification being sent from the device driver to the Proxy.
Signature
START_CALL ()
Call Flow:
- Upon receiving a START_CALL command from the Proxy, a SIP invite is generated.
- The SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “outgoing call”.
- This needs to trigger an Outgoing_Call notification which is sent from the device, via the device driver, to the Proxy.
- Upon call acceptance, this is followed by the device driver that receives the call, sending a CALL_ACCEPTED notification to the Proxy.
Parameter | Description |
---|---|
num | DEVICE_ID - The proxy ID of the caller |
num | REMOTE_DEVICE_ID - The proxy ID of the callee |
num | AUDIO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV) |
num | VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive. |
num | RING - The ring parameter for the call 0 = plays default Navigator beep, 1 = plays doorbell chime |
Returns
None
START_MONITOR_CALL
The START_MONITOR_CALL command is sent from the Intercom Proxy to the device driver. When the driver receives the START_MONITOR_CALL command, it must be in monitor mode to successfully handle it. A device can be set to monitor mode via Composer Pro or Navigator. When implemented successfully, the command will result in an INCOMING_CALL notification being sent to the proxy. Note that in addition to a device being in monitor mode, it should also mute itself or turn volume level to zero when receiving the START_MONITOR_CALL. This ensures that no sounds come from the receiving device. This is useful in the case where a device is being used as a baby monitor.
Signature
START_MONITOR_CALL ()
Call Flow:
- START_MONITOR_CALL command is sent from the intercom proxy to the device driver.
- A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “incoming call”.
- This needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
- Because the device receiving the call is in monitor mode, the call is automatically accepted.
- Upon call acceptance, this is followed by the device driver sending a CALL_ACCEPTED notification to the Proxy.
Parameter | Description |
---|---|
num | DEVICE_ID - The proxy ID of the caller |
num | REMOTE_DEVICE_ID - The proxy ID of the callee |
num | AUDIO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV) |
num | VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive. |
num | RING - The ring parameter for the call 0 = default Navigator beep, 1 = doorbell chime. Note that the RING param must be passed for the function to work correctly. The driver must place the receiving on mute or turn volume level to zero |
Returns
None
Intercom Call Requests
GET_DEVICE
This request is issued to obtain the device properties of a specified intercom endpoint.
Signature
GET_DEVICE ()
Parameter | Description |
---|---|
num | The Proxy Device ID of the intercom endpoint whose custom button information is to be returned. |
Example
<GET_DEVICE>
<idDevice>[integer value]</idDevice>
</GET_DEVICE>
Response Parameters
Parameter | Description |
---|---|
proxyid | The proxy device id of the intercom endpoint for which the data was requested. It is a number that is greater than or equal to zero (0) |
protocolid | The protocol device id of the intercom endpoint for which the data was requested. It is a number that is greater than or equal to zero (0). |
hasCamera | A Boolean flag indicating whether or not the indicated intercom device has a camera. (0=false, 1=true) |
hasDisplay | A Boolean flag indicating whether or not the specified intercom endpoint has a display. (0=false, 1=true) |
isDoorStation | A Boolean flag indicating whether or not the indicated intercom device is a door station. (0=false, 1=true) |
displayName | The display name to be used when referring to the specified intercom endpoint in the system’s user interface (UI). |
sipUserName | The SIP user name for the specified intercom endpoint. |
sipAOR | The SIP address of record for the specified intercom endpoint. This takes the form of “sip user name@sip server IP address”. |
Response Prototype
<device_props id=”[integer value]”>
<proxyId>[integer value]</proxyId>
<protocolId>[integer value]</protocolId>
<hasCamera>[integer value]</hasCamera>
<hasDisplay>[integer value]</hasDisplay>
<hasButtons>[integer value]</hasButtons>
<isDoorStation>[integer value]</isDoorStation>
<displayName>[string value]</displayName>
<sipUserName>[string value]</sipUserName>
<sipAOR>[string value]</sipAOR>
</device_props>
GET_DEVICE_LIST
This request is issued to obtain the device properties of all of the intercom endpoints in the project.
Signature
GET_DEVICE_LIST ()
Parameters
None
Response Parameters
Parameter | Description |
---|---|
device_list |
A container for the collection of device property records. |
device_props |
A device_props record for each intercom endpoint in the project. See the response format for the GET_DEVICE . |
Response Prototype
<device_list>
<device_props id=”Id1”>
[see the GET_DEVICE response format]
</device_props>
<device_props id=”Id2”>
[see the GET_DEVICE response format]
</device_props>
<device_props id=”IdN”>
[see the GET_DEVICE response format]
</device_props>
</device_list>
GET_SESSION
This request is issued to obtain the active session information for the requesting device.
Signature
GET_SESSION ()
Parameters
None
Response Parameters
Parameter | Description |
---|---|
ID | The proxy device id of the intercom endpoint to which this request’s response is sent. This value is used to insure that the response is processed by proper device driver (i.e. the "requestor"). It is a number that is greater than or equal to zero (0). |
sessionId | Numeric value indicating the session id for the active session. |
videoMode | Numeric value indicating video mode being used for this session by the specified endpoint. (0=transmit/receive, 1=transmit only, 2=receive only, 3=no video) |
audioMode | Numeric value indicating audio mode being used for this session by the specified endpoint. (0=transmit/receive, 1=transmit only, 2=receive only, 3=no audio) |
callerName | The device name of the intercom endpoint which initiated the call. |
callerDevId | The proxy device id of the intercom endpoint which initiated the call. |
calleeDevId | The proxy device id of the intercom endpoint which received the call. |
calleName | The device name of the intercom endpoint which received the call. |
Response Prototype
<device_session id=”[integer value]”>
<sessionId>[integer value]</sessionId>
<videoMode>[integer value]</videoMode>
<audioMode>[integer value]</audioMode>
<callerDevId>[integer value]</callerDevId>
<callerName>[string value]</callerName>
<calleeDevId>[integer value]</calleeDevId>
<calleeName>[string value]</calleeName>
</device_session>
GET_SESSION_LIST
This request is issued to obtain the session information of all of sessions on this endpoint.
Signature
GET_SESSION_LIST ()
Parameters
None
Response Parameters
Parameter | Description |
---|---|
session_list |
A container for the collection of session information records. |
device_session |
A device_props record for each intercom endpoint in the project. See the response format for the GET_SESSION . |
Response Prototype
<session_list>
<device_session id=”Id1”>
[see the GET_SESSION response format]
</device_session>
<device_session id=”Id2”>
[see the GET_SESSION response format]
</device_session>
<device_session id=”IdN”>
[see the GET_SESSION response format]
</device_session>
</session_list>
GET_TIMEOUT
This request is issued to obtain the current timeout setting for manually answering a call. If the timeout duration expires before a call is answered, the call is automatically ended. This value is configured in the Video Intercom Agent in Composer.
Signature
GET_TIMEOUT ()
Parameter
None
Response Parameters
Parameter | Description |
---|---|
num | The duration (in seconds) for how long a new call should wait without being answered before the call is ended (number from 10 to 120). |
Response Prototype
<timeout>
<value>[integer value]</value>
</timeout>
Intercom Call Notifications
CALL_ACCEPTED
The CALL_ACCEPTED notification is generated by the device driver and sent to the intercom proxy when a call is accepted.
Signature
CALL_ACCEPTED ()
Call Flow:
- A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “incoming call”.
- Upon entering this state, the device driver needs to trigger an INCOMING_CALL notification which is sent from the device to the intercom proxy.
- Upon answering the call, the CALL_ACCEPTED notification is sent to the intercom proxy.
Parameter | Description |
---|---|
num | The Device ID of the Proxy. |
str | The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
num | AUDIO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV) |
num | VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive. |
Returns
None
CALL_ENDED
The CALL_ENDED notification is generated by the device driver and sent to the intercom proxy when a call session is ended. After a SIP call is ended, any device participating in the call should send CALL_ENDED notification.
Signature
CALL_ENDED ()
Parameter | Description |
---|---|
num | The Device ID of the Proxy. |
str | The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
num | Hang up type: 0 = LOCAL, 1 = REMOTE, 2 = BCASTEMPTY, 3 = NOTFOUND, 4 = DEVBUSY, 5 = NOANSWER, 6 = HUNKOWN |
Usage Notes:
The CALL_ENDED notification is only applicable to devices that are active in an answered, call session. For example, in the case of a group call, the CALL_ENDED notify is sent only by the device that was participating in the call. Other devices in the call list should sent a CALL_REJECTED to the proxy.
CAMERA_ENABLED_CHANGE
Notification sent to the proxy when the camera enabled value of the intercom has changed
Signature
CALL_ENABLED_CHANGE ()
Parameter | Description |
---|---|
str | The new enabled value (true/false) of the intercom |
CALL_PAUSED
NOTE: The CALL_PAUSED notify is currently deprecated and not available for use.\
This notification is issued when a session is paused, it is sent to the initiator and all receiver(s) involved in the specified session.
Signature
CALL_PAUSED ()
Parameter | Description |
---|---|
num | The Device ID of the Proxy. |
num | The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
CALL_REJECTED
The CALL_REJECTED notification is generated by the device driver and sent to the intercom proxy when a call is rejected.
Signature
CALL_REJECTED ()
Call Flow:
- A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “incoming call”.
- Upon entering this state, the device driver needs to trigger an INCOMING_CALL notification which is sent from the device to the intercom proxy.
- Upon answering the call, the CALL_REJECTED notification is sent to the intercom proxy indicating that the device did not answer the call.
Parameter | Description |
---|---|
num | The Device ID of the Proxy. |
str | The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
num | Hang up type: 0 = LOCAL, 1 = REMOTE, 2 = BCASTEMPTY, 3 = NOTFOUND, 4 = DEVBUSY, 5 = NOANSWER, 6 = HUNKOWN |
Returns
None
Usage Notes:
The CALL_REJECTED notification is only applicable to devices that are NOT active in a call session. For example, in the case of a group call, the CALL_REJECTED notify is sent only by the device or devices that did not participate in the call. Other devices in the call list that answered the call, should sent a CALL_ENDED to the proxy.
CALL_RESUMED
NOTE: The CALL_RESUMED notify is currently deprecated and not available for use._
This notification is issued when a session is resumed, it is sent to the initiator and all receiver(s) involved in the specified session.
Signature
CALL_ RESUMED ()
Parameter | Description |
---|---|
num | The Device ID of the Proxy. |
num | The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
INCOMING_CALL
The INCOMING_CALL notification is generated by the device driver upon receiving the invitation to a call from SIP. This notification is sent to the Intercom Proxy.
Signature
INCOMING_CALL ()
Call Flow:
- A SIP invite to a call is received by the device via the device driver and the device enters a ringing state.
- The device goes into a state of “Incoming call”.
- Upon entering this state, the device driver needs to trigger an Incoming_Call notification which is sent from the device, via the device driver, to the Proxy.
Parameter | Description |
---|---|
num | The Device ID of the Proxy. |
str | The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
num | Call type. 0 = REGULAR , 2 = MONITOR , 3 = FORKING, 5 = EXTERNAL |
num | Remote_DEVICE_ID . The Proxy ID of the remote endpoint of the call |
num | AUDIO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV) |
num | VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive. |
Returns
None
OUTGOING_CALL
The OUTGOING_CALL notification is generated by the device driver and sent to the intercom proxy when a call invite is SENT. This notification is sent to the Intercom Proxy.
Signature
OUTGOING_CALL ()
Call Flow:
- A SIP invite to a call is sent by the device.
- The device goes into a state of “outgoing call”.
- Upon entering this state, the device driver needs to trigger an Outgoing_Call notification which is sent from the device driver to the Proxy.
Parameter | Description |
---|---|
num | The Device ID of the Proxy. |
str | The Session ID of the SIP session. Session ID is established when a call is initiated and serves as a unique identifier of the call. |
num | Call type. 0 = REGULAR, 2 = MONITOR, 3 = FORKING, 5 = EXTERNAL |
num | remote_device_id = the proxy ID of the remote endpoint |
num | AUDIO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY), 3 = Inactive (NO_SEND_RECV) |
num | VIDEO - The requested video capacity for the call. 0 = Full Duplex (SEND_RECV), 1 = Transmit Only (SEND_ONLY), 2 = Receive Only RECV_ONLY). The Audio channel cannot be Inactive. |
Returns
None
Intercom State Commands
SET_CAMERA_ENABLE
This command is issued to enable or disable the camera on an intercom device.
Signature
SET_CAMERA_ENABLE ()
Parameter | Description |
---|---|
bool | Boolean flag indicating whether enable or disable the camera on an intercom device. Enabled = 1, true, yes or on. Disabled = 0, false, no or off. |
Returns
None
Example
<SET_CAMERA_ENABLE>
<cameraEnable>[true]</cameraEnable>
</SET_CAMERA_ENABLE>
SET DND
This command is issued to toggle the “Do Not Disturb” setting of the intercom.
Signature
SET_DND ()
Parameter | Description |
---|---|
bool | Boolean flag indicating the new state for this setting. (0=false, 1=true) |
Returns
None
Example
<SET_DND>
<dndSettingd>[true]</dndSetting>
</SET_DND>
SET_EXCLUDE_FROM_NAVIGATOR
This command is issued to toggle the visibility of the intercom endpoint in a proxy user interface. This command will result in an EXCLUDE_FROM_NAVIGATOR_CHANGED
notification to the proxy.
Signature
SET_EXCLUDE_FROM_NAVIGATOR ()
Parameter | Description |
---|---|
bool | Boolean flag indicating the new state for this setting. (0=false, 1=true) |
Returns
None
Example
<SET_EXCLUDE_FROM_NAV>
<excludeFromNav>[1]</excludeFromNav>
</SET_EXCLUDE_FROM_NAV>
SET_SEND_VIDEO
This command is issued by a proxy consumer to cause the state of the send video setting to change. This command will result in a SEND_VIDEO_CHANGED
Signature
SET_SEND_VIDEO ()
Parameter | Description |
---|---|
bool | Boolean flag indicating the new state for this setting. (0=false, 1=true) |
Returns
None
Example
<SET_SEND_VIDEO>
<sendVideo>[1]</sendVideo>
</SET_SEND_VIDEO>
SET_MICROPHONE_GAIN
This command is issued by a proxy consumer to cause the microphone gain for the indicated intercom device to change. This command will result in a MICROPHONE_GAIN_CHANGED
notification to the indicated device.
Signature
SET_MICROPHONE_GAIN ()
Parameter | Description |
---|---|
bool | Boolean flag indicating the new state for this setting. (0=false, 1=true) |
Returns
None
Example
<SET_MICROPHONE_GAIN>
<microphoneGain>[0]</microphoneGain>
</SET_MICROPHONE_GAIN>
SET_MONITOR_MODE
This command will result in a MONITOR_MODE_CHANGED
notification to the proxy consumer for the indicated intercom device.
Signature
SET_ MONITOR_MODE ()
Parameter | Description |
---|---|
bool | Boolean flag indicating the new state for this setting. (0=false, 1=true) |
Returns
None
Example
<SET_MONITOR_MODE>
<monitorMode>[0]</monitorMode>
</SET_MONITOR_MODE>
SET_RINGER_VOLUME
This command is issued to cause the ringer volume setting to be changed for the indicated intercom device. This command will result in a RINGER_VOLUME_CHANGED
notification to the proxy consumer for the indicated intercom device.
Signature
SET_RINGER_VOLUME ()
Parameter | Description |
---|---|
NUM | A numeric value 0 - 100 indicating the new value for the ringer volume setting |
Returns
None
Example
<SET_RINGER_VOLUME>
<ringerVol>[1]</ringerVol>
</SET_RINGER_VOLUME>
SET_SPEAKER_VOLUME
This command is issued by a proxy consumer to cause the current speaker volume setting to be changed. This command will result in a SPEAKER_VOLUME_CHANGED
notification to the proxy consumer for the indicated intercom device.
Signature
SET_SPEAKER_VOLUME ()
Parameter | Description |
---|---|
num | A numeric value 0-100 that indicates the new speaker volume setting |
Returns
None
Example
<SET_SPEAKER_VOLUME>
<speakerVol>[50]</speakerVol>
</SET_SPEAKER_VOLUME>
Intercom State Requests
GET_CURRENT_STATE
This request is issued to obtain the current device state of the intercom endpoint making the request. Upon receiving the request, the driver should issue a CURRENT_STATE_CHANGED notify.
Signature
GET_CURRENT_STATE ()
Request Parameters
None
Response Parameters
Parameter | Description |
---|---|
id | The proxy device id of the intercom endpoint to which this request’s response is sent. This value is used to insure that the response is processed by proper device driver (i.e. the requestor). It is a number that is greater than or equal to zero (0). |
num | Numeric value indicating the current state of the device. (0=not ready, 1=idle, 2=busy, 3=max calls) |
Response Prototype
<device_state proxyid=”[10]”>
<currentState>[2]</currentState>
</device_state>
GET_STATE
This request is issued to obtain the device state of a specified intercom endpoint.
Signature
GET_STATE ()
Request Parameter | Description |
---|---|
idDevice | This request is issued to obtain the device state of a specified intercom endpoint. |
Request Prototype
See example to the right.
<GET_STATE>
<idDevice>[17]</idDevice>
</GET_STATE>
Response Parameters
Parameter | Description |
---|---|
id | The proxy device id of the intercom endpoint to which this request’s response is sent. This value is used to insure that the response is processed by proper device driver (i.e. the requestor). It is a number that is greater than or equal to zero (0). |
excludeFromNav | Boolean flag indicating the current state for this setting. (0=false, 1=true) |
playDoorChime | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
dndSetting | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
autoAnswer | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
currrentState | Numeric value indicating the current state of the device. (0=not ready, 1=idle, 2=busy, 3=max calls) |
sendVideo | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
monitorMode | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
ringerVol | Numeric value indicating the current value of this setting. (0 to 100) |
speakerVol | Numeric value indicating the current value of this setting. (0 to 100) |
microphoneGain | Numeric value indicating the current value of this setting. (0 to 100) |
showMainVideo | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
showMirrorVideo | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
cameraEnabled | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
aecEnabled | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
Response Prototype
<device_state proxyid=”[integer value]”>
<excludeFromNav>[integer value]</excludeFromNav>
<playDoorChime>[integer value]</playDoorChime>
<dndSetting>[integer value]</dndSetting>
<autoAnswer>[integer value]</autoAnswer>
<currentState>[integer value]</currentState>
<sendVideo>[integer value]</sendVideo>
<monitorMode>[integer value]</monitorMode>
<ringerVol>[integer value]</ringerVol>
<speakerVol>[integer value]</speakerVol>
<microphoneGain>[integer value]</microphoneGain>
<showMainVideo>[integer value]</showMainVideo >
<showMirrorVideo>[integer value]</showMirrorVideo >
<cameraEnabled>[integer value]</cameraEnabled >
<aecEnabled>[integer value]</aecEnabled >
</device_state>
GET_STATE_LIST
This request is issued to obtain the device state of all of intercom endpoints in the project
Signature
GET_STATE_LIST ()
Request Prototype
See example to the right.
<state_list>
<device_state id=”Id1”>
See GET_STATE response format
</device_state>
<device_state id=”Id2”>
See GET_STATE response format
</device_state>
<device_state id=”IdN”>
See GET_STATE response format
</device_state>
</state_list>
Intercom State Notifications
AUTO_ANSWER_CHANGED
This notification is issued when a call is accepted, it is sent to the initiator and the receiver involved in accepting the specified session.
Signature
AUTO_ANSWER_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
int | autoAnswer: Boolean flag indicating the current state for this setting. (0=false, 1=true) |
Example
<device_state id=[10]>
<autoAnswer>[1]</autoAnswer>
</device_state>
CAMERA_ENABLED_CHANGED
This notification is issued by the protocol when the endpoint’s Camera Enabled setting has changed.
Signature
CAMERA_ENABLED_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
int | cameraEnabled: Boolean flag indicating the current state for this setting. (0=false, 1=true) |
Example
<device_state id=[10]>
<cameraEnabled>[1]</cameraEnabled>
</device_state>
CURRENT_STATE_CHANGED
This notification is issued by the protocol when the endpoint’s current state has changed.
Signature
CURRENT_STATE__CHANGED ()
Parameter | Description |
---|---|
num | currentState - Numeric value indicating the current state of the device. (0=not ready, 1=idle, 2=busy, 3=max calls) |
Example
<device_state proxyid =[10]>
<currentState>[2]</currentState>
</device_state>
DEVICE_STATE_CHANGED
This notification is issued by the protocol when the endpoint’s current state has changed.
Signature
DEVICE_STATE__CHANGED ()
Parameter | Description |
---|---|
excludeFromNav | Boolean flag indicating the current state for this setting. (0=false, 1=true) |
playDoorChime | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
dndSetting | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
autoAnswer | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
currentState | Numeric value indicating the current state of the device. (0=not ready, 1=idle, 2=busy, 3=max calls) |
sendVideo | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
monitorMode | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
ringerVol | Numeric value indicating the current value of this setting. (0 to 100) |
speakerVol | Numeric value indicating the current value of this setting. (0 to 100) |
microphoneGain | Numeric value indicating the current value of this setting. (0 to 100) |
showMainVideo | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
showMirrorVideo | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
cameraEnable | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
aecEnabled | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
Example
<DEVICE_STATE_CHANGED>
<excludeFromNav>[1]</excludeFromNav>
<playDoorChime>[0]</playDoorChime>
<dndSetting>[0]</dndSetting>
<autoAnswer>[0]</autoAnswer>
<sendVideo>[1]</sendVideo>
<currentState>[3]</currentState>
<monitorMode>[1]</monitorMode>
<ringerVol>[50]</ringerVol>
<speakerVol>[70]</speakerVol>
<microphoneGain>[35]</microphoneGain>
<showMainVideo>[1]</showMainVideo>
<showMirrorVideo>[1]</showMirrorVideo>
<cameraEnabled>[0]</cameraEnabled>
<aecEnabled>[1]</aecEnabled>
</DEVICE_STATE_CHANGED
DEVICE_STATE_CHANGED
This notification is issued by the protocol when the endpoint’s Do Not Disturb setting has changed.
Signature
DND_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
int | dndSetting: Boolean flag indicating the current state for this setting. (0=false, 1=true) |
Example
<device_state proxyid =[10]>
<dndSetting>[1]</dndSetting>
</device_state>
EXCLUDE_FROM_NAVIGATOR_CHANGED
This notification is issued by the protocol when the endpoint’s Exclude from Navigator setting has changed.
Signature
EXCLUDE_FROM_NAVIGATOR_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
int | dndSetting: Boolean flag indicating the current state for this setting. (0=false, 1=true) |
Example
<device_state proxyid =[10]>
<excludeFromNav>[0]</excludeFromNav>
</device_state>
MICROPHONE_GAIN_CHANGED
This notification is issued by the protocol when the endpoint’s Microphone Gain setting has changed.
Signature
MICROPHONE_GAIN_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
int | microphoneGain: Numeric value indicating the current value of this setting. (0 to 100) |
Example
<device_state proxyid =[10]>
<microphoneGain>[0]</microphoneGain>
</device_state>
MONITOR_MODE_CHANGED
This notification is issued by the protocol when the endpoint’s Monitor Mode setting has changed.
Signature
MONITOR_MODE_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
monitorMode | Boolean flag indicating the current value of this setting. (0=false, 1=true) |
Example
<device_state proxyid =[10]>
<monitorMode>[0]</monitorMode>
</device_state>
MUTE_AUDIO_CHANGED
Notification sent to the protocol when the audio muted value of the intercom has changed.
Signature
MUTE_AUDIO_CHANGED ()
Parameter | Description |
---|---|
bool | enabled: = the new enabled value (true/false) of the intercom |
RINGER_VOLUME_CHANGED
This notification is issued by the protocol when the endpoint’s ringer volume setting has changed.
Signature
RINGER_VOLUME_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
ringerVol | Numeric value indicating the current value of this setting. (0 to 100) |
Example
<device_state proxyid =[10]>
<ringerVoL>[0]</ringerVoL>
</device_state>
SIP_USERNAME_CHANGED
Notification sent to the protocol when the SIP username value of the intercom has changed.
Signature
SIP_USERNAME_CHANGED ()
Parameter | Description |
---|---|
STR | username = the new username value of the intercom |
SEND_VIDEO_CHANGED
This notification is issued by the protocol when the endpoint’s Monitor Mode setting has changed.
Signature
SEND_VIDEO_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
BOOL | sendVideo: Boolean flag indicating the current state for this setting. (0=false, 1=true) |
Example
<device_state proxyid =[10]>
<sendVideo>[0]</sendVideo>
</device_state>
SPEAKER_VOLUME_CHANGED
This notification is issued by the protocol when the endpoint’s Speaker Volume setting has changed.
Signature
SPEAKER_VOLUME_CHANGED ()
Parameter | Description |
---|---|
int | The proxy device id of the intercom endpoint whose device state information is being returned |
num | speakerVol: Numeric indicating the current state for this setting. (0=false, 1=true) |
Example
<device_state proxyid =[10]>
<speakerVol>[0]</speakerVol>
</device_state>
USE_CAMERA_CHANGED
Notification sent to the protocol when the use camera value of the intercom has changed.
Signature
USE_CAMERA_CHANGED ()
Parameter | Description |
---|---|
bool | enabled: = the new enabled value (true/false) of the intercom |
Intercom Call Group Requests
GET_GROUP_LIST
This request is issued to obtain the group list of all of intercom call groups in the project except for the “All” group.
Signature
GET_GROUP_LIST ()
Request Parameter | Description |
---|---|
num | The group ID of the call group. |
str | The name of the call group. |
Example
<groups>
<group>
<id>[3]</id>
<name>[group one]</name>
</group>
<group>
<id>[4]</id>
<name>[group two]</name>
</group>
</groups>
Intercom Capabilities
has_play_door_chime
Device supports the ability to play a secondary door chime inanition to the default door chime. This is primarily intended for playing a secondary door chime on Control4 touch panels.
Signature
<has_play_door_chime></has_play_door_chime>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_play_door_chime>false</has_play_door_chime>
</capabilities>
has_camera
The device includes a camera and supporting camera functionality. This controls enabling/disabling the use of the Send Video UI in ComposerPro.
Signature
<has_camera></has_camera>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_camera>True</has_camera>
</capabilities>
has_display
Device includes a physical display. Typically a door station has a display where a touch panel may not. Setting this to True enables the device to receive incoming video.
Signature
<has_display></has_display>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_display>True</has_display>
</capabilities>
has_buttons
This capability specifies whether this device type has custom buttons. Its value is a Boolean string. For example: “True” or “False”
Signature
<has_buttons></has_buttons>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_buttons>True</has_buttons>
</capabilities>
is_doorstation
This capability specifies whether this device type is a door station. Its value is a Boolean string. For example: “True” or “False”
Signature
<is_doorstation></is_doorstation>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<is_doorstation>True</is_doorstation>
</capabilities>
driver_arch_type
This capability is included in the SDK for Control4 internal use. It is used to determine if the driver file is a Control4 driver or a third party driver. Third party driver developers must pass a value of 5 in this capability.
Signature
<driver_arch_type></driver_arch_type>
Parameter | Description |
---|---|
num | 0-5. Device Type Number |
Example
<capabilities>
<driver_arch_type>5</driver_arch_type>
</capabilities>
has_auto_answer
A setting of True indicates that the device supports the ability to automatically answer an incoming call. Setting this capability to True will also enable the use of the has auto answer checkbox in ComposerPro.
Signature
<has_auto_answer></has_auto_answer>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_auto_answer>false</has_auto_answer>
</capabilities>
has_do_ not_disturb
Device supports do not disturb functionality. Setting this to true will enable the use of the Do Not Disturb checkbox in ComposerPro.
Signature
<has_do_not_disturb></has_do_not_disturb>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_do_not_disturb>true</has_do_not_disturb>
</capabilities>
has_early_media
Device supports delivery of SIP Early Media. Early media is the preview video and or audio distributed prior to a call being answered. Currently, this is only supported in door stations.
Signature
<has_early_media></has_early_media>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_early_media>true</has_early_media>
</capabilities>
has_monitor_mode
Device supports the use of display monitor functionality. Setting this to true will also enable the use of the Monitor Mode checkbox in ComposerPro.
Signature
<has_monitor_mode></has_monitor_mode>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_monitor_mode>true</has_monitor_mode>
</capabilities>
use_microphone
The driver has the ability to physically control the microphone level on the device.
Signature
<use_microphone></use_microphone>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<use_microphone>true</use_microphone>
</capabilities>
use_speaker
The driver has the ability to physically control the speaker level on the device.
Signature
<use_speaker></use_speaker>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<use_speaker>true</use_speaker>
</capabilities>
use_ringer
The driver has the ability to physically control the ringer level on the device.
Signature
<use_ringer></use_ringer>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<use_ringer>true</use_ringer>
</capabilities>
has_high_definition
Capability applicable to touch panels. The driver has the ability to turn camera video quality to 720p, as opposed to 640x480.
Signature
<has_high_definiton></as_high_definiton>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_high_definiton>true</has_high_definiton>
</capabilities>
has_echo_calibration
This capability is included in the SDK for Control4 internal use.
Signature
<has_echo_calibration></has_echo_calibration>
Parameter | Description |
---|---|
bool | True/False |
Example
<capabilities>
<has_echo_calibration>false</has_echo_calibration>
</capabilities>
audio_codecs_supported
This Capability has been deprecated and is no longer applicable to driver development efforts.
has_intercom
This Capability has been deprecated and is no longer applicable to driver development efforts.
has_video_intercom
This Capability has been deprecated and is no longer applicable to driver development efforts.
has_mcast_emedia
This Capability has been replaced and is no longer applicable to driver development efforts.
For more information see the has_early_media capability.
can_change_multicast_ip
This Capability has been deprecated and is no longer applicable to driver development efforts.
can_change_transport
This Capability has been deprecated and is no longer applicable to driver development efforts.
video_codecs_supported
This Capability has been deprecated and is no longer applicable to driver development efforts.
can_set_aec
This Capability has been deprecated and is no longer applicable to driver development efforts.
number_ring_buttons
This capability is included in the SDK for Control4 internal use.
can_detect_button_press
This capability is included in the SDK for Control4 internal use.
can_detect_button_release
This capability is included in the SDK for Control4 internal use.
Intercom Events
Intercom Events are tied to programming in ComposerPro. Events are also recored in history and can be used to trigger notifications using the History Agent.
For example, it’ possible to trigger a notification on a mobile phone based on an incoming call (Incoming Call Event) that occurs on a door station or any other device in the project that uses the Intercom Proxy.
Intercom Events
The following Events are supported by the Intercom Proxy. They include:
Incoming Call
Fired when there is a new incoming call.
Outgoing Call
Fired when there is a new outgoing intercom call.
Call Setup
Fired when a new call is setup.
Call Accepted
Fired when an incoming call is accepted by the receiver.
Call Rejected
Fired when an incoming call is rejected by the receiver.
Call Started
Fired when there is new call session is started.
Call Ended
Fired when an existing call session is ended
Call Paused
Fired when an existing call session is paused.
Call Resumed
Fired when an existing call session is resumed.
Do Not Disturb Changed
Fired when the “Do Not Disturb” setting is changed.
Auto Answer Changed
Fired when the “Auto Answer” setting is changed.
Monitor Mode Changed
Fired when the “Monitoring” setting is changed.
Send Video Changed
Fired when the “Send Video” setting is changed.
Ringer Volume Changed
Fired when the “Ringer Volume” setting is changed.
Speaker Volume Changed
Fired when the “Speaker Volume” setting is changed.
Microphone Gain Changed
Fired when the “Microphone Gain” setting is changed
Custom Button N Pressed
Fired when the “Custom Button N” is pressed. (where N = 0 or 1)
Custom Button N Released
Fired when the “Custom Button N” is released. (where N = 0 or 1)
Intercom Variables
Intercom Variables
The following Variables are supported by the Intercom Proxy itself. They include:
CALL_DURATION - This variable supports ComposerPro programming based on a set call duration time.
MICROPHONE_GAIN - This variable supports ComposerPro programming based on a change to the microphone’s gain level.
RINGER_VOLUME - This variable supports ComposerPro programming based on a change to the device’s ringer volume level.
SPEAKER_VOLUME - This variable supports ComposerPro programming based on a change to the device’s speaker volume level.
Intercom Conditionals
Intercom Conditionals
The following Conditionals are supported by the Intercom Proxy itself. They include:
Remote Name Matched
Returns true if there is an incoming/outgoing call to a specified endpoint.
Do Not Disturb
Returns true if “Do Not Disturb” is enabled on the current endpoint.
Auto Answer
Returns true if “Auto Answer” is enabled on the current endpoint.
Send Video
Returns true if “Send Video” is enabled on the current endpoint.
Monitor Mode
Returns true if “Monitoring” is enabled on the current endpoint.
In A Call
Returns true if there is an active session on the current endpoint.
Keypad Proxy Commands
Overview
This section describes describe the basic functionality of the Keypad Proxy. This proxy was introduced into the system in version 2.5.0, along with the gen3 lighting drivers. It is designed to be fairly generic, but there are a few capabilities that only Control4 keypads use such as track_previous_button
. It should also work for fixed multi-row keypads. Configurable multi-row keypads are not supported with this proxy.
DELETE_KEYPAD_BUTTON
Used to delete a specific button from the keypad
Name
DELETE_KEYPAD_BUTTON ()
Parameter | Description |
---|---|
num | ID value of the button to be deleted |
Returns
None
KEYPAD_ALL_BUTTON_COLOR
Used to set the color for all buttons on a keypad.
Name
KEYPAD_ALL_BUTTON_COLOR ()
Parameter | Type | Description |
---|---|---|
OFF_COLOR |
INT | ID value of the button to be deleted |
ON_COLOR |
INT | The new on/push color for the keypad |
CURRENT_COLOR |
INT | The color the keypad should immediately go to |
Returns
None
KEYPAD_ALL_BUTTON_COLOR_CLEAR
Used to clear the color for all buttons on a keypad.
Signature
KEYPAD_ALL_BUTTON_COLOR_CLEAR ()
Parameter | Description |
---|---|
OFF_COLOR |
ID value of the buttons to be deleted |
ON_COLOR |
The new on/push color for the keypad |
CURRENT_COLOR |
The color the keypad should immediately go to |
Returns
None
KEYPAD_BUTTON_COLOR_CLEAR
Used to clear the color for a button on a keypad.
Signature
KEYPAD_BUTTON_COLOR_CLEAR ()
Parameter | Description |
---|---|
OFF_COLOR |
ID value of the button to be deleted |
ON_COLOR |
The new on/push color for the keypad |
CURRENT_COLOR |
The color the keypad should immediately go to |
Returns
None
KEYPAD_BUTTON_ACTION
Used to send remote commands to the keypad to have it act as if a button on the keypad was actually used.
Name
KEYPAD_BUTTON_ACTION ()
Parameter | Type | Description |
---|---|---|
ACTION | NUM | The action performed on the keypad: 0 = Release, 1 = Push, 2 = Click |
BUTTON ID | INT | The ID of the button where the action is performed. |
Returns
None
KEYPAD_BUTTON_COLOR
Used to set the color for a specific button on a keypad.
Name
KEYPAD_BUTTON_COLOR ()
Parameter | Description |
---|---|
OFF_COLOR |
ID value of the button to be deleted |
ON_COLOR |
The new on/push color for the keypad |
CURRENT_COLOR |
The color the keypad should immediately go to |
Returns
None
KEYPAD_BUTTON_INFO
Used to change the settings on a particular button.
Name
KEYPAD_BUTTON_INFO ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | INT | The ID of the button being changed |
NAME | STR | The name of the button (optional) |
ON COLOR | STR | The on/press color for the button (optional) |
OFF COLOR | STR | The off/release color for the button (optional) |
ENGRAVING | STR | The engraved name for the button (optional) |
BUTTON BEHAVIOR | INT | The behavior for the button (optional) |
LED BEHAVIOR | INT | The LED behavior for the button (optional) |
STATE | BOOL | Used to indicate which color the button should use. A value of true means use the on/push color, a value of false means use the off/release color. |
MATCH LED STATE | BOOL | Similar to state, but should only be applied if the LED is tracking a bound device. |
Returns
None
FINISH
Used to send a finish value to the proxy. Only used if the custom_finishes
capability is set to true in the protocol driver
Valid values are:
- 0 = White
- 1 = Light Almond
- 2 = Ivory
- 3 = Brown
- 4 = Black
- 5 = Aluminum
- 6 = Snow White
- 7 = Biscuit
- 8 = Midnight Black
Signature
FINISH ()
Returns
None
NEW_KEYPAD_BUTTON
Used to create a new button on the keypad. This is sent to the protocol by the proxy when the proxy is loaded. Thus the protocol doesn't have to store all its buttons settings, the proxy will do it.
Name
NEW_KEYPAD_BUTTON ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | INT | The ID of the button being changed |
NAME | STR | The name of the button (optional) |
ON COLOR | STR | The on/press color for the button (optional) |
OFF COLOR | STR | The off/release color for the button (optional) |
BUTTON BEHAVIOR | INT | The behavior for the button (optional) |
LED BEHAVIOR | INT | The LED behavior for the button (optional) |
SLOTS | NUM | The number of slots the button takes up on the keypad. |
Returns
None
SET_TRACK_PREV_BUTTON
Indicates whether the keypad should track the previous button being used. This mainly for Control4 Configurable keypad devices (zigbee, wired, combo, etc)
Name
SET_TRACK_PREV_BUTTON N ()
Parameter | Type | Description |
---|---|---|
MODE | BOOL | Support button tracking |
Returns
None
Keypad Capabilities
clear_led_current_color_support
Enabling this capability allows the Keypad Proxy to clear keypad button(s) color. Previously, this had to be done at the protocol level. Specifically, this is applicable to button colors that have been set programmatically in Composer Pro. Enabling this capability in your driver will expose two new Keypad Proxy Programming Action in Composer Pro: Clear LED Current and Clear All LED Current.
Available from 3.4.2.
Signature
<clear_led_current_color_support></clear_led_current_color_support>
Type
Boolean. Defaults to false
Dynamic Capability
No
Usage Note
In conjunction with this capabilities’ use, Drivers need to implement the following Proxy Commands:
KEYPAD_BUTTON_COLOR_CLEAR - A Notify must be sent when this command is received containing the new button color for the indicated button using the KEYPAD_BUTTON_COLOR notification.
KEYPAD_ALL_BUTTON_COLOR_CLEAR - A Notify must be sent when this command is received containing the new button colors for each button using the KEYPAD_BUTTON_COLOR notification.
Example
<capabilities>
<clear_led_current_color_support>true</clear_led_current_color_support>
</capabilities>
Keypad Protocol Notifications
BEHAVIOR_NAME
Used to inform (or update) the proxy of a button behavior name
Name
BEHAVIOR_NAME ()
Parameter | Description | Description |
---|---|---|
BUTTON ID | NUM | The ID of the behavior to send when selected by the user. |
NAME | STR | The string to display to the user for the behavior. |
Returns
None
CLICK_COUNT
Used to inform the proxy that a button has been clicked multiple times. This is used by the proxy to fire the proper event (single, double, triple click, etc).
Name
CLICK_COUNT ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | NUM | The ID of the button clicked by the user. |
COUNT | NUM | The number of times the button was clicked |
Returns
None
DELETE_KEYPAD_BUTTON
Used to inform the proxy that a button is being deleted
Name
DELETE_KEYPAD_BUTTON ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | NUM | The ID of the button to be deleted. |
Returns
None
KEYPAD_BUTTON_ACTION
Used by the protocol to inform the proxy that some type of action occurred on a button. The proxy will then update colors, send the proper command to the bound device, etc.
Name
KEYPAD_BUTTON_ACTION ()
Parameter | TypeDescription | Description |
---|---|---|
BUTTON ID | NUM | The ID of the button to be deleted. |
ACTION | NUM | The action performed on the keypad: 0 = Release, 1 = Push, 2 = Click, 3 = Double Click, 4 = Triple Click |
Returns
None
KEYPAD_ALL_BUTTON_COLOR
Used by the protocol to inform the proxy of a change in color for every button on the keypad.
Name
KEYPAD_ALL_BUTTON_COLOR ()
Parameter | Type | Description |
---|---|---|
ON COLOR | STR | The new on color for the button in RGB hex string. |
OFF COLOR | OFF COLOR | OFF COLOR |
CURRENT COLOR | STR | The new current color for the button in RGB hex string. |
COLOR | STR | The new on and off color for the button in RGB hex string. |
Returns
None
KEYPAD_BUTTON_COLOR
This is used by the protocol to inform the proxy that it has been instructed to change the color of a button.
Name
KEYPAD_BUTTON_COLOR ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | NUM | The ID of the button whose color is changing. |
ON COLOR | STR | The new on color for the button in RGB hex string. |
OFF COLOR | STR | The new off color for the button in RGB hex string. |
CURRENT COLOR | STR | The new current color for the button in RGB hex string. |
COLOR | STR | The new on and off color for the button in RGB hex string. |
Returns
None
KEYPAD_BUTTON_INFO
Used by the protocol to inform the proxy of a changed setting for a particular button. It can have multiple parameters, but the only required one is BUTTON_ID
.
Name
KEYPAD_BUTTON_INFO ()
Parameter | Description |
---|---|
num | BUTTON ID: The ID of the button whose color is changing. |
str | NAME: The name of the button This will cause binding names to be updated. |
str | ENGRAVING: The engraving for the button. |
str | ON COLOR: The new on color for the button in RGB hex string. |
str | OFF COLOR: The new off color for the button in RGB hex string. |
str | CURRENT COLOR: The new current color for the button in RGB hex string. |
str | COLOR: The new on and off color for the button in RGB hex string. |
STATE | The current state of the button, so the proxy knows what color the button is using (state \> 0 means on-color) |
LED BEHAVIOR | The assigned behavior of the LED associated with this button. |
BUTTON BEHAVIOR | The assigned behavior for this button. |
Returns
None
LED_BEHAVIOR_NAME
Used to inform (or update) the proxy of a LED's behavior name
Name
LED_BEHAVIOR_NAME ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | NUM | The ID of the LED behavior to send when selected by the user. |
NAME | STER | The name of the button This will cause binding names to be updated. |
Returns
None
NEW_KEYPAD_BUTTON
Used to inform the proxy about the existence of a new button on the keypad. If the specified button already exists, this notification will do nothing.
Name
NEW_KEYPAD_BUTTON ()
Parameter | Description |
---|---|
num | BUTTON ID: The ID of the button whose color is changing. |
str | NAME: The name of the button This will cause binding names to be updated. |
str | ON COLOR: The new on color for the button in RGB hex string. |
str | OFF COLOR: The new off color for the button in RGB hex string. |
str | ENGRAVING: The engraving for the button. |
num | SLOTS: The size of the button. |
BUTTON BEHAVIOR | The assigned behavior for this button. |
LED BEHAVIOR | The assigned behavior of the LED associated with this button. |
bool | LOCK COLORS: - Whether the colors for this button should be locked in Composer Pro. TRUE/FALSE Note - The user will not be allowed to change them if True. |
Returns
None
ONLINE_CHANGED
Used by the protocol to notify the proxy if the device is online or offline. The payload of the notify message is a boolean indicating true/false
Name
ONLINE_CHANGED ()
Parameter
None
Returns
None
Advanced Lighting Scene Agent
Capabilities
Capabilities provide a way for protocol driver to tell an agent what functionality the driver and/or hardware has. Capabilities need to be defined in the drivers c4i or c4z configuration file or updated via a Dynamic Capabilities Changed Notify.
Only capacities that are different from the defaults need to be specified.
advanced_scene_support
Whether the device supports the full Advanced Lighting Scenes commands and API's. This capability is primarily useful for drivers that want to support multi-scene elements. Additionally, Zigbee and zWave devices can take advantage of broadcast packets to avoid each driver needing to send a unicast packet, as would be done with reduced_als_support.
If this capability is true, drivers must include full support of the following:
- Parsing and using XML received from the PUSH_SCENE command that is sent, when the device comes online, to know what the scene involvement is for the light.
- Support scenes with multiple elements.
- For performance, only sends one(1) level update Notify when load hardware is at final scene level. -- We highly recommend all existing and new drivers be moved over to the BRIGHTNESS TARGET API design for performance reasons and better UI tracking of level during ramping.
- The following ALS Commands:
- PUSH_SCENE
- ACTIVATE_SCENE
- RAMP_SCENE_UP
- RAMP_SCENE_DOWN
- STOP_SCENE_RAMP Optionally - These commands were used as workarounds for lights in early Advanced Lighting Scene agent times (pre 3.0.0) but are no longer needed, as long as the driver properly handles the PUSH_SCENE command changes.
- SYNC_SCENE
- SYNC_ALL_SCENES
Signature
<advanced_scene_support></advanced_scene_support>
Type
Boolean: defaults to false.
Dynamic Capability
No
Usage Note
If a driver is using the light v1 proxy and doesn't have either of the advanced_scene_support or reduced_als_support capabilities in its c4i file, the agent assumes that reduced_als_support is true. This allows existing 3rd party lights into advanced scenes. The v1 proxy was modified to abstract away the important differences from the protocol drivers. If a 3rd party driver does want full scene support, it must use the Light V2 proxy.
If any lights have full ALS support then only the "New" broadcast MIB is sent, otherwise the older ZCL MIB is sent, as according to logic in ALS "activate" function.
reduced_als_support
If the advanced_scene_support capability is false, a driver can use the reduced_als_support capability. Most drivers will find this sufficient for ALS support and using this option greatly reduces development time and complexity for driver developers, as less than 1% of Control4 systems have implemented multi-element scenes. Specifying this option will cause ALS to send individual SET_BRIGHTNESS_TARGET and SET_COLOR_TARGET commands to a driver when a scene is activated. This means drivers do not have to implement PUSH_SCENE, ACTIVATE_SCENE, SYNC_SCENE, SCENE_ALL_SCENES, manage XML table lookups, or multi-element scenes that advanced_scene_support=true does require.
The device will be allowed into ALS scenes, but with the following limitations:
- No Multi Element support
- No Flash Support
If this capability is true, drivers must include support for the following:
- SET_BRIGHTNESS_TARGET
- RAMP_SCENE_UP
- RAMP_SCENE_DOWN
- STOP_SCENE_RAMP
- Optional:
- SET_COLOR_TARGET
Signature
<reduced_als_support></reduced_als_support>
Type
Boolean: defaults to false.
Dynamic Capability
No
Usage Note
If a driver is using the light v1 proxy and doesn't have either of the advanced_scene_support or reduced_als_support capabilities in its c4i file, the agent assumes that reduced_als_support is true. This allows existing 3rd party lights into advanced scenes. The v1 proxy was modified to abstract away the important differences from the protocol drivers. If a 3rd party driver does want full scene support, it must use the Light V2 proxy.
If any lights have full ALS support then only the "New" broadcast MIB is sent, otherwise the older ZCL MIB is sent, as according to logic in ALS "activate" function.
supports_broadcast_scenes
Whether the device supports broadcasts. This includes Zigbee, ZWave, UDP. If supports_broadcast_scenes and supports_multicast_scenes are both false, the light V2 proxy will send a SYNC_SCENES command to the Protocol Driver with TIME and STATE parameters, when the device comes online.
If set to true, ALS assumes the device is always a zigbee device.
If set to true, LightV2 Proxy assumes the device is always a zigbee device.
Forces an OnZigbeeDeviceOnline(Offline) to occur when the standard DeviceOnline(Offline) command is called.
Signature
<support_broadcast_scenes></support_broadcast_scenes>
Type
Boolean: defaults to false.
Dynamic Capability
No
supports_multichannel_scenes
Causes the LightV2 proxy to send the "EXECUTE_SCENE" command to the device rather than a set level command. If supports_broadcast_scenes and supports_multicast_scenes are both false, the light V2 proxy will send a SYNC_SCENES command to the Protocol Driver with TIME and STATE parameters, when the device comes online.
Signature
<support_multichannel_scenes></support_ multichannel_scenes>
Type
Boolean: defaults to false.
Dynamic Capability
No
Variables
Note: Advanced Lighting Scene Agent does not currently have any enabled variables.
Events
The following are System Events that are provided and managed by the Proxy. These can be used for Composer Programming or other drivers to monitor the changes of a values reflected in a LightV2 proxy.
Scene Activated
This event is fired when the scene changes from the inactive to the active state.
ID
(sceneID * *5)
Scene DeActivated
This event is fired when the scene changes from the active to the inactive state.
ID
(sceneID * *5) + 1
All Members 100%
This event is fired when all the members are at 100%. This event is not exposed to Composer, so the user can't do programming off it.
ID
(sceneID * 5) + 2
All Members 0%
This event is fired when all the members are at 0%. This event is not exposed to Composer, so the user can't do programming off it.
ID
(sceneID * 5) + 3
Scene Invoked
This event is fired when the agent is told to activate a scene. This will fire even if the scene already active.
ID
(sceneID * 5) + 4
Asynchronous Commands
This section lists the Commands (Bound Call, aka SendToDevice in Lua) that the Proxy supports. These are for use by Navigators, Composer Programming and other services like Voice Control. The thing to remember with Proxies is that many of the commands are passed on to the Protocol and it is the Protocol drivers responsibility to ripple the commands result back up to the Proxy using a 'Notify' command. This allows the Protocol to optionally make slight adjustments to commands for its unique driver or hardware and then inform the Proxy of the change.
RAMP_SCENE_UP
Used to ramp a scene up until it is told to stop.
Parameters
SCENE_ID - Integer. Which scene to ramp up.
RAMP_SCENE_DOWN
Used to ramp a scene down until it is told to stop.
Parameters
SCENE_ID - Integer. Which scene to ramp down.
STOP_RAMP_SCENE
Used to ramp a scene down until it is told to stop.
Parameters
SCENE_ID - Integer. Which scene to stop ramping.
ACTIVATE_SCENE
Activates a scene. This scene will always be run and events fired, even if the scene is already active.
Parameters
SCENE_ID - Integer. ID of the scene to activate.
DEACTIVATE_SCENE
Always activates the scene that is referenced as the Toggle ID, even if the toggle scene is active. Common use case is to set two scenes toggle scenes to each other but it is possible to link multiple scenes to a single "Off" toggle scene or even create loops of multiple scenes that will activate the next scene in the scene loop when "Toggle Scene" is ran.
Parameters
SCENE_ID - Integer. ID of the scene to deactivate.
TOGGLE_SCENE
Will activate the scene ID specified if it is inactive. If the scene ID specified is active then the toggle scene ID will be activated.
Parameters
SCENE_ID - Integer. Integer. ID of the scene that will have its toggle scene activated.
Light Driver Development Best Practices
The purpose of this section is to provide best practice advice for driver developers developing lighting drivers. By following these recommendations, developers will ensure consistent behavior from their driver and other lighting drivers. Additionally, implementing these guidelines will greatly improve driver interaction with other components in the Control4 OS such as Agents, Customer Interfaces, Programming, etc.
Brightness Target API
A Brightness Target API has been released in conjunction with O.S. 3.3.0. The API is disabled by default for non-color capable drivers and can be enabled with the supports_target capability. The API includes the SET_BRIGHTNESS_TARGET proxy command and LIGHT_BRIGHTNESS_CHANGED and LIGHT_BRIGHTNESS_CHANGING proxy notifies.
Brightness target API should be used by all new driver written against the Light V2 Proxy and existing drivers should be updated if possible. The API is required for driver certification in 3.3.0. Dimmer drivers should now only use LIGHT_BRIGHTNESS_CHANGING and LIGHT_BRIGHTNESS_CHANGED notifies. Switch drivers only need to use the BRIGHTNESS_CHANGED notify. Note that the LEVEL_CHANGED notify should not be used.
Using the LIGHT_BRIGHTNESS_CHANGING notify command allows drivers to inform the proxy of brightness transitions. Customer Interfaces monitor LIGHT_BRIGHTNESS_CHANGING events and will display a brightness changing animation depending on the provided current brightness, target brightness and rate. This can be useful for devices that do not send intermediate status notifications when transitioning between brightness levels. It is also recommended to send brightness changing notify command in cases where the final level is unknown, such as holding a button to ramp a light, scene or group up or down. For example, if a customer holds a button to slow-ramp a light on, the driver should notify the proxy that the brightness is changing to 100%. This will in turn show a brightness changing animation on Customer Interfaces. Once the customer releases the button (e.g. at 30%), the driver should send a LIGHT_BRIGHTNESS_CHANGED notify to indicate where the light ramping stopped.
Previously, drivers had to 'emulate' slider movements on Customer Interfaces by sending periodic, incremental light level notifies during brightness transitions (e.g. every 20ms). These updates cause performance issues including:
- Slow performance in proxies, director, customer interfaces and Advanced Lighting Scene agent.
- Potentially inaccurate states for Advanced Lighting Scene tracking.
- Excessive zigbee traffic and often incorrect keypad button LED status.
- Inconsistent slider movement in Customer Interfaces.
- Excessive triggering and potentially incorrect Composer Programming being fired.
Brightness and Color Changing API
OS 3.3.0 also introduced a new Light V2 proxy API that allows protocol drivers to notify the proxy that a light's color (LIGHT_COLOR_CHANGING) or brightness (LIGHT_BRIGHTNESS_CHANGING) is changing. The use of these notify commands are optional. However, it is recommended to notify the proxy of color or brightness transitions whenever possible. Using these notify commands allows other drivers or agents in the system to monitor the state of the light.
Using these notifies also allows additional Programming:
- Events: Brightness Begins to ramp and Color begins to ramp.
- Conditionals and Loops: Is Brightness Target and Is Color Target.
Enforcing min/max Capabilities
Beginning with OS 3.3.0, Advanced Lighting Scenes Agent, Customer Interfaces, Programming and other system components strictly enforce min/max and other capability settings in LightV2 Proxy drivers. It is recommended to verify if these capabilities are correct in your drivers. Existing out-of-range settings (e.g. in Advanced Lighting Scenes agent, Programming, etc.) will not be forcibly changed on upgrades but any new settings will enforce min/max capabilities.
For example, in pre-OS 3.3.0, Composer and the proxy only enforced click_rate_min/max capabilities in a driver's Properties. In the Advanced Lighting Scene Agent and Programming, it was possible to set a rate that was out of the click_rate_min/max range. In OS 3.3.0 and later, it will not be possible to set a rate out of this range. If these capabilities are not correct, partners and customers will not be able to use correct range when specifying ramp rates.
Handling Consecutive Brightness and Color commands
The Light V2 Proxy has independent commands to set color (chromaticity) (SET_COLOR_TARGET) and brightness (SET_BRIGHTNESS_TARGET). It is possible to send these commands to the protocol driver one immediately after the other (e.g, Programming, Customer Interfaces, Agents or other drivers). When these commands come in succession, a desired outcome is that the light transitions to the specified color and brightness, i.e., consecutive commands should not interfere or override each other.
Driver developers must make sure that consecutive color and brightness commands are handled correctly. If the device does not support consecutive commands, a best practice is to have a debouncing (and/or queuing) mechanism in the driver so that commands can be combined.
Default On and Dim Colors
All colored lights have a mandatory Default On Color and Default Dim Color presets. These provide a consistent behavior when turning the light on or off. Furthermore, these presets can be used as 'hooks' for other agents/drivers in the system that might want to change color that the light should turn on to or transition to while turning off.
Default On Color should be set whenever the devices turns on through SET_BRIGHTNESS_TARGET command, Button Click and Hold actions, etc.
Default Dim color should be used while the light is turning off, except in cases when the final level is unknown. For example, color should not be changed while dimming down using button hold since it is not known when the dimming will be stopped. For example, it is not known if the customer is dimming to turn off the light or to only lower the brightness.
Setting Color while the Light is Off
The Light V2 proxy allows sending SET_COLOR_TARGET commands to the protocol driver while the light is off. In Control4 OS. color chromaticity and brightness are independent. Because of this, the protocol driver should not turn on the light when a command to set the color is received while the light is off. Instead, drivers should save the last color that was sent while the light is off and set that color when the light subsequently turns on from the Control4 system.
Warm Dim
Warm Dim technology allows LED lights to dim down to a warmer color temperature. This replicates the effect of incandescent and halogen light bulbs. With color and color temperature support in OS 3.3.0, driver developers can 'emulate' Warm Dim behavior in their drivers. The following section explains how Warm Dimming is implemented for a Philips Hue driver. However, this approach is recommended for other drivers that support this behavior.
Principle of Operation for Philips Hue This feature is only available for lights that support color correlated temperature (CCT) control. Warm Dimming can be enabled or disabled on the Lighting Extras view on the Customer Interfaces or on the driver's Advanced Properties page in Composer. When enabled, a change to the light's brightness level will automatically change the color temperature of the light so that lower brightness results in warmer colors and vise versa.
When Warm Dimming is active, color correlated temperature of the light will follow a linear function of brightness, between the 'Warm Dimming CCT At Min Brightness' and 'Warm Dimming CCT At Max Brightness' Advanced Properties. 'Warm Dimming CCT At Min Brightness' and 'Warm Dimming CCT At Max Brightness' are color correlated temperatures of the light at 1% and 100% brightness, respectively:
cct = WarmDimmingCCTatMinBrightness + (targetBrightness - 1) * (WarmDimmingCCTatMaxBrightness - WarmDimmingCCTatMinBrightness) / 99
Enabling Warm Dimming does not change Default On Color and Default Dim Color settings. The light will turn on at the Default On Brightness and CCT will be the value for Default On Brightness on the warm dimming function.
The Following graph displays a Warm Dimming CCT change as function of brightness for the following settings:
- Warm Dimming CCT At Min Brightness = 2000K
- Warm Dimming CCT At Max Brightness = 6000K
- Default On Brightness = 50%
- With brightness change to 1%, CCT will also be set by the driver to 2000K. At full brightness (100%), CCT will be 6000K. When the light is turned on, CCT will be 3980K (at Default On Brightness of 50%).
Warm Dimming will be active only while changing brightness of the light. Changing the CCT does not affect brightness. Furthermore, if any color is selected (including CCT, e.g. via Customer Interfaces, Advanced Lighting Scenes, Programming) the light will transition to the specified color and will exit the 'emulated warm dimming' mode. To return a light to the emulated warm dimming mode, it must be turned off and then turned back on.
Keypad Button Link Bindings
KEYPAD BUTTON LINK BINDINGS
BUTTON_LINK bindings are a way for drivers to interact with other drivers that either expose a physical or virtual Keypad Button or for drivers that want to integrate with drivers that have a physical or virtual button. Button State and LED State information are the information that can be passed between the drivers. For example, a Control4 Keypad exposes a BUTTON_LINK binding that the Tune-In driver integrates with so a user can select a playlist or change songs via a Control4 Physical Keypad.
BUTTON_LINK was designed and assumes button and led functionality is the same between all keypad button hardware existing in the Control4 project, which causes some drivers to have to sometimes have incomplete or even fake functionality, ie: Button Release or Button Color functionality because some Non-Control4 physical keypads do not have LEDs. Also hardware/drivers do not have an API that allows drivers to interrogate hardware for what is supported. Some new devices also have specific double and triple click support which is newer. Note that older drivers were not updated to support those multi-press calls that go over BUTTON_LINK bindings. There is also no limit to what can be sent over a BUTTON_LINK as it's purely just a passage.
A driver making use of another drivers physical keypad buttons will typically support the following Commands and Notifies and will check the binding ID of the messages of the bound call command to know which button (BUTTON_LINK) the message applies to.
Commands
DO_PUSH
Button was Pushed. Driver can expect to get a CLICK or RELEASE sometime in the future. If a driver does not care if the button is held or clicked, Control4 recommends executing native driver's functionality on Press rather than waiting for the upcoming CLICK or RELEASE.
DO_CLICK
Button was Clicked, not held. Driver can expect to get a CLICK or RELEASE sometime in the future. If a driver does not care if the button is held or clicked, Control4 recommends executing native driver's functionality on Press rather than waiting for the upcoming CLICK or RELEASE
DO_RELEASE
Button was finally released. Note that drivers might tie up Director between a users physical PUSH and RELEASE. For example, a half second push may appear to the driver as many seconds of being held. This could result in causing unwanted results such as "runaway" volume or light ramping. There is no way to detect or work around this at the current time.
REQUEST_BUTTON_COLORS
Causes the driver to respond back with BUTTON_COLORS
and MATCH_LED_STATE
calls to let the other end of the binding know what the colors and state of them are._
SET_BUTTON_COLOR
Used to set the color of a button, this command name can be unique or non-existent for some drivers but this should be followed to make mass setting LED's possible from driver to driver.
Parameter | Description |
---|---|
str | BUTTON ID: String of the button, often used by a driver or proxy to lookup which of its buttons its setting. Sometimes it can be auto determined by which binding it came in on. |
Notifications
BUTTON_COLORS
Parameter | Description |
---|---|
str | ON COLOR: COLOR STR type, value of string such as "ffccbb" |
str | OFF COLOR: COLOR STR type, value of a string such as "000000" |
MATCH_LED_STATE
Parameter | Description |
---|---|
bool | STATE: Boolean if the Off (0/false) or On (1/true) color should be active. |
Light V2 Capabilities
brightness_rate_max
Minimum color rate, in milliseconds, supported for transitioning from one brightness to another. Should always be set for any color light driver, even if the transition rate is unchangeable. Allows dealers to configure the maximum rate that can be configured by dealers. The brightness_rate value is used by voice control, navigators, customer created advanced lighting scenes, and various other areas of the system that previously didn't allow customization of the transition rate.
Dealers can set the values for this in ComposerPro Properties.
Signature
<brightness_rate_max></brightness_rate_max>
Type
Integer. Defaults to UNIT16_MAX. Valid values fall between 0 and 4294967295.
Dynamic Capability
Yes
Example
<capabilities>
<brightness_rate_max>4294967295</brightness_rate_max>
</capabilities>
brightness_rate_min
Minimum color rate, in milliseconds, supported for transitioning from one brightness to another. Should always be set for any color light driver, even if the transition rate is unchangeable. Allows dealers to configure the minimum rate that can be configured by dealers. The brightness_rate value is used by voice control, navigators, customer created advanced lighting scenes, and various other areas of the system that previously didn't allow customization of the transition rate.
Dealers can set the values for this in ComposerPro Properties.
Signature
<brightness_rate_min></brightness_rate_min>
Type
Integer. Defaults to 0.
Dynamic Capability
Yes
Example
<capabilities>
<brightness_rate_min>0</brightness_rate_min>
</capabilities>
set_level
Configuration API indicating if the device brightness can be set discretely to a number between a min and a max. Defaults to false.
Signature
<set_level></set_level>
Type
Boolean
Dynamic Capability
Yes
Example
<capabilities>
<set_level>false</set_level>
</capabilities>
supports_target
Configuration API indicating if the device and/or driver supports the new API for changes of what the light is actively ramping from, ramping to and the ramp rate. Defaults to false.
Signature
<supports_target></supports_target>
Type
Boolean
Dynamic Capability
Yes
Example
<capabilities>
<supports_target>false</supports_target>
</capabilities>
dimmer
Configuration API indicating if the device can dim. Defaults to false.
Signature
<dimmer></dimmer>
Type
Boolean
Dynamic Capability
Yes
Example
<capabilities>
<dimmer>false</dimmer>
</capabilities>
brightness_on mode_preset
Used to enable generic brightness presets to be used with the "On Mode" behavior. If a driver supports this capability, it is up to the driver to support additional parameter handling and reporting.
See SET_BRIGHTNESS_TARGET, BRIGHTNESS_CHANGING and BRIGHTNESS_CHANGED commands and notifies and look for optional parameters such as LIGHT_BRIGHTNESS_TARGET_PRESET_ID and LIGHT_COLOR_CURRENT_PRESET_ID.
Additionally, drivers need to implement UPDATE_BRIGHTNESS_ON_MODE and UPDATE_BRIGHTNESS_PRESET commands so they can track values for situations where the proxy is not the initiator of light behavior, such as On Mode Fade, scenes, composer programming, etc.
Signature
<brightness_on_mode_preset></brightness_on_mode_preset>
Type
Boolean. Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<brightness_on_mode_preset>true</brightness_on_mode_preset>
</capabilities>
brightness_on_mode_previous
Used to enable the Previous On "On Mode" behavior for a light. The 3.3.2 and newer proxies track the last brightness non-zero level reported by a driver before a BRIGHTNESS_CHANGED notification occurs with a level of 0. When the proxy gets a generic On (aka Dynamic On) then the proxy will send a SET_BRIGHTNESS_TARGET command with that last reported non-zero brightness level. The proxy will also update the PREVIOUS brightness preset value with the last non 0 brightness level anytime the proxy gets a BRIGHTNESS_CHANGED notify of a value of 0.
Additionally if drivers get a command to turn on that did not come from the proxy, the driver can check the brightness PREVIOUS preset value to know what level it should turn on to.
Signature
<brightness_on_mode_previous></brightness_on_mode_ previous>
Type
Boolean. Defaults to false
Dynamic Capability
No
Example
<capabilities>
<brightness_on_mode_previous>true</brightness_on_mode_previous>
</capabilities>
color_on_mode_fade
Used to enable the Fade On "On Mode" behavior, such as Dim to Warm, so that the lights color is based on the current brightness of a light.
Dealers are allowed to pick two colors when in this mode. The Dim color a dealer picks is the color of the light at a 1% brightness and a second On color a dealer picks is the color of the light at 100% brightness. If a customer picks 50% brightness, the color the light shows should be an equal mix of the Dim color and On color. This "color mix" can easily be calculated by the following equation:
colorFinal.x = colorDim.x + (colorOn.x - colorDim.x) brightness.01
colorFinal.y = colorDim.y + (colorOn.y - colorDim.y) brightness.01
As a driver receives a new SET_BRIGHTNESS_TARGET command then the driver should use this formula and always set a new color on their light even if it does not receive a SET_COLOR_TARGET command.
Driver developers will notice that when a light is normally turned on from UI's, they will not get a SET_COLOR_TARGET when in this mode. If a driver does get a SET_COLOR_TARGET command, such as from a scene, composer programming, or other scenario then the driver should go to that color even while in Fade mode. If the driver gets any future SET_BRIGHTNESS_TARGET then the driver should again apply the color formula.
Signature
<color_on_mode_fade></color_on_mode_fade>
Type
Boolean. Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<color_on_mode_fade>true</color_on_mode_fade>
</capabilities>
color_on_mode_preset
Used to enable generic color presets to be used with the "On Mode" behavior. If a driver supports this capability, it is up to the driver to support additional parameter handling and reporting.
See SET_COLOR_TARGET, COLOR_CHANGING and COLOR_CHANGED commands and notifies and look for optional parameters such as:
- LIGHT_COLOR_TARGET_PRESET_ID
- LIGHT_COLOR_TARGET_PRESET_ORIGIN
- LIGHT_COLOR_CURRENT_PRESET_ID
- LIGHT_COLOR_CURRENT_PRESET_ORIGIN
Additionally, drivers need to implement UPDATE_COLOR_ON_MODE and UPDATE_COLOR_PRESET commands so they can track values for situations where the proxy is not the initiator of light behavior, such as On Mode Fade, scenes, composer programming, etc.
Signature
<color_on_mode_preset></color_on_mode_preset>
Type
Boolean. Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<color_on_mode_preset>true</color_on_mode_preset>
</capabilities>
color_on_mode_previous
Used to enable the Previous Color On "On Mode" behavior for a light. The 3.3.2 and newer proxies track the last color reported by a driver before a BRIGHTNESS_CHANGED notification occurs with a level of 0. When the proxy gets a generic On (aka Dynamic On) then the proxy will send a SET_COLOR_TARGET command with that last reported color before the brightness went to 0. The proxy will also update the PREVIOUS color preset value with the last color prior to the proxy receiving a BRIGHTNESS_CHANGED notify of a value of 0.
Additionally if drivers get a command to turn on that did not come from the proxy, the driver can check the PREVIOUS color preset value to know what color it should turn on to.
Signature
<color_on_mode_previous></color_on_mode_previous>
Type
Boolean. Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<color_on_mode_previous>true</color_on_mode_previous>
</capabilities>
cold_start
Ramping API indicating if the lighting hardware supports cold start. Defaults to false. In conjunction with O.S. release 3.4.2, this capability was modified to be a Dynamic Capability. This change has no impact on existing drivers using the cold_start capability. Going forward a driver can now change this capability if needed.
Available from 3.4.2.
Signature
<cold_start></<cold_start>
Type
Boolean
Dynamic Capability
Yes
Example
<capabilities>
<cold_start>true</cold_start>
</capabilities>
-- The following command can be sued to dynamically change the cold_start capability:
C4:SendToProxy(PROXY_ID, 'DYNAMIC_CAPABILITIES_CHANGED', { cold_start = gColdStartEnabled }, "NOTIFY", true)
color_correlated_temperature_max
Maximum CCT (aka Kelvin) degrees supported by the driver.
Signature
<color_correlated_temperature_max></color_correlated_temperature_max>
Type
Integer: Defaults to 20000.
Dynamic Capability
Yes
Example
<capabilities>
<color_correlated_temperature_max>20000</color_correlated_temperature_max>
</capabilities>
color_correlated_temperature_min
Minimum CCT (aka Kelvin) degrees supported by the driver.
Signature
<color_correlated_temperature_min></color_correlated_temperature_min>
Type
Integer: Defaults to 1000.
Dynamic Capability
Yes
Example
<capabilities>
<color_correlated_temperature_min>1000</color_correlated_temperature_min>
</capabilities>
color_rate_behavior
Supported color rate behaviors include:
0 - Unchangeable Rate. 1 - Device only supports one rate for brightness and color. 2 - Device supports ramping brightness and color at two different rates.
Signature
<color_rate_behavior></color_rate_behavior>
Type
Integer: Defaults to 0.
Dynamic Capability
Yes
Example
<capabilities>
<color_rate_behavior>2</color_rate_behavior>
</capabilities>
color_rate_max
Maximum color rate, in milliseconds, supported for transitioning from one color to another. Should always be set for any color light driver, even if the transition rate is unchangeable. Allows dealers to configure the maximum rate that can be configured. The color_rate value is used by voice control, navigators, customer created advanced lighting scenes, and various other areas of the system that previously didn't allow customization of the transition rate.
Signature
<color_rate_max></color_rate_max>
Type
Integer: Defaults to 0.
Dynamic Capability
Yes
Example
<capabilities>
<color_rate_max>200</color_rate_max>
</capabilities>
color_rate_min
Minimum color rate, in milliseconds, supported for transitioning from one color to another. Should always be set for any color light driver, even if the transition rate is unchangeable. Allows dealers to configure the maximum rate that can be configured. The color_rate value is used by voice control, navigators, customer created advanced lighting scenes, and various other areas of the system that previously didn't allow customization of the transition rate.
Signature
<color_rate_min></color_rate_min>
Type
Integer: Defaults to 0.
Dynamic Capability
Yes
Example
<capabilities>
<color_rate_min>200</color_rate_min>
</capabilities>
disable_flash
This capability Indicates whether the driver supports Flash behavior. This capability is useful with regard to Flash functionality being offered in the Advanced Lighting Scenes Composer Pro UI. By default, this capability is set to false. Setting this to true will allow Flash functionality to be configured in Composer Pro.
Available from 3.4.2.
Signature
<disbale_flash></disbale_flash>
Type
bool
Dynamic Capability
No
Example
<capabilities>
<disbale_flash>true</disbale_flash>
</capabilities>
has_fixed_ramp_rate
Ramping API indicating if the light has a fixed ramp rate and can not be changed via driver. Defaults to false.
Signature
<has_fixed_ramp_rate></<has_fixed_ramp_rate>
Type
Boolean
Dynamic Capability
Yes
Example
<capabilities>
<has_fixed_ramp_rate>true</has_fixed_ramp_rate>
</capabilities>
fixed_ramp_rate
For devices that have has_fixed_ramp_rate set to true, this is the number of milliseconds it takes the device to ramp from min to max or vice versa. Used only by the Advanced Lighting Scenes Agent. Defaults to 0.
Signature
<fixed_ramp_rate></<fixed_ramp_rate>
Type
Integer
Dynamic Capability
Yes
Example
<capabilities>
<fixed_ramp_rate>false</fixed_ramp_rate>
</capabilities>
click_rates
Ramping API that determines whether properties appear in composer allowing the user to set the click rates. Also enables "Fast On" and "Fast Off" presets.
Signature
<click_rates></<click_rates>
Type
Boolean
Dynamic Capability
No
Example
<capabilities>
<click_rates>false</click_rates>
</capabilities>
click_rate_min
Ramping API that determines the minimum length of time (in milliseconds) that can be set for Click Rate of a keypad button press. This is also used for minimum time of ramp rate range for Composer Programming. Defaults to 0.
Signature
<click_rate_min></<click_rate_min>
Type
Integer
Dynamic Capability
No
Example
<capabilities>
<click_rate_min>0</click_rate_min>
</capabilities>
click_rate_max
Ramping API that determines the maximum length of time (in milliseconds) that can be set for Click Rate of a keypad button press. Defaults to 1.
Signature
<click_rate_max></<click_rate_max>
Type
Integer
Dynamic Capability
No
Example
<capabilities>
<click_rate_max>1</click_rate_max>
</capabilities>
color_trace_tolerance
Some color lighting hardware or communication protocols lack enough bits or precision to set all possible colors, especially if using 8 bit Mired, RGB, or HSV values. This capability adjusts the CIELa*b* Delta comparison value to allow drivers to increase or reduce the color comparison area to work around rounding issues in devices and/or communication. Most people can visually detect a color difference with a Delta of 3.0 or higher. Control4 has chosen a default Delta of 1.0 as this should be sufficient for most hardware and protocols.
This Delta value is used by the system to determine if two colors are close enough to be considered "the same". This tolerance check is used by Advanced Lighting Scenes, Composer Programming, and other areas.
In 3.3.1 and later releases, if the Delta value provided is > .01, then the superior CIELa*b* tolerance formula is used to determining if a color is the as another color in the system. If the value provided is < .01, or any value in 3.3.0, then the difference is based on the xy chromaticity euclid distance between two colors.
Signature
<color_trace_tolerance></color_trace_tolerance>
Type
Float
Dynamic Capability
Yes
Example
<capabilities>
<color_trace_tolerance>.06</color_trace_tolerance>
</capabilities>
has_extras
Boolean indicating if the device has extras commands support. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
Signature
<has_extras></has_extras>
Type
Boolean. Defaults to false
Dynamic Capability
Yes
Example
<capabilities>
<has_extras>true</has_extras>
</capabilities>
hold_rates
Ramping API that determines whether properties appear in Composer allowing the user to set hold rates. Defaults to false.
Signature
<hold_rates></<hold_rates>
Type
Boolean
Dynamic Capability
No
Example
<capabilities>
<hold_rates>false</hold_rates>
</capabilities>
hold_rate_min
Ramping API that determines Minimum length of time (in milliseconds) that can be set for Hold Rate of a keypad button press. Defaults to 1000.
Signature
<hold_rate_min></<hold_rate_min>
Type
Integer
Dynamic Capability
No
Example
<capabilities>
<hold_rate_min>1000</hold_rate_min>
</capabilities>
hold_rate_max
Ramping API that determines the maximum length of time (in milliseconds) that can be set for Hold Rate of a keypad button press Also used for the maximum time of ramp rate range for Composer Programming. Defaults to 86400000.
Signature
<hold_rate_max></<hold_rate_max>
Type
Integer
Dynamic Capability
No
Example
<capabilities>
<hold_rate_max>86400000</hold_rate_max>
</capabilities>
load_group_support
Load Group capability Indicating if the light can participate in load groups and the driver follows all Load Group API requirements. Defaults to false.
Signature
<load_group_support></load_group_support>
Type
Boolean
Dynamic Capability
No
Example
<capabilities>
<load_group_support>false</load_group_support>
</capabilities>
hide_proxy_events
Composer capability that determines whether the proxy’s Events (brightness, color changes and buttons events) should appear in Composer Programming. Defaults to false.
Signature
<hide_proxy_events></hide_proxy_events>
Type
Boolean
Dynamic Capability
No
Example
<capabilities>
<hide_proxy_events>false</hide_proxy_events>
</capabilities>
has_button_events
Composer capability that determines whether the driver has button events that should appear in Composer programming. Defaults to false.
Signature
<has_button_events></has_button_events>
Type
Boolean
Dynamic Capability
No
Example
<capabilities>
<has_button_events>false</has_button_events>
</capabilities>
has_leds
Keypad capability that determines whether the properties appear in Composer to allow the dealer to set LED colors of keypad buttons. Defaults to false.
Signature
<has_leds></has_leds>
Type
Boolean
Dynamic Capability
No
Example
<capabilities>
<has_leds>false</has_leds>
</capabilities>
multi_click
This capability implements ability to disable multi-click events/actions for a light driver. This is useful when it is desirable to disable the use of press, release, single, double or triple click programming in Composer Pro. This capability defaults to true.
Available from 3.4.2.
Signature
<multi_click></multi_click>
Type
Boolean: Defaults to true.
Dynamic Capability
No
Example
<capabilities>
<multi_click>true</multi_click>
</capabilities>
supports_brightness_stop
Used to indicate if a light brightness transition can be stopped during a ramp. Drivers that support Daylight Agent benefit from implementing this as the Daylight scenario can be stopped without having to force a light to go to a different brightness or color to end tracking. Reduced ALS support drivers should implement this capability so that ramping scenes works correctly.
*Note, a bug in 3.3.2 prevents keypad buttons bound to the proxies BUTTON_LINK for Brightness Stop from working. This will be resolved in 3.3.3.
Signature
<supports_brightness_stop></supports _brightness_stop>
Type
Boolean: Defaults to false.
Dynamic Capability
Yes
Example
<capabilities>
<supports_color>false</supports_color>
</capabilities>
Usage Note
If changing the supports_color or supports_color_correlated_temperature capabilities via the Dynamic Capabilities Notify, these should both be done in a single notification. If only one is disabled/enabled at a time, device color presets such as the On or Dim colors may have their color mode changed between Full Color and CCT automatically.
For example, if the presets mode were CCT and a driver on director startup dynamically enabled just supports_color the proxy would detect that CCT is not supported and change any existing presets to color mode Full Color.
supports_color
Whether the device can show a broad range of colors. Set to False and use "supports_color_predefined" if the driver can only reproduce a limited number of colors, such as devices that only use enums to communicate or hardware with a limited table of factory configured colors.
Signature
<supports_color></supports_color>
Type
Boolean: Defaults to false.
Dynamic Capability
Yes
Example
<capabilities>
<supports_color>false</supports_color>
</capabilities>
Usage Note
If changing the supports_color or supports_color_correlated_temperature capabilities via the Dynamic Capabilities Notify, these should both be done in a single notification. If only one is disabled/enabled at a time, device color presets such as the On or Dim colors may have their color mode changed between Full Color and CCT automatically.
For example, if the presets mode were CCT and a driver on director startup dynamically enabled just supports_color the proxy would detect that CCT is not supported and change any existing presets to color mode Full Color.
supports_color_correlated_temperature
Wh Whether the device has native support for color correlated temperature reporting in Kelvin. Set this capability to False if the driver can only do predefined color temperatures. If enabled via dynamic capability, it will be necessary to Notify the proxy of the current color immediately after the capability is enabled.
Signature
<supports_color_correlated_temperature></supports_color_correlated_temperature>
Type
Boolean: Defaults to false.
Dynamic Capability
Yes
Example
<capabilities>
<supports_color_correlated_temperature>false<supports_color_correlated_temperature>
</capabilities>
Usage Note
Note: If changing the supports_color or supports_color_correlated_temperature capabilities via the Dynamic Capabilities Notify, these should both be done in a single notification. If only one is disabled/enabled at a time, device color presets such as the On or Dim colors)may have their color mode changed between Full Color and CCT automatically.
For example, if the presets mode were Full Color and a driver on director startup dynamically enabled just supports_color_correlated_temperature then the proxy would detect that Full Color is not supported and change any existing presets to color mode CCT.
supports_default_on
Note: Deprecating - Drivers should not use this capability but instead use the brightness on mode preset capability Drivers that enable both will experience oddities in Composer dealer configuration.
This feature is for lights that support a default ON brightness in their firmware. When enabled, the Light Proxy sends a SET_PRESET_LEVEL command to drivers when the brightness "On” preset is updated in the proxy through Composer or the PRESET_LEVEL system variable. This enables light switches that respond to local button presses to go to the same default ON level as what the Control4 system uses when a light is turned on or toggled via Navigators, Composer Programming, and keypad buttons.
Signature
<supports_default_on></supports_default_on>
Type
Boolean: Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<supports_default_on>false<supports_default_on>
</capabilities>
advanced_scene_support
Whether the device supports the full Advanced Lighting Scenes driver commands and API's.
Signature
<advanced_scene_support></advanced_scene_support>
Type
Boolean: Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<advanced_scene_support>false</advanced_scene_support>
</capabilities>
reduced_als_support
If the advanced_scene_support capability is false, a driver can use this reduced_als_support capability for Advanced Lighting Scene support. The device will be allowed into a scene, but the device can't participate in scene ramping and can only have either 0 or 1 elements in a scene.
Signature
<reduced_als_support></reduced_als_support>
Type
Boolean: Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<reduced_als_support>false</reduced_als_support>
</capabilities>
supports_broadcast_scenes
Whether the device supports broadcasts. This includes Zigbee, ZWave, UDP.
Signature
<supports_broadcast_scenes></supports_broadcast_scenes>
Type
Boolean: Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<supports_broadcast_scenes>false</supports_broadcast_scenes>
</capabilities>
supports_multichannel_scenes
Causes the LightV2 proxy to send the "EXECUTE_SCENE" command to the device rather than a set level command.
Signature
<supports_multichannel_scenes></supports_multichannel_scenes>
Type
Boolean: Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<supports_multichannel_scenes>false</supports_multichannel_scenes>
</capabilities>
hide_proxy_properties
Whether to show all proxy properties in composer. This is primarily only used for extremely limited hardware that can't ramp or do much else except turn on and off.
Signature
<hide_proxy_properties></hide_proxy_properties>
Type
Boolean: Defaults to false.
Dynamic Capability
No
Example
<capabilities>
<hide_proxy_properties>false</hide_proxy_properties>
</capabilities>
nesting_driver_is_parent
This capability is applicable to drivers where supporting drivers are required for the one device. This capability makes it easier to understand what drivers are associated with each other. This specific capability indicates whether or not this driver is dependent on other drivers. When used correctly, it will setup the dependent driver(s) to be nested under the primary (parent) driver in Composer Pro.
Available from 3.4.2.
Signature
<nesting_driver_is_parent></nesting_driver_is_parent>
Type
Boolean: Defaults to false.
Dynamic Capability
No
Usage Note
The following variable must be added and configured to use this capability:
VAR_C4_NESTING_PARENTS_CHILD_DEVICES - Set this variable to a comma delimited list of ID values for the secondary device(s) required by the parent driver. This list represents the drivers that will be nested under the parent driver in Composer Pro. This is the associated driver(s) with the nested_driver_is_child capability set to true.
Example
<capabilities>
<nesting_driver_is_parent>false</nesting_driver_is_parent>
</capabilities>
nested_driver_is_child
This capability is applicable to light drivers where multiple light drivers are added for one light device. These capabilities make it easier to understand what drivers are associated with each other. This specific capability indicates whether or not this driver is a dependent driver required by primary light driver for use. When used correctly, it will setup the dependent driver(s) to be nested under the primary driver in Composer Pro.
Available from 3.4.2.
Signature
<nested_driver_is_child></nested_driver_is_child>
Type
Boolean: Defaults to false.
Dynamic Capability
No
Usage Note
The following variable must be added and configured to use this capability:
VAR_C4_NESTED_CHILDS_PARENT_DEVICE - Set the variable to the ID of primary driver requiring its use. This is the associated driver with the nesting_driver_is_parent capability set to true.
Example
<capabilities>
<nested_driver_is_child>false</nested_driver_is_child>
</capabilities>
Light V2 Conversion Commands
This section lists the Commands used for converting to/from hue, saturation and lightness (HSV) and red, blue and green (RGB).
Control4 OS 3.3.0 and later releases include native support for Color Chromaticity and Color Correlated Temperature (CCT) functionality. Navigators, the Light V2 Proxy, and the Advanced Lighting Scene (ALS) agent use this new color architecture. This means that Drivers written against the 3.3.0 Light V2 Proxy can now implement native color support.
Color API's between the proxy, ALS agent and drivers are based on the CIE 1931 XY Chromaticity standard for visible color.
Beginning with O.S. 3.3.0, all drivers (including non-color) should implement the new Brightness Target API for communicating brightness to the Light V2 proxy.
Understanding Chromaticity
Currently, no bulb or LED strip can produce all of the colors seen by the human eye. However, the range of colors lighting devices can produce is constantly growing. In addition to this, most lighting devices do not produce the same range of colors as other devices. In order to provide a consistent color experience in a home which could include various brands and models of bulbs or strip lighting; the Control4 color API needs to support all possible visible colors. Also, RGB and Hue/Saturation data values are not universal. The same RGB and Hue/Saturation data value across different lighting devices will often produce different actual visible colors. The use of Chromaticity can solve these issues.
Chromaticity allows for communicating a color using XY coordinates that is universal and can be computationally converted to various other color spaces, formats, and their respective data values. Below is a diagram showing all visible light wavelengths and their reference points according to the CIE 1931 Chromaticity standard. All visible colors can be specified by an XY coordinate.
The Use of Gamuts
Most light driver developers are familiar with Hue and Saturation or RGB values. Hue and Saturation are a data representation of how much of a color something is in relation to how much it can be in total. RGB is similar but also includes how much of its total brightness is used. Neither of these provide a way to verify if two different lighting devices are producing the same viewable color as seen by a home owner.
However, if a devices’ gamut value for the RGB or Hue/Sat value is known, it is possible to compare this device with a different device’s gamut values making it possible to understand how the two device's colors relate. Below are the gamut triangles of three different LED chips, used in a lighting products.
In the image above, you can see that Gamut B (the smaller Red triangle) can produce a far smaller range of colors than the Gamut A (Black) triangle. If we were to send the RGB data of "0,255,0" to two different devices (one device using Gamut A LED chips and another device using Gamut B LED chips) the actual visible green color light produced by both devices would be very different.
For example, consider a home owner wants to set two different light device colors to "White" or the center of each triangle: 255,255,255 for RGB and the device gamut values are not used in their respective drivers. The resulting visual white color that the home owner would see would be very different between the two light devices. In this case, the device using Gamut B LED chips would be a much lower Color Correlated Temperature (CCT). In fact, the difference between the two devices would be over 1000. This could certainly annoy many home owners. This is why it's very useful to know the gamut of your device if it is possible to obtain it
Driver developers that know the gamut of their LED chips also know that there are standard mathematical formulas for transitioning any RGB value to/from the more universal XY Chromaticity color space.
For driver developers who do not know their LED chips gamut or aren't interested in color accuracy the provided RGB↔XY lua conversion function can be used. Be aware that these calls map RGB and Hue/Saturation data values to the generic sRGB gamut and that the color a home owner or dealer selects on UIs may not match the color produced by the LED chips. Below is graphical representation for the sRGB gamut for reference.
Lack Brightness Values
Chromaticity does not include a data value for brightness. Reasons for this include:
Many users prefer to adjust color and brightness individually, such as selecting a color then ramping brightness or picking a brightness and changing colors.
If Color presets included brightness it would result in multiple presets of the same Red color. However, they would be at different brightness levels. This would make color preset navigation and selection for home owners cumbersome.
Programming Event firing and Conditional checks would be very convoluted. For example, White at 50% is not be the same as White at 100%. And ultimately, all the user wanted to check is if the color was "White".
Similar to Programming complexity, Lighting Scene tracking would become unmanageable. Advanced Lighting Scene creation is more configurable and provides better ways for dealers to meet customers needs.
Color Correlated Temperature (CCT)
Many colored lighting devices are designed to fulfill just the CCT implementation of color. Drivers do have the ability to specify if they support CCT, Full Color or both. Different configuration and UI features are available based on capabilities specified by the driver. Most all "full color" lights will inherently support CCT, as the image below shows.
Note that Control4 OS Color APIs also allow specifying if a color is CCT or "Full Color". This helps the device know if the user is trying to control the light in one mode vs another.
ColorCCTtoXY
This function converts a CCT (color temperature in Kelvin) color to the CIE-1931 xy chromaticity.
This function was released in conjunction with O.S. 3.3.0.
Signature
C4:ColorCCTtoXY (k)
Parameters
Parameter | Description |
---|---|
num | Number representing Kelvin temperature. |
Returns
Parameter | Description |
---|---|
num | Number representing x component of the CIE-1931 xy chromaticity. |
num | Number representing y component of the CIE-1931 xy chromaticity. |
ColorHSVtoRGB
This function converts an HSV color to the RGB color space.
This function was released in conjunction with O.S. 3.3.0.
Signature
C4:ColorHSVtoRGB (h, s, v, rgbScale)
Parameters
Parameter | Description |
---|---|
num | Number representing hue component of HSV. |
num | Number representing saturation component of HSV. |
num | Number representing value component of HSV. |
num | (Optional) Number representing RGB scale (1 to 255), default value 255. |
Returns
Parameter | Description |
---|---|
num | Number representing the red component of RGB (in given scale). |
num | Number representing the green component of RGB (in given scale). |
num | Number representing the blue component of RGB (in given scale). |
Example
lua
print(C4:ColorHSVtoRGB(80, 100, 50))
ColorHSVtoXY
This function converts an HSV color to a CIE-1931 xy chromaticity. Note, there's no need for a driver developer to specify whitepoint and primaries if usinh srgb or rec2020 for the gamut parameter as described below.
This function was released in conjunction with O.S. 3.3.0.
Signature
C4:ColorHSVtoXY (h, s, v, gamut)
Parameters
Parameter | Description |
---|---|
num | Number representing hue component of HSV. |
num | Number representing saturation component of HSV. |
num | Number representing value component of HSV. |
str | (Optional) Gamut used for conversion. Valid options are: "srgb" where the srgb primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. "rec2020" where where the rec2020 primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. “custom” where primaries and whitepoint values can be specified. |
Returns
Parameter | Description |
---|---|
num | Number representing the x component of the CIE-1931 xy chromaticity. |
num | Number representing the y component of the CIE-1931 xy chromaticity. |
Examples
—Using three rgb params:—
C4:ColorHSVtoXY(0, 100, 100)
—Since no scale param is supported, the default of "255" is used for the scale value param.—
— Using srgb primaries and whitepoint: —
C4:ColorHSVtoXY(0, 100, 100, \"srgb\")
—Since no scale param is supported, the default of "255" is used for the scale value param.—
— Using rec2020 primaries and whitepoint: —
C4:ColorHSVtoXY(0, 100, 100, \"rec2020\")
—Since no scale param is supported, the default of "255" is used for the scale value param.—
— Using custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorHSVtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")
—Using custom gamut with both custom primaries and custom whitepoint is specified:—
C4:ColorHSVtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\")
—Using Rob params but specifying a custom rgb scale. Scale is 0.0 to 1.0 where 1.0 is full brightness: —
C4:ColorHSVtoXY(0, 100, 100, 1)
— Scale is 0.0 to 100 where 100 is full brightness: —
C4:ColorHSVtoXY(0, 100, 100, 100)
— Scale is 0.0 to 255 where 255 is full brightness: —
C4:ColorHSVtoXY(0, 100, 100, 255)
— Using srgb primaries & whitepoint: —
C4:ColorHSVtoXY(0, 100, 100, 255, \"srgb\")
— Using rec2020 primaries/whitepoint: —
C4:ColorHSVtoXY(0, 100, 100, 255, \"rec2020\")
— Custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorHSVtoXY(0, 100, 100, 255, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")
— Custom gamut with both custom primaries and custom whitepoint is specified: —
C4:ColorHSVtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\"
ColorRGBtoHSV
This function converts an RGB color to the HSV color space.
This function was released in conjunction with O.S. 3.3.0.
Signature
C4:ColorRGBtoHSV (r, g, b, rgbScale)
Parameters
Parameter | Description |
---|---|
num | Number representing the red component of RGB (in given scale). |
num | Number representing the green component of RGB (in given scale). |
num | Number representing the blue component of RGB (in given scale). |
num | (Optional) Number representing RGB scale (1 to 255), default value 255. |
Returns
Parameter | Description |
---|---|
num | Number representing hue component of HSV. |
num | Number representing saturation component of HSV. |
num | Number representing value component of HSV. |
ColorRGBtoXY
This function converts an RGB color to a CIE-1931 xy chromaticity. Note, there's no need for a driver developer to specify whitepoint and primaries if usinh srgb or rec2020 for the gamut parameter as described below.
This function was released in conjunction with O.S. 3.3.0.
Signature
C4:ColorRGBtoXY (r, g, b, rgbScale, gamut)
Parameters
Parameter | Description |
---|---|
num | Number representing the red component of RGB (in given scale). |
num | Number representing the green component of RGB (in given scale). |
num | Number representing the blue component of RGB (in given scale). |
num | (Optional) Number representing RGB scale (1 to 255). The default value is 255. |
str | (Optional) Gamut used for conversion. Valid options are: "srgb" where the srgb primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. "rec2020" where where the rec2020 primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. “custom” where primaries and whitepoint values can be specified. |
Returns
Parameter | Description |
---|---|
num | Number representing the x component of a CIE-1931 xy chromaticity. |
num | Number representing the y component of a CIE-1931 xy chromaticity. |
Examples
—Using three rgb params:—
C4:ColorRGBtoXY(0, 100, 100)
—Since no scale param is specified the default of "255" is used for the scale value param.—
— Using srgb primaries and whitepoint: —
C4:ColorRGBtoXY(0, 100, 100, \"srgb\")
—Since no scale param is specified the default of "255" is used for the scale value param.—
— Using rec2020 primaries and whitepoint: —
C4:ColorRGBtoXY(0, 100, 100, \"rec2020\")
—Since no scale param is specified the default of "255" is used for the scale value param.—
— Using custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorRGBtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")
—Using custom gamut with both custom primaries and custom whitepoint is specified:—
C4:ColorRGBtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\")
—Using Rob params but specifying a custom rgb scale. Scale is 0.0 to 1.0 where 1.0 is full brightness: —
C4:ColorRGBtoXY(0, 100, 100, 1)
— Scale is 0.0 to 100 where 100 is full brightness: —
C4:ColorRGBtoXY(0, 100, 100, 100)
— Scale is 0.0 to 255 where 255 is full brightness: —
C4:ColorRGBtoXY(0, 100, 100, 255)
— Using srgb primaries & whitepoint: —
C4:ColorRGBtoXY(0, 100, 100, 255, \"srgb\")
— Using rec2020 primaries/whitepoint: —
C4:ColorRGBtoXY(0, 100, 100, 255, \"rec2020\")
— Custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorRGBtoXY(0, 100, 100, 255, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")
— Custom gamut with both custom primaries and custom whitepoint is specified: —
C4:ColorRGBtoXY(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\"
ColorXYtoCCT
This function converts from a CIE-1931 xy chromaticity to a CCT (color temperature in Kelvin) color.
This function was released in conjunction with O.S. 3.3.0.
Signature
C4:ColorXYtoCCT (x, y)
Parameters
Parameter | Description |
---|---|
num | Number representing the x component of a CIE-1931 xy chromaticity. |
num | Number representing the y component of a CIE-1931 xy chromaticity. |
Returns
Parameter | Description |
---|---|
num | Number representing the CIE-1931 xy chromaticity as a Kelvin temperature. |
Usage Note
This function will return a color temperature for any value provided. This includes color values that fall outside of the usual white/CCT colors.
ColorXYtoHSV
This function converts a CIE-1931 xy chromaticity to the HSV color space. Note, there's no need for a driver developer to specify whitepoint and primaries if usinh srgb or rec2020 for the gamut parameter as described below.
This function was released in conjunction with O.S. 3.3.0.
Signature
C4:ColorXYtoHSV (x, y, gamut)
Parameters
Parameter | Description |
---|---|
num | Number representing the x component of a CIE-1931 xy chromaticity. |
num | Number representing the y component of a CIE-1931 xy chromaticity. |
str | (Optional) Gamut used for conversion. Valid options are: "srgb" where the srgb primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. "rec2020" where where the rec2020 primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. “custom” where primaries and whitepoint values can be specified. |
Returns
Parameter | Description |
---|---|
num | Number representing the hue component of HSV. |
num | Number representing the saturation component of HSV. |
num | Number representing the value component of HSV. |
Examples
—Using three rgb params:—
C4:ColorXYtoHSV(0, 100, 100)
—Since no scale param is supported, the default of "255" is used for the scale value param.—
— Using srgb primaries and whitepoint: —
C4:ColorXYtoHSV(0, 100, 100, \"srgb\")
—Since no scale param is supported, the default of "255" is used for the scale value param.—
— Using rec2020 primaries and whitepoint: —
C4:ColorXYtoHSV(0, 100, 100, \"rec2020\")
—Since no scale param is supported, the default of "255" is used for the scale value param.—
— Using custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorXYtoHSV(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")
—Using custom gamut with both custom primaries and custom whitepoint is specified:—
C4:ColorXYtoHSV(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\")
—Using Rob params but specifying a custom rgb scale. Scale is 0.0 to 1.0 where 1.0 is full brightness: —
C4:ColorXYtoHSV(0, 100, 100, 1)
— Scale is 0.0 to 100 where 100 is full brightness: —
C4:ColorXYtoHSV(0, 100, 100, 100)
— Scale is 0.0 to 255 where 255 is full brightness: —
C4:ColorXYtoHSV(0, 100, 100, 255)
— Using srgb primaries & whitepoint: —
C4:ColorXYtoHSV(0, 100, 100, 255, \"srgb\")
— Using rec2020 primaries/whitepoint: —
C4:ColorXYtoHSV(0, 100, 100, 255, \"rec2020\")
— Custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorXYtoHSV(0, 100, 100, 255, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")
— Custom gamut with both custom primaries and custom whitepoint is specified: —
C4:ColorXYtoHSV(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\"
ColorXYtoRGB
This function converts a CIE-1931 xy chromaticity to the RGB color space. Note, there's no need for a driver developer to specify whitepoint and primaries if usinh srgb or rec2020 for the gamut parameter as described below.
This function was released in conjunction with O.S. 3.3.0.
Signature
C4:ColorXYtoRGB (x, y, rgbScale, gamut)
Parameters
Parameter | Description |
---|---|
num | Number representing the x component of a CIE-1931 xy chromaticity. |
num | Number representing the x component of a CIE-1931 xy chromaticity. |
num | (Optional) Number representing RGB scale (1 to 255). The default value is 255. |
str | (Optional) Gamut used for conversion. Valid options are: "srgb" where the srgb primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. "rec2020" where where the rec2020 primaries and whitepoint values are automatically used without requiring the primaries and whitepoint parameters being set. “custom” where primaries and whitepoint values can be specified. |
Returns
Parameter | Description |
---|---|
num | Number representing the red component of RGB in given scale. |
num | Number representing the green component of RGB in given scale. |
num | Number representing the blue component of RGB in given scale. |
Examples
—Using three rgb params:—
C4:ColorXYtoRGB(0, 100, 100)
—Since no scale param is specified the default of "255" is used for the scale value param.—
— Using srgb primaries and whitepoint: —
C4:ColorXYtoRGB(0, 100, 100, \"srgb\")
—Since no scale param is specified the default of "255" is used for the scale value param.—
— Using rec2020 primaries and whitepoint: —
C4:ColorXYtoRGB(0, 100, 100, \"rec2020\")
—Since no scale param is specified the default of "255" is used for the scale value param.—
— Using custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorXYtoRGB(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")
—Using custom gamut with both custom primaries and custom whitepoint is specified:—
C4:ColorXYtoRGB(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\")
—Using Rob params but specifying a custom rgb scale. Scale is 0.0 to 1.0 where 1.0 is full brightness: —
C4:ColorXYtoRGB(0, 100, 100, 1)
— Scale is 0.0 to 100 where 100 is full brightness: —
C4:ColorXYtoHSV(0, 100, 100, 100)
— Scale is 0.0 to 255 where 255 is full brightness: —
C4:ColorXYtoRGB(0, 100, 100, 255)
— Using srgb primaries & whitepoint: —
C4:ColorXYtoRGB(0, 100, 100, 255, \"srgb\")
— Using rec2020 primaries/whitepoint: —
C4:ColorXYtoRGB(0, 100, 100, 255, \"rec2020\")
— Custom gamut where custom primaries and the 'default' d65 whitepoint is used: —
C4:ColorXYtoRGB(0, 100, 100, 255, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\")
— Custom gamut with both custom primaries and custom whitepoint is specified: —
C4:ColorXYtoRGB(0, 100, 100, \"custom\", \"0.7,0.25,0.25,0.75,0.1,0.5\", \"0.31271, 0.32902\"
Light V2 Conditionals
The following Conditionals are used for Composer Programming to perform logic comparisons of Variables. This functionality is managed by the Proxy and Director.
IS_BRIGHTNESS
Double. Percent check of the current brightness.
IS_BRIGHTNESS_TARGET
Double. Percent check of the target brightness.
IS_COLOR
Boolean. If the color of the light matches the color.
IS_COLOR_TARGET
Boolean. If the color of the light does not match the color.
IS_ON
Boolean. If the light is on at any level.
IS_OFF
Boolean. If the light is at the "Off" preset.
BTN_PRESSED
Boolean. If the button is currently being pressed.
BTN_RELEASED
Boolean. If the button is not currently being pressed.
BTN_COLOR
Boolean. If the buttons led color matches a hex string.
BTN_NOT_COLOR
Boolean. If the buttons led color does not match a hex string.
Light V2 Commands
This section lists the Commands (Bound Call, aka SendToDevice in Lua) that the Light V2 proxy supports. These are for use by Navigators, Composer Programming and other services like Voice Control. The thing to remember with proxies is that many of the commands are passed on to the protocol, and it is the protocol drivers responsibility to ripple the commands result back up to the proxy using a 'Notify' command. This allows the protocol to optionally make slight adjustments to commands for its unique driver or hardware, and then inform the proxy of the change.
BUTTON_ACTION
Used to perform a button action on the device via BUTTON_LINK bindings. This is useful if you want to do user dependent hold/release functionality in a driver or hardware. Proxy will create and maintain the consumer binding connections for TOP, BOTTOM and TOGGLE lightV2 buttons and their BUTTON_LINK bindings. When the proxy gets a BUTTON_ACTION command over one of the three binding connections, it will forward the command to the driver. The driver needs to send a BUTTON_ACTION Notify back to the proxy with the same BUTTON_ID and ACTION params and values so the proxy knows the command was successful and that the driver or hardware is tracking that the button is currently in a Pressed state. _
If a driver does not do send the Notify that a button is Pressed to the proxy, an additional (second) Press command will be auto-generated by the proxy and sent to the driver if the proxy receives a Click and has not been notified that the drivers button is in a Pressed state.
Name
BUTTON_ACTION ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | NUM | ID for the button: |
0 - Top | ||
1 - Bottom | ||
2 - Toggle | ||
ACTION | NUM | ACTION : |
0 - RELEASE (HOLD) | ||
1 - PRESS | ||
2 - RELEASE (CLICK) |
Returns
None
DYNAMIC_OFF
Support UIs with an off command to match up with the DYNAMIC_ON Beginning with O.S. 3.3.2, Navigators now execute DYNAMIC ON when a light is turned on/off. If a driver does not support Dynamic On, the On brightness preset will be executed, as in O.S 3.3.1 and prior releases.
Name
DYNAMIC_OFF ()
Parameters
None
Returns
None
DYNAMIC_ON
This command allows UI's and programming to "turn on" a light involving both brightness and color in a single command. Beginning with O.S. 3.3.2, Navigators now execute DYNAMIC ON when a light is turned on/off. If a driver does not support Dynamic On, the On brightness preset will be executed, as in O.S 3.3.1 and prior releases.
Name
DYNAMIC_ON ()
Parameters
None
Returns
None
DELETE_DRIVER_ COLOR_ PRESET
Used to remove a driver configured color preset. The PRESET_ID must be a valid preset, or the request will fail and return an error.
Name
DELETE_DRIVER_COLOR_PRESET ()
Parameter | Type | Description |
---|---|---|
PRESET ID | NUM | Set to the ID of the preset to be removed. |
Returns
On return, "deleteResult" will contain an XML string that indicates a success or failure state. If the XML indicates failure, a failure message will be included.
Sample success message:
<return_data><success>true</success></return_data>
Sample failure message:
<return_data><success>false</success><reason>Not found</reason></return_data>
Example
The example code to the right will remove a Preset with an ID of 3.
local deleteResult = C4:SendUIRequest(proxyDeviceId, "DELETE_DRIVER_COLOR_PRESET", { PRESET_ID = 3 } )
SET_BRIGHTNESS_TARGET
Used to set the target brightness of where the light is being requested to go. Parameters are determined by the enabling/disabling of the supports_target capability. See below for more information.
Name
SET_BRIGHTNESS_TARGET ()
If the supports_target capability is enabled or color is used:
Parameter | Type | Description |
---|---|---|
LIGHT BRIGHTNESS TARGET | FLOAT | Value as defined from drivers Min and Max brightness capabilities as set by the driver. If the brightness resolution capability is set to 10, .5, .01, and so on, the proxy will ensure the value sent to the driver meets the resolution/step capability. If no resolution is set, the value of 1 is used for stepping. |
RATE | UINT | Milliseconds for the ramp duration. This is guaranteed to be between the Min and Max rate if the driver sets these. |
Note: If a driver supports On Modes, it should track the following parameters: LIGHT_BRIGHTNESS_TARGET_PRESET_ID - The ID of the preset to trigger.
If the supports_target capability is disabled in instances such as pre- O.S. 3.3.0 for backward compatibility of older drivers:
Parameter | Type | Description |
---|---|---|
LEVEL | INT | LEVEL : from 0-100. |
LEVEL | INT | TIME: Milliseconds for the ramp. |
Returns
None
SET_COLD_START_LEVEL
Used to set the cold start level for the device for drivers that support hardware based Cold Start behavior.
Name
SET_COLD_START_LEVEL ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | LEVEL: 0 - 100 |
Returns
None
SET_COLD_START_TIME
Used to set the cold start level for the device for drivers that support hardware based Cold Start behavior.
Name
SET_COLD_START_TIME ()
Parameter | Type | Description |
---|---|---|
TIME | INT | TIME in milliseconds |
Returns
None
SET_MAX_ON_LEVEL
Used to set the maximum on level for the device
Name
SET_MIN_ON_LEVEL ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | LEVEL: 0 - 100 |
Returns
None
SET_MIN_ON_LEVEL
Used to set the minimum on level for the device
Name
SET_MIN_ON_LEVEL ()
Parameter | Description | Description |
---|---|---|
LEVEL | INT | LEVEL: 0 - 100 |
Returns
None
SET_PRESET_LEVEL
Used to set brightness of the "On" Preset that is used when a user clicks the Top button of a light.
Name
SET_PRESET_LEVEL ()
Parameter | Type | Description |
---|---|---|
LEVEL | LINT | LEVEL: 0 - 100 |
Returns
None
TOGGLE
Used to toggle the light. If it is a dimmer and it is off, toggling will activate the "On" preset. Should only be used in Composer Programming when the current brightness of the light does not matter nor does the brightness level it will go to matter as delays of brightness reporting to the proxy or network issues will result in unreliable final brightness. If final brightness is important, then the On or Off presets should be specifically referenced in the SET_BRIGHTNESS_TARGET command.
Name
TOGGLE ()
Parameter
None
Returns
None
SET_CLICK_RATE_DOWN
Used to set the click rate down for the device.
Name
SET_CLICK_RATE_DOWN ()
Parameter | Type | Description |
---|---|---|
RATE | INT | RATE in milliseconds |
Returns
None
SET_CLICK_RATE_UP
Used to set the click rate up for the device.
Name
SET_CLICK_RATE_UP ()
Parameter | Type | Description |
---|---|---|
RATE | INT | RATE in milliseconds |
Returns
None
SET_COLOR_ON_MODE
Sets the on mode color.
Name
SET_COLOR_ON_MODE ()
Parameter | Type | Description |
---|---|---|
PRESET ID | INT | PRESET ID that a light should turn on to. |
Returns
None
SET_COLOR_STOP
Stops a ramp of color if in progress. Requires the capability supports_color_stop.
Name
SET_COLOR_STOP ()
Parameters
None
Returns
None
SET_COLOR_RATE_DEFAULT
This is used by old(deprecated) generic On/Off commands, Navigators, and user created lighting scenes.
When this value is changed, drivers will receive a protocol driver command of UPDATE_COLOR_RATE_DEFAULT with a parameter RATE of the value.
Name
SET_COLOR_RATE_DEFAULT ()
Parameter | Type | Description |
---|---|---|
LIGHT COLOR RATE DEFAULT. | INT | Default rate that will be used if no rate is specified. |
Returns
None
SET_COLOR_STOP
Used to tell a driver to stop changing its color.
Name
SET_COLOR_STOP ()
Parameters
None
Returns
None
SET_COLOR_TARGET
Sent to drivers to change the light color. Once drivers begin to change color, they should send a LIGHT_COLOR_CHANGING Notify. Once the color has finished changing it should send a LIGHT_COLOR_CHANGED Notify. Parameters are determined by the implementation On Mode functionality. See below for more information.
Name
SET_COLOR_TARGET()
If a driver implements On Mode functionality:
Parameter | Type | Description |
---|---|---|
LIGHT COLOR TARGET PRESET ID | INT | The ID of the preset to trigger. This must be sent with the LIGHT COLOR TARGET PRESET ORIGIN parameter. |
LIGHT\COLOR TARGET RESET ORIGIN | NUM | The origin of the preset to trigger. 1 = Device specific preset. 2 = Color Agent preset. |
Returns
None
SET_HOLD_RATE_UP
Used to set the hold rate up for the device.
Name
SET_HOLD_RATE_UP ()
Parameter | Type | Description |
---|---|---|
RATE | INT | RATE in milliseconds |
Returns
None
SET_HOLD_RATE_DOWN
Used to set the hold rate down for the device.
Name
SET_HOLD_RATE_DOWN ()
Parameter | Type | Description |
---|---|---|
RATE | INT | RATE in milliseconds |
Returns
None
SET_BUTTON_COLOR
Used to set the color for a particular button for when the light is on/off
Name
SET_BUTTON_COLOR ()
Parameter | Type | Description |
---|---|---|
Number | NUM | BUTTON ID |
ON COLOR | hex STR | Optional. 6 character hex string, representing an RGB value. |
OFF COLOR | hex STR | Optional. 6 character hex string, representing an RGB value. |
Returns
None
SET_ALL_LED
Used to set the LED color of all the buttons on the device to one color (both on/off colors).
Name
SET_ALL_LED ()
Parameter | Type | Description |
---|---|---|
COLOR | hex STR | COLOR: 6 character hex string, representing an RGB value. |
Returns
None
JOIN_GROUP
Received when the driver is added to a Load Group.
Name
JOIN_GROUP ()
Parameter | Type | Description |
---|---|---|
GROUP ID | STR | Device ID of the Load Group driver |
KEEP SYNC | STR | 1 for True and 0 for False |
Returns
None
LEAVE_GROUP
Received when Load Group driver pop the light driver from the group.
Name
LEAVE_GROUP
Parameter | Type | Description |
---|---|---|
GROUP ID | STR | GROUP ID Driver ID of the Load Group |
Returns
None
MODIFY_DRIVER_COLOR_PRESET
Used to modify an existing driver specific color preset. The PRESET_ID is required, and other parameters may be required depending on what you are using the call for. The guidelines for which parameters are required are defined below in the parameter section.
Name
MODIFY_DRIVER_COLOR_PRESET ()
Parameter Guidelines
If the preset name is being changed, the PRESET_NAME parameter is required, otherwise it is optional. When the preset name is the only thing being changed, no color information is required.
If the color is being set using hue and saturation, the PRESET_COLOR_HUE, PRESET_COLOR_SATURATION, and PRESET_COLOR_MODE are all required.
If the color is being set using XY, the PRESET_COLOR_X, PRESET_COLOR_Y, and PRESET_COLOR_MODE are all required.
If the color temperature is being set, only the PRESET_COLOR_CORRELATED_TEMPERATURE is required.
Parameter | Description |
---|---|
PRESET ID | The ID of the existing preset that will be modified. |
PRESET NAME | Optional. The name to give to the preset that is being modified. |
PRESET COLOR CORRELATED TEMPERATURE | Optional. The color temperature, in Kelvin, that the preset should be set to. If this parameter is used, the PRESET COLOR MODE will be set to 1 (CCT), and the PRESET COLOR MODE parameter does not need to be set. |
Color Set 1 | Requires 2+ parameters. PRESET COLOR X - The color x coordinate to be used in this preset. PRESET COLOR Y - The color y coordinate to be used in this preset. PRESET COLOR MODE - Optional. The color mode used by this preset. 0 = Full Color, 1 = CCT. Previous color mode is preserved if this parameter is not specified. |
Color Set 2 | Requires 2 parameters. This method is highly discouraged as it is confined to the sRGB gamut and thus can't achieve many colors that typical color lights support. PRESET COLOR HUE - The hue to use for this preset. Range of 0 through 359 degrees. PRESET COLOR SATURATION - The saturation to use for this preset. Range of 0 to 100. Either hue and saturation or XY must be used. |
Returns
On return, the "modifyResult" value will contain an XML string that indicates if the modification was successful, or not. If the XML indicates failure, a failure message will be included.
Sample success message:
<return_data><success>true</success></return_data>
Sample failure message:
<return_data><success>false</success><reason>Not found</reason></return_data>
Example
The example code to the right will modify a Color Preset with an ID of 3.
local tParams = {PRESET_ID=3, PRESET_NAME="Modified Driver Color Preset", PRESET_COLOR_X=0.1550, PRESET_COLOR_Y=0.0822, PRESET_COLOR_MODE=0}
local modifyResult = C4:SendUIRequest(proxyDeviceId, "MODIFY_DRIVER_COLOR_PRESET", tParams)
SET_GROUP_SYNC
Received when Keep loads in sync property is changed. In case of checking the Keep loads in sync, GROUP_SET_LEVEL
will be sent right before SET_GROUP_SYNC
.
Name
Parameter | Type | Description |
---|---|---|
GROUP ID | STR | Driver ID of the Load Group driver |
KEEP SYNC | STR | 0 for False and 1 for True |
Received
None
GET_SETUP
Command used to get the configuration of the device. It immediately returns a block of XML information to the caller. GET_SETUP is usually called just once by a UI entity to know how to setup the UI. This would report all capabilities that are in a driver as well as other proxy information including how many settings the device has and what the name of those settings are.
Name
GET_SETUP ()
Parameters
None
Returns
See example
Example
Example of current XML with color support enabled:
<?xml version="1.0" encoding="UTF-8"?>
<setup>
<ONLINE_CHANGED>True</ONLINE_CHANGED>
<MIN_ON_LEVEL>1</MIN_ON_LEVEL>
<MAX_ON_LEVEL>100</MAX_ON_LEVEL>
<COLD_START_LEVEL>1</COLD_START_LEVEL>
<COLD_START_TIME>0</COLD_START_TIME>
<CLICK_RATE_MIN>250</CLICK_RATE_MIN>
<CLICK_RATE_MAX>86400000</CLICK_RATE_MAX>
<HOLD_RATE_MIN>1000</HOLD_RATE_MIN>
<HOLD_RATE_MAX>86400000</HOLD_RATE_MAX>
<NUMBER_BUTTONS>3</NUMBER_BUTTONS>
<BUTTON_LIST_INFO>
<BUTTON_INFO>
<NAME>Top</NAME>
<BUTTON_ID>0</BUTTON_ID>
<ON_COLOR>0000ff</ON_COLOR>
<OFF_COLOR>000000</OFF_COLOR>
</BUTTON_INFO>
<BUTTON_INFO>
<NAME>Bottom</NAME>
<BUTTON_ID>1</BUTTON_ID>
<ON_COLOR>000000</ON_COLOR>
<OFF_COLOR>0000ff</OFF_COLOR>
</BUTTON_INFO>
<BUTTON_INFO>
<NAME>Toggle</NAME>
<BUTTON_ID>2</BUTTON_ID>
<ON_COLOR>0000ff</ON_COLOR>
<OFF_COLOR>000000</OFF_COLOR>
</BUTTON_INFO>
</BUTTON_LIST_INFO>
<supports_target>True</supports_target>
<has_extras>True</has_extras>
<brightnesses minimum="0" maximum="100" resolution="1" unknown="-1">
<level name="Off" level_setable="true" rate_setable="true" level="0" levelType="2" buttonLinkBindingId="0" activeColor="0000ff" inactiveColor="000000" activeText="Off Active" inactiveText="Off Not Active"/>
<level name="On" level_setable="true" rate_setable="true" level="100" levelType="2" buttonLinkBindingId="0" activeColor="0000ff" inactiveColor="000000" activeText="On Active" inactiveText="On Not Active"/>
</brightnesses>
<supports_color>True</supports_color>
<supports_color_correlated_temperature>False</supports_color_correlated_temperature>
<colors color_correlated_temperature_min="500" color_correlated_temperature_max="20000">
<color name="Energize" category="2" editable="0,1" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
<color name="Relax" category="2" editable="0,1" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
<color name="Read" category="2" editable="" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
<color name="Sunset" category="2" editable="" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
<color name="Nightlight" category="2" editable="" color_x="0" color_y="0" color_mode="1" color_correlated_temperature="0" />
<color name="Red" category="2" editable="" color_x="0.640074" color_y="0.329971" color_mode="0" color_correlated_temperature="0" />
<color name="Green" category="2" editable="" color_x="0.3" color_y="0.6" color_mode="0" color_correlated_temperature="0" />
<color name="Blue" category="2" editable="" color_x="0.150017" color_y="0.0600066" color_mode="0" color_correlated_temperature="0" />
<color name="Yellow" category="2" editable="" color_x="0.419321" color_y="0.505255" color_mode="0" color_correlated_temperature="0" />
<color name="Orange" category="2" editable="" color_x="0.543608" color_y="0.406568" color_mode="0" color_correlated_temperature="0" />
<color name="Off" category="1" editable="" color_x="0.313525" color_y="0.323627" color_mode="1" color_correlated_temperature="6500" buttonLinkBindingId="0" activeColor="0000ff" inactiveColor="000000" activeText="Off" inactiveText="Not Off"/>
<color name="On" category="1" editable="" color_x="0.313525" color_y="0.323627" color_mode="1" color_correlated_temperature="6500" buttonLinkBindingId="0" activeColor="0000ff" inactiveColor="000000" activeText="On" inactiveText="Not On"/>
</colors>
</setup>
GROUP_RAMP_TO_LEVEL
Received when group is ramping to level.
Name
GROUP_RAMP_TO_LEVEL ()
Parameter | Type | Description |
---|---|---|
GROUP ID | STR | Driver ID of the Load Group |
LEVEL | STR | Level to ramp |
TIME | STR | Time rate for ramping |
Returns
None
SET_GROUP_LEVEL
Received when group is setting light level.
Name
GROUP_SET_LEVEL ()
Parameter | Type | Description |
---|---|---|
GROUP ID | STR | Driver ID of the Load Group |
LEVEL | STR | Light level to be set on the Light driver |
None
GROUP_START_RAMP
Received when group start hold ramp operation.
Name
GROUP_START_RAMP ()
Parameter | Type | Description |
---|---|---|
GROUP ID | STR | GROUP ID Driver ID of the Load Group |
RAMP UP | STR | RAMP UP Value 1 |
RATE | STR | Rate time in ms |
Returns
None
GROUP_STOP_RAMP
Received when group stop hold ramp.
Name
GROUP_STOP_RAMP ()
Parameter | Type | Description |
---|---|---|
GROUP ID | STR | Driver ID of the Load Group |
Returns
None
UPDATE_BRIGHTNESS_ON_MODE
Drivers that set either brightness_on_mode_preset or brightness_on_mode_previous capabilities to true need to handle this command to know how the light should turn on. The proxy will handle Brightness related commands that go through it, but On behaviors that include BUTTON_LINK and other driver commands handled only in the driver should honor the On Mode.
Name
UPDATE_BRIGHTNESS_ON_MODE ()
Parameter | Type | Description |
---|---|---|
BRIGHTNESS PRESET ID | INT | Integer. Brightness preset ID that is to be used when the light turns on. |
BRIGHTNESS PRESET LEVEL | DOUBLE | Double. Brightness Preset Level, this is provided as a convenience only as this value is provided for the preset in other proper calls. |
Returns
None
UPDATE_BRIGHTNESS_RATE_DEFAULT
This is used by old(deprecated) generic On/Off commands, Navigators, and user created lighting scenes.
Name
UPDATE_BRIGHTNESS_RATE_DEFAULT ()
Parameter | Type | Description |
---|---|---|
RATE | INT | Milliseconds for the default rate that is used when a rate of change is not provided. |
Returns
None
UPDATE_BRIGHTNESS_PRESET
The proxy will send a command to the driver when a Preset is changed. Drivers can ignore this command, or could react based on the data provided.
Some options for reacting to the command would be to update keypad load control firmware to turn a light On to the level that the light was turned off from.
Another reaction could be to adjust what light level the light will turn on to, such as interacting with the Daylight Agent.
Name
UPDATE_BRIGHTNESS_PRESET ()
Parameter | Type | Description |
---|---|---|
COMMAND | STR | String. This will be one of the following strings: |
ADDED, MODIFIED, REMOVED. | ||
ID | NUM | Preset ID |
NAME | STR | Name of the preset. |
LEVEL | DOUBLE | Level for the preset. |
Returns
None
UPDATE_COLOR_ON_MODE
Drivers that set either color_on_mode_preset, color_on_mode_previous, or color_on_mode_fade capabilities to true need to handle this command to know how the light should turn on. The proxy will handle Color related commands that go through it, but On behaviors that include BUTTON_LINK and other driver commands handled only in the driver should honor the On Mode.
For drivers that support Color Fade on mode, Dynamic On and some other commands will NOT send a SET_COLOR_TARGET. Drivers that are currently in the Color Fade on mode must adjust the color based on the brightness level when only brightness is sent. For more information see the Color Fade On Mode capability documentation.
Name
UPDATE_COLOR_ON_MODE ()
Parameter | Type | Description |
---|---|---|
COLOR PRESET ID | INT | Color preset ID that is to be used when the light turns on. |
COLOR PRESET ORIGIN | INT | Color preset Origin that is to be used when the light turns on. 1 = Device Specific, 2 = Color Agent, 0 = Color fade not enabled. |
COLOR\PRESET COLOR X | DOUBLE | This value is provided as a convenience and is redundant to other ways of getting the color information of the Color Preset. |
COLOR PRESET COLOR Y | DOUBLE | This value is provided as a convenience and is redundant to other ways of getting the color information of the Color Preset. |
COLOR PRESET COLOR MODE | This value is provided as a convenience and is redundant to other ways of getting the color information of the Color Preset. | |
COLOR FADE PRESET ID | INT | Color preset ID that is to be used when the light turns on. |
COLOR FADE PRESET ORIGIN | INT | Color preset Origin that is to be used when the light turns on. 0 = Device Specific, 1 = Color Agent. |
COLOR FADE PRESET COLOR X | DOUBLE | This value is provided as a convenience only and is secondary to other ways of getting the color information of the Fade Color Preset. |
COLOR FADE PRESET COLOR Y | DOUBLE | DThis value is provided as a convenience only and is secondary to other ways of getting the color information of the Fade Color Preset. |
COLOR FADE PRESET COLOR MODE | This value is provided as a convenience only and is secondary to other ways of getting the color information of the Fade Color Preset. |
Returns
None
UPDATE_COLOR_RATE_DEFAULT
This is used by old(deprecated) generic On/Off commands, Navigators, and user created lighting scenes.
Name
UPDATE_COLOR_RATE_DEFAULT ()
Parameter | Type | Description |
---|---|---|
RATE | INT | Milliseconds for the default rate that is used when a rate of change is not provided. |
Returns
None
UPDATE_BRIGHTNESS_PRESET
The proxy will send a command to the driver when a Preset is changed. Drivers can ignore this command, or could react based on the data provided.
Some options for reacting to the command would be to update keypad load control firmware to turn a light On to the level that the light was turned off from. Another reaction could be to adjust what light level the light will turn on to, such as interacting with the Daylight Agent
Name
UPDATE_BRIGHTNESS_PRESET ()
Parameter | Type | Description |
---|---|---|
COMMAND | STR | COMMAND: This will be one of the following strings: ADDED MODIFIED REMOVED. |
PRESET ID | NUM | Preset ID |
NAME | STR | NAME: Name of the preset |
LEVEL | DOUBLE | LEVEL: Level for the preset |
Returns
None
UPDATE_COLOR_PRESET
Having a mandatory On color preset for all colored lights, this provides dealers a way of configuring various brands and models of lights in a manner that a customer can have a consistent 'default on' color behavior for the lights in their homes. Without this feature, it's almost certain that different brands and models of lights would turn on to different colors or color temperatures.
In addition to the On color preset, having a mandatory Dim color preset for all colored lights provides dealers a way of configuring various brands and models of lights in a way that a customer can have a consistent 'warm dim' color behavior for the lights in their homes.
The 'On' color preset is the color that a light should generate at it's 'Default On Brightness' level.
The 'Dim' color preset is the color that a light should generate at 1% brightness.
For example, lets assume a lights Default On Brightness is set to 80%, the On preset color is 4000CCT, and the Dim preset color is 2000CCT. If the light was then set to a brightness level of 40%, the lights color would be 3000CCT. Also, if the lights brightness is set to 80% or higher, the color would always be 4000CCT.
This formula would be used when a light is turned on (from off level) via a SET_BRIGHTNESS_TARGET and if no SET_COLOR_TARGET is additionally used. Any further time that SET_BRIGHTNESS_TARGET is used, the driver should use the formula to calculate the new color and also set that color when the brightness is changed via SET_BRIGHTNESS_TARGET.
If a SET_COLOR_TARGET command is used, after the light has been turned on, then the formula for warm-dim functionality should no longer occur, and the color should not be auto-adjusted until the light is turned off and back on again.
When all drivers follow this formula, there will be consistent On and Warm Dim lighting experiences for customers.
Beginning with 3.3.0, the LightV2 proxy 'Dim' and 'On' color presets can be changed in Composer and Navigator. Composer currently has a checkbox to 'enable' the Dim color. Although this checkbox is not an 'enable dim color' feature, it is a 'hide the dim color preset in Composer' feature.
The intention of this checkbox was to help reduce dealer confusion, but it added potential driver developer confusion. Upon 'disabling' the Dim color, Composer is just setting the Dim preset color to the On preset color. The LightV2 proxy always has an On and Dim preset defined, regardless of the checkbox in Composer being checked or unchecked. If Drivers want to know if this checkbox is 'checked' there isn't a 100% safe way to know. However, drivers could consider it potentially checked if the Dim and On preset colors are not the same color
Name
UPDATE_COLOR_PRESET ()
Parameter | Type | Description |
---|---|---|
COMMAND | STR | This will be one of the following strings: |
ADDED, MODIFIED, REMOVED. | ||
ID | NUM | Preset ID. |
NAME | STR | Name of the preset. |
COLOR X | DOUBLE | CIE 1931 Chromaticity Color. |
COLOR Y | DOUBLE | CIE 1931 Chromaticity Color. |
COLOR MODE | UInt | Color Mode (0 Full Color, 1 CCT) |
Returns
None
SET_BRIGHTNESS_ON_MODE
Older drivers that used "Default On" a.k.a: “PRESET_LEVEL" will notice that the "On" preset holds this value.
Name
SET_BRIGHTNESS_ON_MODE ()
Parameter | Type | Description |
---|---|---|
PRESET ID | INT | Preset ID that a light should turn on to. |
Returns
None
SET_BRIGHTNESS_RATE_DEFAULT
This is used by old(deprecated) generic On/Off commands, Navigators, and user created lighting scenes.
When this value is changed, drivers will receive a protocol driver command of UPDATE_BRIGHTNESS_RATE_DEFAULT with a parameter RATE of the value.
Note: If a driver has its color rate behavior set to be linked to the brightness rate, then this call will also update the color rate.
Name
SET_BRIGHTNESS_RATE_DEFAULT ()
Parameter | Type | Description |
---|---|---|
LIGHT BRIGHTNESS RATE DEFAULT | INT | Default rate that will be used if no rate is specified. |
Returns
None
SET_BRIGHTNESS_STOP
Stops a ramp if in progress.
Name
SET_BRIGHTNESS_STOP ()
Parameters
None
Returns
None
SET_CLICK_RATE_UP
Used to set the click rate up for the device. When a driver gets this command, it MUST send a CLICK_RATE_UP notification with the value that the driver accepted.
Name
SET_CLICK_RATE_UP()
Parameter | Type | Description |
---|---|---|
RATE | INT | In milliseconds |
Returns
None
SET_CLICK_RATE_DOWN
Used to set the click rate down for the device. When a driver gets this command, it MUST send a CLICK_RATE_DOWN notification with the value that the driver accepted.
Name
SET_CLICK_RATE_DOWN()
Parameter | Type | Description |
---|---|---|
RATE | INT | In milliseconds |
Returns
None
ADD_DRIVER_COLOR_PRESET
Used to add a new driver specific color preset. The PRESET_NAME is always required. The remainder of the parameters are required or optional depending on how the color is specified:
If the color is being set using hue and saturation, the PRESET_COLOR_HUE, PRESET_COLOR_SATURATION, and PRESET_COLOR_MODE are all required.
If the color is being set using xy, the PRESET_COLOR_X, PRESET_COLOR_Y, and PRESET_COLOR_MODE are all required.
If the color temperature is being set, only the PRESET_COLOR_CORRELATED_TEMPERATURE is required.
If the appropriate values are not set, an error will be returned.
Name
ADD_DRIVER_COLOR_PRESET ()
Parameter | Description |
---|---|
PRESET\\\_NAME | The name to give to the preset that is being added. |
One of the following three Color Sets are also required | |
Color Set 1 | PRESET COLOR CORRELATED TEMPERATURE - The color correlated temperature that the preset should be set to. |
Color Set 2 | PRESET COLOR X - The color chromaticity x coordinate to be used in this preset. PRESET COLOR Y - The color chromaticity y coordinate to be used in this preset. Optional: PRESET COLOR MODE - The color mode used by this preset. 0 = Full Color, 1 = CCT. If this parameter is not provided, Full Color is assumed, unless the light only supports CCT, then CCT is assumed. |
Color Set 3 | This method is highly discouraged as it is confined to the rRGB gamut and thus can't achieve many colors that typical color lights support. |
PRESET\\\_COLOR\\\_HUE | The hue to use for this preset. Range of 0 through 359 degrees. PRESET COLOR SATURATION - The saturation to use for this preset. Range of 0 to 100. |
Returns
On return, the "addResult" variable will contain an XML string that indicates success or failure. If the string indicates success, the ID for the newly created preset will also be included. If the string indicates failure, a reason may be provided for the failure.
Sample success message:
<success>true</success><presetId>3</presetId></return_data>
Sample failure message:
<return_data><success>false</success><reason>Invalid parameters</reason></return_data>
Example
The example code to the right adds a preset named "Driver Color Preset"
local tParams = {PRESET_NAME="Driver Color Preset", PRESET_COLOR_X=0.1500, PRESET_COLOR_Y=0.0722, PRESET_COLOR_MODE=1}
local addResult = C4:SendUIRequest(proxyDeviceId, "ADD_DRIVER_COLOR_PRESET", tParams)
C4 TYPE MANAGER
Used to add, remove, or modity the Presets for a c4Type. Each C4Type must have a unique Name. c4Types handle saving and restorng all information associated to them, including restoring bindings and preset information
C4Types are expanding and currently offer:
- LEVEL - Brightness, shades, volume.
- COLOR - CIE1931 xy.
- MODE
- BATTERY
- NUMBER
- STRING
- DEVICE_HEALTH
Name
C4TYPE_COMMAND ()
Parameter | Description |
---|---|
string | C4TYPE NAME. Unique "Name" for the C4Type that will be operated on. |
string | ACTION. Command to run on the C4Type. This includes: |
C4TYPE REGISTER - Registers a new C4Type. | |
TYPE - The Type of C4Type. | |
C4TYPE UNREGISTER - Removes an existing C4Type. | |
PRESET ADD. See usage note below. | |
PRESET REMOVE. See usage note below. | |
PRESET MODIFY. See usage note below. | |
PRESET BINDING MODIFY. See usage note below. |
Returns
None
Usage Note
Additional parameters are required if the ACTION value used is PRESET.
Parameter | Type | Description |
---|---|---|
PRESET ID | STR | String - ID of the Preset. |
PRESET ORIGIN | STR | String - Origin of the Preset. |
PRESET FUNCTION | The Preset operation to run PRESET ADD, PRESET MODIFY and PRESET REMOVE. | The Preset operation to run PRESET ADD, PRESET MODIFY and PRESET REMOVE. |
PRESET ADD | Add the Preset | Add the Preset |
Additionally, each c4Types above has different parameters that need to be specified.
PRESET_ADD
Parameter | Description |
---|---|
PRESET LEVEL | The value of the preset. |
PRESET TYPE | Optional.How the Preset is adjusted. |
PERCENT | Allows user to select 0-100. If not specified then the PRESET LEVEL is assumed to be a raw level value. |
PRESET_MODIFY
Parameter | Description |
---|---|
Level | PRESET LEVEL - The value of the preset |
PRESET_REMOVE - No parameters
PRESET_BINDING_MODIFY
Parameter | Description |
---|---|
PRESET BINDING ID | Integer ID of the binding for the driver you want to Add/Modify/Remove. Use 0 to remove the binding. |
PRESET ACTIVE COLOR | Color when the Preset is Active. |
PRESET INACTIVE COLOR | Color when the Preset is Inactive. |
Examples
In addition to "Brightness" for a NAME, "Color" can be used for lights that support color in the LightV2 proxy and "Blind Level" can be used for the Blind Proxy for blind Level presets. See the examples to the right.
-- Adding a Preset:
C4SendToProxy(5001,"C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness",
ACTION=PRESET_ADD,
PRESET_NAME="New Preset Name",
PRESET_ID="New Preset ID",
PRESET_TYPE="PERCENT", (Optional, raw value assumed otherwise)
PRESET_LEVEL="50"}
-- Modify Preset:
C4SendToProxy(5001,"C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness",
ACTION=PRESET_MODIFY,
PRESET_NAME="On",
PRESET_ID="New Preset ID",
PRESET_TYPE="PERCENT", (Optional, raw value assumed otherwise)
PRESET_LEVEL="50"}
--Delete Preset:
C4SendToProxy(5001,"C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness",
ACTION=PRESET_REMOVE,
PRESET_NAME="On"
PRESET_ID="New Preset ID",
}
--Add/Remove a binding for a Preset:
C4SendToProxy(5001, "C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness",
ACTION="PRESET_BINDING_MODIFY",
PRESET_BINDING_ID="100" (BindingID of a driver or proxy, or use -1 to remove the binding for this preset)
PRESET_BUTTON_ACTION="PUSH",
PRESET_ACTIVE_COLOR="0000ff",
PRESET_INACTIVE_COLOR="000000"}
--Activate a Preset:
C4SendToProxy(5001, "C4TYPE_COMMAND", tParams, "COMMAND")
tParams = {
C4TYPE_NAME="Brightness"
ACTION="PRESET_ACTIVATE",
PRESET_NAME="On"
PRESET_ID="New Preset ID",
}
Light V2 Events
The following are System Events that are provided and managed by the Proxy. These can be used for Composer Programming or other drivers to monitor the changes of a values reflected in a LightV2 proxy.
Light On
Light has turned On. Event ID = 5100.
Light Off
Light has turned Off. Event ID = 5101.
Light Brightness Changed
The brightness of the light has changed. Event ID = 4001.
Light Brightness Changing
The brightness of the light is changing. Event ID = 4000.
Light Color Changed
The color of the light has changed. Event ID = 4003
Light Color Changing
The color of the light is changing. Event ID = 4002
Old Light Level Changed
The light level of the light has changed and is at the final brightness. Event ID = 5000.
Keypad Events
An event is fired when something happens to one of the buttons on the device. The pattern for determining the Event ID is:
5001 + action + (btnID * 5).
The actions are:
- Release = 0
- Push = 1
- Single Click = 2
- Double Click = 3
- Triple Click = 4
The button IDs are determined by the protocol driver, but the standard ordering is:
- Top = 0
- Bottom = 1
- Toggle = 2
Light V2 Protocol Notifications
BUTTON_ACTION
Used to inform the proxy that a button state has changed on the device. Note that the Proxy expects a Release if it gets a Push. If it does not receive a Release, subsequent Pushes will not work and state/tracking will be off.
Name
BUTTON_ACTION ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | INT | BUTTON ID: Index of the button being controlled. |
ACTIO | INT | The Event Type which include: |
0 - Release | ||
1 - Push | ||
2 - Single Tap | ||
3 - Double Tap | ||
4 - Triple Tap |
Returns
None
BUTTON_INFO
Used to inform the proxy that a status of a button LED has changed. Color strings are in the format of 6 hex characters such as 000000, FFFFFF or 0000FF.
Name
BUTTON_INFO ()
Parameter | Type | Description |
---|---|---|
BUTTON ID | INT | Index of the button being controlled. |
NAME | STR | Optional. Update the name of the button. |
ON COLOR | STR | Optional. Hex string for the On color. |
OFF COLOR | STR | Optional. Hex string for the Off color. |
CURRENT COLOR | STR | Optional. Hex string for the Current color. |
Returns
None
CLICK_COUNT
Used to tell the proxy that a button has been clicked multiple times.
Name
CLICK_COUNT ()
Parameter | Type | Description |
---|---|---|
BUTTON\ID | INT | Index of the button being controlled. |
COUNT | INT | Number of clicks. |
Returns
None
CLICK_RATE_DOWN
Used to inform the proxy that the hardware click rate for the "Off" Brightness preset changed.
Name
CLICK_RATE_DOWN ()
Parameter | Type | Description |
---|---|---|
RATE | INT | Number of milliseconds it takes for the light to ramp from all the way on to all the way off. |
Returns
None
CLICK_RATE_UP
Used to inform the proxy that the hardware click rate for the "On" Brightness preset changed.
Name
CLICK_RATE_UP ()
Parameter | Type | Description |
---|---|---|
RATE: | INT | Number of milliseconds it takes for the light to ramp from all the way off to all the way on. |
Returns
None
COLD_START_LEVEL
Note that this notification will be deprecated from the proxy in the near future. Control4 recommends using device specific properties for this value.
Used to inform the proxy that the hardware Cold Start level has changed. This is useful for hardware such as Control4’s Gen3 lighting where the hardware supports temporarily setting the brightness to this level in order to 'jump start' the capacitors/ballasts on LED and florescent lights. This value changes over time as capacitors and ballasts age.
Name
COLD_START_LEVEL ()
Parameter | Type | Description |
---|---|---|
BRIGHTNESS | INT | Percent from 0-99 for the Min On brightness to be remapped to. |
Returns
None
COLD_START_TIME
Note that this notification will be deprecated from the proxy in the near future. Control4 recommends using device specific properties for this value.
Used to inform the proxy that the hardware Cold Start level has changed. This is useful for hardware such as Control4’s Gen3 lighting where the hardware supports temporarily setting the brightness to a level for this number of milliseconds in order to 'jump start' the capacitors/ballasts on LED and florescent lights. This value changes over time as capacitors and ballasts age.
Name
COLD_START_TIME ()
Parameter | Type | Description |
---|---|---|
BRIGHTNESS | INT | Number of milliseconds that the light is turned on to the COLD START LEVEL value. |
Returns
None
DYNAMIC_CAPABILITIES_CHANGED
Used to update capabilities and proxy functionality without requiring a different c4i/c4z or for drivers that have capabilities that change during runtime. Multiple parameters can be set with a single notify for 'atomic changes' where some functionality may involve mutual exclusion/inclusion.
Example for parameters are Notify("supports_broadcast_scenes=true","dimmer=true"
Name
DYANAMIC_CAPABILITIES_CHANGED ()
Parameters
DYNAMIC_CAPABILITIES_CHANGED requires different parameters base on capability:
Supports Zigbee Broadcast Scenes
Parameter | Type | Description |
---|---|---|
supports broadcast scenes | BOOL | Supports Zigbee Broadcast Scenes |
Level Target Support
If the driver supports the new level target API: LIGHT_BRIGHTNESS_CHANGING and LIGHT_BRIGHTNESS_CHANGED. This provides better light level tracking for UI's, ALS Scenes, and Composer Programming interaction by allowing drivers to specify the current level, their target level and the number of milliseconds it will take for the light to reach the target level.
Parameter | Type | Description |
---|---|---|
supports target | BOOL | Supports the new level target API |
Dimmer
Used to change if a light is a dimmer or switch at any time. This is very useful for having a single driver provide both functionality depending on what hardware is connected or detected. Can also provide a dealer the ability to make a dimmer act as a switch for UI's and system functionality.
Parameter | Type | Description |
---|---|---|
dimmer | BOOL | If a light is a dimmer or switch at any time. |
Note: If true, updates the following feature capabilities:
- Reads ramp_level from c4i, if not defined, false is assumed.
- Reads click/hold rates from c4i, if these are not defined, 0 is assumed.
Drivers using dynamic capabilities for ramp_level, click, and hold rate settings should re-send dynamic capability notifies for each of these after setting dimmer to true.
If false - Sets the following: - dimmer = false - ramp_level = false - click/rates = 0
Supports Brightness Stop
Parameter | Type | Description |
---|---|---|
dimmer | BOOL | |
supports brightness stop | true/false |
Ramp Level
Parameter | Type | Description |
---|---|---|
ramp level | BOOL | Support ramp level |
Default Brightness Rate Min
Parameter | Type | Description |
---|---|---|
brightness rate min | INT | 0-INT16 MAX |
Default Brightness Rate Max
Parameter | Type | Description |
---|---|---|
brightness rate max | INT | 0-INT16 MAX |
Supports Color
Parameter | Type | Description |
---|---|---|
supports color | BOOL | Supports color |
Supports Color Correlated Temperature
Parameter | Type | Description |
---|---|---|
supports color correlated temperature | true/false | Supports color correlated temperature |
Color Temperature Correlated Min
What is the lowest supported CCT value. Must be increment of 10. Set both min/max to the same value if the CCT value can not be changed.
Parameter | Type | Description |
---|---|---|
color correlated temperature min | 500-20000 | Lowest supported CCT value |
Color Temperature Correlated Max
What is the highest supported CCT value. Must be increment of 10. Set both min/max to the same value if the CCT value can not be changed.
Parameter | Type | Description |
---|---|---|
color correlated temperature max | 500-20000 | Highest supported CCT value |
Supports Color Stop
Parameter | Type | Description |
---|---|---|
supports color stop | BOOL | Supports color stop |
Color Rate Behavior
Parameter | Type | Description |
---|---|---|
color rate behavior | Value. Values include: 0 - Unchangeable Rate, 1 - Device only supports one rate for brightness and color, 2 - Device supports ramping brightness and color at two different rates. | Color Rate Behavior |
Default Color Rate Min
Parameter | Type | Description |
---|---|---|
color rate min | INT | 0-INT16 MAX |
Default Color Rate Max
Parameter | Type | Description |
---|---|---|
color rate max | 0INT | 0-INT16 MAX |
Color Trace Tolerance
Parameter | Type | Description |
---|---|---|
color trace tolerance | NUM | 0-20 * See capability documentation for more information. |
Has Extras
Parameter | Type | Description |
---|---|---|
has extras | BOOL |
Returns
None
HOLD_RATE_DOWN
Used to inform the proxy that the hardware click rate for the "Slow Off" Brightness preset changed.
Name
HOLD_RATE_DOWN ()
Parameter | Type | Description |
---|---|---|
RATE | INT | RNumber of milliseconds it takes for the light to ramp from all the way on to all the way off. |
Returns
None
HOLD_RATE_UP
Used to inform the proxy that the hardware click rate for the "Slow On" Brightness preset changed.
Name
HOLD_RATE_UP ()
Parameter | Type | Description |
---|---|---|
RATE | INT | Number of milliseconds it takes for the light to ramp from all the way off to all the way on. |
Returns
None
LIGHT_BRIGHTNESS_CHANGED
Part of the new Level Target API, used to notify the proxy that a lights brightness changed. It is not required to send a LIGHT_BRIGHTNESS_CHANGING Notify before sending this, so devices like switches or some dimmers that do not provide status on where they are going can still be implemented with the new API. This notify should always be sent to the proxy when the driver starts and/or when the hardware comes online and the driver knows the actual brightness of the hardware.
Name
LIGHT_BRIGHTNESS_CHANGED ()
Parameter | Type | Description |
---|---|---|
LIGHT BRIGHTNESS CURRENT | DOUBE | Double. Raw value of where the light brightness stopped. |
LIGHT BRIGHTNESS CURRENT PRESET ID | INT | Integer. Optional. This should only be included if presets levels are defined and the level is equal to the preset. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is needed for drivers making use of the Daylight Agent or similar features. |
Returns
None
Usage Note
Dimmer Drivers should only use BRIGHTNESS_CHANGING and BRIGHTNESS_CHANGED notifies and no longer use LEVEL_CHANGE notify.
Switch drivers only need to use the BRIGHTNESS_CHANGED notify.
LIGHT_BRIGHTNESS_CHANGING
Part of the new Level Target API, used to notify the proxy that a lights brightness is changing. The benefit of using this Notify is that drivers can provide 'how the light brightness is changing'. Using this Notify greatly improves interaction with the system in numerous ways for components such as ALS Agent, Navigators, Composer Programming and so. A driver should enabled the supports_target capability if using this notify. The LIGHT_LEVEL Notify should be avoided if a driver uses the new API.
This behaves the same was as a Blind or other C4TypeLevel feature where the proxy generates Percentage scaling and for UI's and other system components, but since a single percent may not be enough resolution, we allow programming and other system components to set raw values for a device.
In the case where the 'end of the ramp' is unknown, specifying the end point of where the device will change to if no further interaction is done is the best practice. An example is if someone Holds a button to slow-ramp a light On, the driver should Notify the proxy that the end point is 100 if 100 is the max value of the light.
Name
LIGHT_BRIGHTNESS_CHANGING ()
Parameter | Type | Description |
---|---|---|
LIGHT BRIGHTNESS CURRENT | DOUBLE | Raw value of the lighting level. Does not need to be 0-100% and can be based on the Min and Max Brightness capabilities such as 0-10, 0-99. 0-256 and even negative if the Brightness Min is defined as a negative number. |
LIGHT BRIGHTNESS TARGET | DOUBLE | Double. Raw value of where the light is going to. |
RATE | INT | INumber of milliseconds it will take to ramp to the target level. |
LIGHT BRIGHTNESS CURRENT PRESET ID | INT | Preset ID that was last activated. Providing this will allow the proxy to track and update the drivers level if the preset level is modified - This is needed for drivers making use of the Daylight Agent or similar features. |
LIGHT BRIGHTNESS TARGET PRESET ID | INTR | Preset ID that the light is going to. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is needed for drivers making use of the Daylight Agent or similar features. |
Returns
None
Usage Note
Dimmer Drivers should only use BRIGHTNESS_CHANGING and BRIGHTNESS_CHANGED notifies and no longer use LEVEL_CHANGE notify.
Switch drivers only need to use the BRIGHTNESS_CHANGED notify.
LIGHT_COLOR_CHANGED
Used to inform the proxy that the color has finished changing. It is possible to use this call without the LIGHT_COLOR_CHANGING Notify call being sent first but, some Composer Programming paths will not be run. This notify should always be sent to the proxy when the driver starts and/or when the hardware comes online and the driver knows the actual color of the hardware.
Name
LIGHT_COLOR_CHANGED ()
Parameter | Type | Description |
---|---|---|
LIGHT COLOR CURRENT X | NUM | The CIE 1931 X coordinate for where the color change stopped. |
LIGHT COLOR CURRENT Y | NUM | The CIE 1931 Y coordinate for where the color change stopped. |
LIGHT COLOR CURRENT COLOR MODE | NUYM | Optional. 0 for Full Color, 1 if the XY coordinate is a CCT |
LIGHT COLOR CURRENT PRESET ID | INT | Preset ID that was last activated. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is required for drivers making use of the Daylight Agent or similar features. |
Returns
None
LIGHT_COLOR_CHANGING
Used to inform the proxy that the color is changing on the light. The optional parameters are useful in case the color changed without the proxy knowing which might be needed by some unreliable lighting hardware.
Name
LIGHT_COLOR_CHANGING ()
Parameter | Type | Description |
---|---|---|
LIGHT COLOR TARGET X CIE 1931 | NUM | X coordinate for where the color is going to. |
LIGHT COLOR TARGET Y | NUM | CIE 1931 Y coordinate for where the color is going to. |
LIGHT COLOR TARGET COLOR MODE | NUM | Optional. 0 for Full Color, 1 if the XY coordinate is a CCT |
LIGHT COLOR TARGET COLOR RATE | INT | Optional. Integer. Number of milliseconds it will take to ramp to the target level. 0 will be used if this parameter is not provided. |
LIGHT COLOR CURRENT X | NUM | Optional. CIE 1931 X coordinate for where the color is changing from. |
LIGHT COLOR CURRENT Y | NUM | Optional. CIE 1931 Y coordinate for where the color is changing from. |
LIGHT COLOR CURRENT COLOR MODE | NUM | Optional. 0 for Full Color, 1 if the XY coordinate is a CCT |
LIGHT COLOR CURRENT PRESE ID | INT | Preset ID that was last activated. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is required for drivers making use of the Daylight Agent or similar features. |
LIGHT COLOR TARGE PRESET ID | INT | Preset ID that the light is going to. Providing this will allow the proxy to track and update the drivers level if the preset level is modified. This is required for drivers making use of the Daylight Agent or similar features. |
Returns
None
LIGHT_LEVEL
Used to inform the proxy that the light level has changed.
Name
LIGHT_LEVEL ()
Parameter | Type | Description |
---|---|---|
LEVEL | INT | Percent from 0-100 of the current light level. |
Returns
None
Usage Note
As of Operating System 3.3.0, drivers should no longer send incremental notifies of light level every 20ms, 500ms, 1000ms, etc, as the lights brightness ramps. Sending excessive incremental level updates caused performance issues including:
- Excessive slowness in Proxies, Director, and Navigators.
- Slow performance and inaccurate states for Advanced Lighting Scene tracking.
- Excessive Zigbee traffic and often incorrect keypad button LED status.
- Inconsistent slider movement in Navigators.
- Excessive triggering and sometimes incorrect Composer programming being fired.
See the LIGHT_BRIGHTNESS_CHANGING notification for additional information.
MAX_ON
Used to inform the proxy that the hardware maximum On level has changed. This is useful for hardware such as Control4’s Gen3 lighting where the hardware supports remapping where 100% brightness is at for the actual hardware. This does not change the available brightness percent range from 0-100%.
Name
MAX_ON ()
Parameter | Type | Description |
---|---|---|
BRIGHTNESS | NUM | Percent from 1-100 for the Max On brightness to be remapped to. |
Returns
None
MIN_ON
Used to inform the proxy that the hardware minimum On level has changed. This is useful for hardware such as Control4’s Gen3 lighting where the hardware supports remapping where 1% brightness is when the light is on. This does not change the available brightness percent range from 0-100%. Note that with LED lights, the usable minimum on range does change depending on bulb, age of bulb and other factors.
Name
MIN_ON ()
Parameter | Type | Description |
---|---|---|
int | NUM | Percent from 0-99 for the Min On brightness to be remapped to. |
Returns
None
ONLINE_CHANGED
Used to inform the proxy that the online status of the device has changed. Due to backwards compatibility, the proxy starts 'online' as many old devices did not report online status. UI functionality will be disabled if the light is offline.
Name
ONLINE_CHANGED ()
Parameter | Type | Description |
---|---|---|
STATE | BOOL. | True/False. Whether the device is online or not. |
Returns
None
PRESET_LEVEL
This feature is only to be used if the actual hardware supports a physical button and the light can be programmed to turn on to a specific level. Used to set brightness preset of the "On" (ID = 1) Preset that is used when a user clicks the Top button of a light.
Name
PRESET_LEVEL ()
Parameter | Type | Description |
---|---|---|
BRIGHTNESS | INT | Percent value from 1-100. |
Returns
None
Light V2 Extras Interface Library
Overview
Extras are a way for driver developers to expose unique hardware functionality that users can interact with on a UI/Navigator. This functionality bypasses the need for a proxy to know about the unique features and how to handle them. A protocol driver notify is used to pass the Extras XML information from the protocol driver to the proxy, where the proxy caches the xml strings for current setup and state information. The UI uses a UI_REQUEST as needed to get the information if the UI has just rebooted/started/loaded and then the UI will get updates of these xml strings if it is listening for dataToUI's from the device. Extras objects are accessible through the "Extras Tab" located on the main Navigator screen for the Proxy.
Capabilities
The has_extras capability must be set to true to support the use of Extras. The library will automatically (via dynamic capability) set the has_extras capability when a first Section is created. Also, when the last section is removed, the has_extras capability will be disabled. The Extras class does not implement class destructor as it is not supported in Lua 5.1 and Lua JIT. In the case of setting the Extras class instance to nil, the Extras:cleanCapability() method should be called previously.
Protocol Notify and Proxy Messages
There are two notifies a driver must make to the proxy where this information is forwarded immediately to any UI's listening for dataToUI on the proxy and the information is also cached for future UI's to request: EXTRAS_SETUP_CHANGED and EXTRAS_STATE_CHANGED.
Whenever a driver changes values that are reflected in either the setup or state xml, it must make the notify to the proxy with the updated information. This includes if hardware or a feature is added or removed, a value for one of the objects was updated, and so on.
It is also advisable for protocol drivers to send this data either on initialization of the driver if the values are not likely to change when hardware comes online, or perhaps when the hardware comes online and the extras commands will be able to succeed.
In addition, it could be advisable that the state of objects is changed to hidden when hardware and/or disabled features are not available rather than sending new extras_setup notifies as this may cause a UI to redraw the extras page and reset defaults while a user is interacting with the Extras page on a UI.
EXTRAS SETUP CHANGED
Update the Extras Setup, displayed in the UI
Signature
EXTRAS_SETUP_CHANGED ()
Parameter | Description |
---|---|
XML | XML text string of XML matching the Preset Schedule schema. Comes through to the UI as extras_setup . Note that as of OS 3, sending only a singular XML string is supported. For example, sending an array of Extras can result in Navigator performance issues. |
Returns
None
EXTRAS STATE CHANGED
Update the Extras Setup, displayed in the UI
Signature
EXTRAS_STATE_CHANGED ()
Parameter | Description |
---|---|
XML | XML text string of XML matching the Preset Schedule schema. To UI comes through as extras_state . |
Returns
None
How UI's handle Extras objects
UI's will display objects in the order they are read in the EXTRAS_SETUP xml. If an object needs to have a default selection, number or string, the UI looks at the value attribute for the default. If no value is specified in the EXTRAS_SETUP the UI will default to a behavior listed below for each object type.
When a user changes a value on a UI, the UI will immediately send the command associated with that object down to a protocol driver as a command. The UI waits for a response that the protocol driver has handled the command and the protocol driver must send an updated EXTRAS_STATE notify for the object.
The EXTRAS_STATE does not need to include all states of all objects, only the states of the objects it wants to update (or acknowledged) it has received but it could contain more than just one objects updated state. A driver could also respond back with just the <extras_state><extra><object id="1"></extra></extras_state>
if it wanted to acknowledge the command succeeded but not update the value. If a UI that sent the command does not get a response in 10 seconds, it will change the value of the object back to what it was prior to what the user had changed it from.
Extras Class
Overview
This class provides an interface between instances of the ExtrasObjectBasedClass. This class can cover following use cases:
- Add/Remove/Change Extras Section of an Extras Object
- Add/Remove Extras Object
- Get instance of an existing Extras Object
- Make Extras State/Setup XML strings based on objects provided
- Update Extras Object state
ObjectParameters
Structure that contains all fields needed to initialize ExtrasObject instance
Field Name | Field Type |
---|---|
id | string |
command | string |
label | string |
hidden | string_bool |
readonly | string_bool |
extraparams | table<string,string> |
Extras:addObjects
Adds extras object to the container in the section named sectionLabel
New object will be added at the end of the section and will be displayed as the last section element in the CI. In case of object array, Object order in the CI will be in the same order objects were sorted in the input array.
Function Signature:
Extras:addObjects(objects, sectionLabel)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objects | ExtrasObjectBasedClass\ | ExtrasObjectBasedClass: List or individual extras object |
sectionLabel | string |
Returns:
Name | Type | Description |
---|---|---|
cnt | number | Number of objects added |
Extras:getObject
Returns extras object with id no matter the section
Function Signature:
Extras:getObject(id)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object |
Returns:
Name | Type | Description |
---|---|---|
object | ExtrasObjectBasedClass | nil |
Extras:updateObject
Updates value and hide parameter for the object with objId and sends notification to proxy bound to proxyId
If value or hide is not provided, field value will not change. This methods updates fields and sends Proxy Notification that state has been changed.
Function Signature:
Extras:updateObject(proxyId, objId, newValue, hide)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objId | string | ID of the extras object |
newValue | string | Value to be updated |
hide | string_bool | True or false string |
Extras:removeObject
Removes extras object with id no matter the section.
Function Signature:
Extras:removeObject(id)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object |
Returns:
Name | Type | Description |
---|---|---|
ret | boolean | Returns true if removal was successful |
Extras:makeSetupXml
This method makes complete XML string to be send as response to GET_EXTRAS_SETUP proxy command.
Function Signature:
Extras:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
Extras:makeStateXml
This method makes complete XML string to be send as response to GET_EXTRAS_STATE proxy command or to be sent after extras object update.
Function Signature:
Extras:makeStateXml()
Returns:
Name | Type |
---|---|
xml | string |
Extras:sendSetup
Builds xml and sends proxy notification EXTRAS_SETUP_CHANGED
Function Signature:
Extras:sendSetup(proxyId)
Extras:sendState
Builds xml and sends proxy notification EXTRAS_STATE_CHANGED
Function Signature:
Extras:sendState(proxyId)
Section
Structure that represent a section. Holds section name and ExtrasObject based classes array.
Field Name | Field Type |
---|---|
label | string |
objects | ExtrasObjectBasedClass] |
ExtrasObjectBasedClass
This alias is for all classes that inherits the ExtrasObject class.
Type
Name | Value |
---|---|
ExtrasObjectBasedClass | ExtrasButton, ExtrasCheckbox |
string_bool
Alias for values can be provided as hide argument
Type
Name | Value |
---|---|
string_bool | "true" "false" |
Extras
Container class for the ExtrasObject based instances (Button, Checkbox ...) This class is used to hold ExtrasObject based instances and to handle XML assembling and sending. This class handles sections as well as = inheritsFrom(nil)
Field Name | Field Type |
---|---|
sections | Section |
proxyId | number |
has_extras | boolean |
Function Parameters:
Parameter | Type |
---|---|
proxyId | number |
Extras:addSection
Adds section to the instance
A Section table will be initialized and added in the self.sections field. The object field of the table type Section will bi initialized as empty table. Section order in the CI will be in the same order section were added in the container class instance.
Function Signature:
Extras:addSection(label)
Function Parameters:
Parameter | Type | Description |
---|---|---|
label | string | Name of the section that will be displayed in the CI |
Returns:
Name | Type | Description |
---|---|---|
ret | boolean | Returns true if insertion was successful |
Extras:removeSection
Removes the section with the label sectionLabel from the list
This method will remove the section with label sectionLabel and all objects in the section. Section indexes will be changed to fill the empty space but the order will not change.
Function Signature:
Extras:removeSection(sectionLabel)
Function Parameters:
Parameter | Type | Description |
---|---|---|
sectionLabel | string |
Returns:
Name | Type | Description |
---|---|---|
ret | boolean | Returns true if the operation was successful |
Extras:getSection
Returns section table with the label sectionLabel
Function Signature:
Extras:getSection(sectionLabel)
Function Parameters:
Parameter | Type | Description |
---|---|---|
sectionLabel | string |
Returns:
Name | Type | Description |
---|---|---|
section | Section: nil |
Extras:changeSection
Moves extras object with id in section named newSection
Function Signature:
Extras:changeSection(id, newSection)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object |
newSection | string | Name of the new section to put the object |
Extras:cleanCapability
This method cleans the has_extras capability.
Function Signature:
Extras:cleanCapability()
Extras:setCapability
This method sets the has_extras capability.
Function Signature:
Extras:setCapability()
ExtrasButton
Overview
This class represents an abstraction of the Extras Button object. The class interface provides following cations:
- Initialization of an Extras Button object
- Setting Extras Button object parameters (label, button text, etc)
ExtrasButton : ExtrasObject
Class that represent extras button functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasButton = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | string |
text |
ExtrasButton:construct
ExtrasButton constructor
Function Signature:
ExtrasButton:construct(objParams, text)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
text | string | Button text that will be displayed on the button in the CI |
ExtrasButton:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasButton:makeSetupXml()
Returns:
Name | Type |
---|---|
xml | string |
ExtrasButton:getStateXml
Returns XML string that represents extras object state
This method overrides the method from the base class. This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string.
The string will be return in the following command:
- \<object id= "\[self.id]" value="\[self.value]" /\>
Function Signature:
ExtrasButton:getStateXml()
Returns:
Name | Type |
---|---|
xml | string |
ExtrasCheckbox
Overview
This class represents an abstraction of the Extras Checkbox object. The class interface provides following cations:
- Initialization of an Extras Checkbox object
- Setting Extras Checkbox object parameters and value
ExtrasCheckbox : ExtrasObject
Class that represent extras checkbox functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasCheckbox = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
ExtrasCheckbox:construct
ExtrasCheckbox constructor
Function Signature:
ExtrasCheckbox:construct(objParams, value)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
value | string | Checkbox value (true, false) that will be displayed on the button in the CI |
ExtrasCheckbox:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasCheckbox:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasIcon
Overview
This class represents an abstraction of the Extras Icon object. The class interface provides following cations:
- Initialization of an Extras Icon object
- Setting Extras Icon object parameters and value
ExtrasIcon : ExtrasObject
Class that represent extras icon functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasIcon = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
ExtrasIcon:construct
ExtrasIcon constructor
Function Signature:
ExtrasIcon:construct(objParams, value)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters: For initialization of the base class | |
value | string | Link or path to the image that will be displayed in the CI |
ExtrasIcon:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasIcon:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasList
Overview
This class represents an abstraction of the Extras List object. The class interface provides following cations:
- Initialization of an Extras List object
- Setting Extras Checkbox object parameters and list parameters
- Setting the currently selected item
ExtrasListParameters
Field Name | Field Type |
---|---|
value | string |
maxSelections | Maximal |
minSelections | Minimal |
list | table<string,string> |
ExtrasList : ExtrasObject
Class that represent extras list functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasList = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
__name | Methafield |
maxSelections | number |
minSelections | number |
list | table <string,string> |
ExtrasList:construct
ExtrasList constructor
Function Signature:
ExtrasList:construct(objParams, listParams)
Function Parameters:
Parameter | Description |
---|---|
objParams | ObjectParameters: For initialization of the base class |
ExtrasListParameters | Parameters for initialization of the list |
ExtrasList:makeListXml
Returns the xml string needed to for response to the GET_EXTRAS_SETUP proxy message.
Returns complete list tag. This tag should be a child tag of the object tag.
Function Signature:
ExtrasList:makeListXml()
Returns:
Name | Type |
---|---|
mxl | string |
ExtrasList:makeSetupXml
Returns XML string that represents the list setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasList:makeSetupXml()
Returns:
Name | Type |
---|---|
xml | string |
ExtrasNumber
Overview
This class represents an abstraction of the Extras Number object. The class interface provides following cations:
- Initialization of an Extras Number object
- Setting Extras Number object parameters, number parameters
ExtrasNumber : ExtrasObject
Class that represent extras number functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasNumber = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
min | number |
max | number |
resolution | number |
ExtrasNumber:construct
ExtrasNumber constructor
Function Signature:
ExtrasNumber:construct(objParams, numberParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
numberParams | table<string,number\ | string> |
ExtrasNumber:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasNumber:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject
ExtrasObject
Base class for classes that represent extras objects (button, checkbox ...) Should not create independent instance from this class This class only purpose is to be base class for extras object classesrasObject = inheritsFrom(nil)
Field Name | Field Type |
---|---|
id | string |
command | string |
label | string |
hidden | string_bool |
readonly | string_bool |
extraparams | table<string,string> |
ExtrasObject:construct
ExtrasObject constructor
Function Signature:
ExtrasObject:construct(objParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters: Table of parameters needed to assemble XML |
ExtrasObject:addExtraparam
Adding extra parameter to the Object instance
If extra parameter is added, tParams argument of the Proxy command will contain value of the extras object with id.
Function Signature:
ExtrasObject:addExtraparam(id, name)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object that will be connected |
name | string | of the extras object that will be connected |
ExtrasObject:removeExtraparam
Removing extra parameter from the list
This method will remove extra parameter with id and value of that extras object will not be received in proxy command.
Function Signature:
ExtrasObject:removeExtraparam(id)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string |
ExtrasObject:getStateXml
Returns XML string that represents extras object state
This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string. The string will be return in the following command:
`- \<object id= "\[self.id]" value="\
self.value" />
``
Function Signature:
ExtrasObject:getStateXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject:getExtraparamsXml
Returns XML string that represents list of extraparameters
This string should be incorporated in response to GET_EXTRAS_SETUP Key and value of the extraparams field will be escaped end integrated in the message.
Function Signature:
ExtrasObject:getExtraparamsXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject:update
Update extras object individually.
This method should be called when the user wants to udate an object individually. The method from the Extras class will update all objects, this method will update just this on object. Also, this method is inherited by all ExtrasObjectBasedClass instances.
Function Signature:
ExtrasObject:update(value, hidden)
Function Parameters:
Parameter | Type | Description |
---|---|---|
value | string | New value for the extras object |
hidden | string | Hide the object or not |
ExtrasSlider : ExtrasObject
Class that represent extras slider functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSlider = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
__name | Methafield |
min | number\ |
max | number\ |
resolution | number\ |
ExtrasSlider:construct
ExtrasSlider constructor
Function Signature:
ExtrasSlider:construct(objParams, sliderParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters: For initialization of the base class | |
sliderParams | table<string,number\ | string> |
ExtrasSlider:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasSlider:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject
Base class for classes that represent extras objects (button, checkbox ...) Should not create independent instance from this class This class only purpose is to be base class for extras object classesrasObject = inheritsFrom(nil)
Field Name | Field Type |
---|---|
id | string |
command | string |
label | string |
hidden | string_bool |
readonly | string_bool |
extraparams | table<string,string> |
ExtrasObject:construct
ExtrasObject constructor
Function Signature:
ExtrasObject:construct(objParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters: Table of parameters needed to assemble XML |
ExtrasObject:addExtraparam
Adding extra parameter to the Object instance
If extra parameter is added, tParams argument of the Proxy command will contain value of the extras object with id.
Function Signature:
ExtrasObject:addExtraparam(id, name)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string | ID of the extras object that will be connected |
name | string | of the extras object that will be connected |
ExtrasObject:removeExtraparam
Removing extra parameter from the list
This method will remove extra parameter with id and value of that extras object will not be received in proxy command.
Function Signature:
ExtrasObject:removeExtraparam(id)
Function Parameters:
Parameter | Type | Description |
---|---|---|
id | string |
ExtrasObject:getStateXml
Returns XML string that represents extras object state
This string should be incorporated in response to GET_EXTRAS_STATE command. id and value fields will be escaped and integrated in the string.The string will be return in the following command:
- \<object id= "\[self.id]" value="\[self.value]" /\>
Function Signature:
ExtrasObject:getStateXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject:getExtraparamsXml
Returns XML string that represents list of extraparameters
This string should be incorporated in response to GET_EXTRAS_SETUP Key and value of the extraparams field will be escaped end integrated in the message.
Function Signature:
ExtrasObject:getExtraparamsXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasObject:update
Update extras object individually.
This method should be called when the user wants to update an object individually. The method from the Extras class will update all objects, this method will update just this on object. Also, this method is inherited by all ExtrasObjectBasedClass instances.
Function Signature:
ExtrasObject:update(value, hidden)
Function Parameters:
Parameter | Type | Description |
---|---|---|
value | string | New value for the extras object |
hidden | string | Hide the object or not |
ExtrasSlider
Overview
This class represents an abstraction of the Extras Slider object. The class interface provides following cations:
- Initialization of an Extras Slider object
- Setting Extras Slider object parameters and slider parameters
ExtrasSlider : ExtrasObject
Class that represent extras slider functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSlider = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
min | number |
max | number |
resolution | number |
ExtrasSlider:construct
ExtrasSlider constructor
Function Signature:
ExtrasSlider:construct(objParams, sliderParams)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
sliderParams | table<string,number\ | string> |
ExtrasSlider:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasSlider:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasSwitch
Overview
This class represents an abstraction of the Extras Switch object. The class interface provides following cations:
- Initialization of an Extras Switch object
- Setting Extras Switch object parameters and value
ExtrasSwitch : ExtrasObject
Class that represent extras switch functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasSwitch = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
__name | Methafield |
ExtrasSwitch:construct
ExtrasSwitch constructor
Function Signature:
ExtrasSwitch:construct(objParams, value)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
value | string | Switch value (true, false) that will be displayed on the button in the CI |
ExtrasSwitch:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasSwitch:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasText
Overview
This class represents an abstraction of the Extras Text object. The class interface provides following cations:
- Initialization of an Extras Text object
- Setting Extras Text object parameters and value
ExtrasText : ExtrasObject
Class that represent extras text functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasText = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
name | Methafield |
ExtrasText:construct
ExtrasText constructor
Function Signature:
ExtrasText:construct(objParams, value)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
value | string | Text value that will be displayed on the element in the CI |
ExtrasText:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasText:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
ExtrasTextField
Overview
This class represents apstraction of the Extras Text Field object. The class interface provides following cations:
- Initialization of an Extras Text Field object
- Setting Extras Text Field object parameters, text field mode and value
TextFieldMode
Type
Name | Value |
---|---|
TextFieldMode | "normal"\ |
ExtrasTextField : ExtrasObject
Class that represent extras checkbox functionality. This class is derived from ExtrasObject. Instance of the class can be created independently but will not be displayed alone, it should be added to the instance of the Extras class.rasTextField = inheritsFrom(ExtrasObject)
Field Name | Field Type |
---|---|
TYPE | string |
__name | Methafield |
mode | TextFieldMode |
ExtrasTextField:construct
ExtrasTextField constructor
Function Signature:
ExtrasTextField:construct(objParams, value, mode)
Function Parameters:
Parameter | Type | Description |
---|---|---|
objParams | ObjectParameters | For initialization of the base class |
value | string | TextField value that will be displayed on the field in the CI |
mode | TextFieldMode | Text field mode: password, numberic ... |
ExtrasTextField:makeSetupXml
Returns XML string that represents the button setup with all extraparameters
Makes XML that should be integrated in the response to GET_EXTRAS_SETUP Proxy message.
Function Signature:
ExtrasTextField:makeSetupXml()
Returns:
Name | Type | Description |
---|---|---|
xml | string |
Extras Library Use Case Examples
Importing the library
To use this library, please move all *.lua
files to the source directory of your driver, then import Extras.lua
file in your driver.lua
file. The Extras.lua
file includes all other library files needed.
This library depends on a driver template. Please, make sure that the driver template files are included in the path. NOTE Make sure paths are setup correctly
How to use the library
Set Up
The code to the right is an example how to setup the extras library:
require "Extas"
function ON_DRIVER_INIT.SetupExtras()
extras = Extras:new(DEFAULT_PROXY_BINDINGID)
extras:addSection("ButtonLabel")
extras:addSection("CheckboxLabel")
local bt1Table = {
id = "Button1ID",
label = "Button 1 Label",
command = "Button1Command",
extraparams = {
Checkbox4ID = "Extr1",
Checkbox3ID = "Extr2",
Button2ID = "Extr3"
}
}
extras:addObjects({ExtrasButton:new(bt1Table, "ButtonText1"),
ExtrasButton:new({id = "Button3ID", label = "Button 3 Label", command = "Button1Command"}, "ButtonText3"),
ExtrasButton:new({id = "Button2ID", label = "Button 2 Label", command = "Button1Command"}, "ButtonText2"),
ExtrasButton:new({id = "Button4ID", label = "Button 4 Label", command = "Button1Command"}, "ButtonText4")},
"ButtonLabel")
extras:addObjects({ExtrasCheckbox:new({id = "Checkbox1ID", label = "Checkbox 1 Label", command = "Checkbox1Command"}, "true"),
ExtrasCheckbox:new({id = "Checkbox2ID", label = "Checkbox 2 Label", command = "Checkbox1Command"}, "true"),
ExtrasCheckbox:new({id = "Checkbox3ID", label = "Checkbox 3 Label", command = "Checkbox1Command"}, "true"),
ExtrasCheckbox:new({id = "Checkbox4ID", label = "Checkbox 4 Label", command = "Checkbox1Command"}, "true")},
"CheckboxLabel")
extras:sendSetup(DEFAULT_PROXY_BINDINGID)
end
- Section order in the CI will be in the same order section were added in the container class instance.
- Object order in the CI will be in the same order objects were added in the section.
- Remember that object could be added as separated elements or as an array of objects.
- This setup can be called in
DriverLateInit()
. Setting extras in theDriverInit()
callback is possible but not recommended.
Handling Proxy Commands
The next code example shows how to write handlers for proxy commands received when extras change:
-- Proxy Command Handlers
PRX_CMD.Button1Command(proxyId, tParams)
C4:SetVariable("Extras_Button1", os.date())
LogDebug(os.date() .. " " .. extras:getObject(tParams.id).label .. " - Extras Button pressed")
end
function PRX_CMD.Checkbox1Command(proxyId, tParams)
C4:SetVariable("Extras_Checkbox1", tParams.value)
LogDebug(os.date() .. " " .. extras:getObject(tParams.id).label .. " - Extras Checkbox switched")
extras:updateObject(proxyId, tParams.id, tParams.value)
end
To handle changes in extras parameters coming from the device side, the updateObject
method can be used. This method updates extras object instance and sends proxy notification that extras status has been changed. Also, each ExtrasObjectBasedClass
class supports the ExtrasObjectBasedClass:update(value, hidden)
method that enables extras update from the class instance directly.
It is nice to create a variable for each extras object, to give the partner opportunity to monitor and take action based on extras states. Sample variable definitions are to the right.
--Variable Examples
C4:AddVariable("Extras_Button1", "", "STRING")
C4:AddVariable("Extras_Checkbox1", "", "BOOL")
Sqishy
If the Lua Squish is used, the Module code snippet below should be included in the squishy file:
-- Lua Squish Sample
Module "Extras" "extras/Extras.lua"
Module "ExtrasObject" "extras/ExtrasObject.lua"
Module "ExtrasButton" "extras/ExtrasButton.lua"
Module "ExtrasCheckbox" "extras/ExtrasCheckbox.lua"
Module "ExtrasIcon" "extras/ExtrasIcon.lua"
Module "ExtrasList" "extras/ExtrasList.lua"
Module "ExtrasSwitch" "extras/ExtrasSwitch.lua"
Module "ExtrasNumber" "extras/ExtrasNumber.lua"
Module "ExtrasSlider" "extras/ExtrasSlider.lua"
Module "ExtrasText" "extras/ExtrasText.lua"
Module "ExtrasTextField" "extras/ExtrasTextField.lua"
In this case, the library can be used as git submodule.
Removing
To remove the object or the section please use following methods:
Extras:removeObject(id)
Extras:removeSection(sectionLabel)
This way, you will avoid lost objects (objects that are in section array but will not be displayed because empty index before). It is strongly recommended to hide rather than remove objects that will be temporary removed form the CI.
Before destroying an Extras class instance, please use the Extras:cleanCapability()
method. Also, please pay attention to the Capability section of the documentation.
Light V2 Variables
Light State: ID = 1000. Boolean indicating if the light Brightness is not at the Off preset. If you set this variable to true on a dimmer, it will go to the On preset. On a switch, only the first variable exists.
Brightness Percent: ID = 1001. An integer indicating the current brightness for a dimmer. The value should be between 0-100.
Brightness Target Ramp Rate in Milliseconds: ID = 1120. Primarily for UI's who request brightness information during a ramp, as this will allow them to know how far through the ramp the light is. This is updated every 1000ms. This works for only drivers that have enabled the supports_brightness_target capability.
Brightness Target Rate Remaining in Milliseconds: ID = 1121. Primarily for UI's who request brightness information during a ramp, as this will allow them to know how far through the ramp the light is. This is updated every 1000ms. This works for only drivers that have enabled the supports_brightness_target capability.
Click Rate Up: ID = 1002. An integer indicating the number of milliseconds. (Used in "On" Preset).
Click Rate Down: ID = 1003. An integer indicating the number of milliseconds. (Used in "Off" Preset).
Hold Rate Up: ID = 1004. An integer indicating the number of milliseconds. (Used in "Slow On" Preset).
Default On Preset Brightness: ID = 1006. An integer indicating what the preset "On" brightness is and thus what a light Brightness would go to if the top wall keypad button is clicked, regardless what the light level is at and including even if the current brightness is higher. (Used in "On" Preset).
Max Brightness: ID = 1007. An integer indicating how high the light will go with a click. To go passed the max (still capped at 100%), you need to press and hold.
Min Brightness: ID = 1008. An integer on how low the light will go before skipping values between this number and 0/completely off.
Cold Start Brightness: ID = 1009. An integer of what level to go to when first turning on before attempting to do a ramp.
Cold Start Time: ID = 1010. An integer indicating the amount of time in milliseconds to stay at the cold start level before starting a ramp.
Color Presets ID=1300. An XML string containing all of the Color Presets that are configured in the system. For UI use only.
Color Active Presets ID=1301. An XML string containing all of the presets that are currently active. For UI use only.
See example to the right.
<active_presets>
<preset>
<name>Relax</name>
<id>2</id>
<origin>2</origin>
</preset>
</active_presets>
In the example to the right, the origin value indicates if the preset came from a device (1), or the color agent (2).
Light Dynamic Capabilities ID=6661. An XML string containing the active dynamic capabilities for this light proxy. For UI use Only.
See example to the right.
<DynamicCapabilities>
<supports_broadcast_scenes>False</supports_broadcast_scenes>
<dimmer>False</dimmer>
<supports_target>False</supports_target>
<supports_color>False</supports_color>
<supports_color_correlated_temperature>False<supports_color_correlated_temperature>
<color_correlated_temperature_min>1000<color_correlated_temperature_min>
<color_correlated_temperature_max>20000</color_correlated_temperature_max>
<color_rate_behavior>0</color_rate_behavior>
<color_rate_min>0</color_rate_min>
<color_rate_max>0</color_rate_max>
<color_trace_tolerance>2</color_trace_tolerance>
<has_extras>False</has_extras>
<click_rate_min>0</click_rate_min>
<click_rate_max>86400000</click_rate_max>
<hold_rate_min>1000</hold_rate_min>
<hold_rate_max>86400000</hold_rate_max>
</DynamicCapabilities>
VAR_C4_NESTING_PARENTS_CHILD_DEVICES Set this variable to a comma delimited list of ID values for the secondary device(s) required by the parent driver. This list represents the drivers that will be nested under the parent driver in Composer Pro. This is the associated driver(s) with the nested_driver_is_child capability set to true.
VAR_C4_NESTED_CHILDS_PARENT_DEVICE Set the variable to the ID of primary driver requiring its use. This is the associated driver with the nesting_driver_is_parent capability set to true.
Lock Proxy Commands
ADD_USER
Adds a user.
Signature
ADD_USER ()
Parameter | Description |
---|---|
str | USER NAME |
str | PASSCODE |
bool | IS ACTIVE: Optional, true |
bool | SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true |
int | START DAY: 1-31. |
int | START MONTH: 1-12. |
int | START YEAR: YYYY. |
int | END DAY: 1-31 |
int | END MONTH: 1-12. |
int | END YEAR: YYYY. |
int | START TIME: optional, minutes from midnight. |
int | END TIME: optional, minutes from midnight. |
str | SCHEDULE TYPE: Optional. daily |
bool | IS RESTRICTED SCHEDULE: Optional, true/false. Specifies whether or not to enforce the user’s schedule. Defaults to false. |
Returns
None
CLOSE
Lock if status is unlocked. Called by bound relay.
Name
CLOSE ()
Parameters
None
Returns
None
DELETE_USER
Deletes a user.
Name
DELETE_USER ()
Parameters
None
Returns
None
EDIT_USER
Edits the user's schedule and status.
Name
ADD_USER ()
Parameter | Description | |
---|---|---|
int | USER ID | |
str | USER NAME | |
str | PASSCODE | |
bool | IS ACTIVE: Optional, true | false. A user can be enabled or disabled without affecting schedule. Defaults to true. |
bool | SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true | false. Defaults all true. |
int | START DAY: 1-31. | |
int | START MONTH: 1-12. | |
int | START YEAR: YYYY. | |
int | END DAY: 1-31 | |
int | END MONTH: 1-12. | |
int | END YEAR: YYYY. | |
int | START TIME: optional, minutes from midnight. | |
int | END TIME: optional, minutes from midnight. | |
str | SCHEDULE TYPE: Optional. daily | date range. A daily schedule will specify SCHEDULED_DAYS . A date_range will specify a start date and an end date. Both schedule types may be restricted to a START_TIME and END_TIME . Defaults to daily. |
bool | IS RESTRICTED SCHEDULE: Optional, true/false. Specifies whether or not to enforce the user’s schedule. Defaults to false. |
Returns
None
LOCK
Lock if status is unlocked.
Name
LOCK ()
Parameters
None
Returns
None
OPEN
Unlock if status is unlocked. Called by bound relay.
Name
OPEN ()
Parameters
None
Returns
None
REQUEST_CAPABILITIES
This command results in the Protocol Notification CAPABILITY_CHANGED
being sent from the Protocol to the Proxy.
Name
REQUEST_CAPABILITIES ()
Parameters
None
Returns
None
REQUEST_CUSTOM_SETTINGS
This command results in the Protocol Notification CUSTOM_SETTINGS
being sent from the Protocol to the Proxy.
Name
REQUEST_CUSTOM_SETTINGS ()
Parameters
None
Returns
None
REQUEST_CUSTOM_SETTINGS
This command results in the Protocol Notification HISTORY
being sent from the Protocol to the Proxy.
Name
REQUEST_HISTORY ()
Parameters
None
Returns
None
REQUEST_SETTINGS
This command results in the Protocol Notification SETTINGS
being sent from the Protocol to the Proxy.
Name
REQUEST_SETTINGS ()
Parameters
None
Returns
None
REQUEST_USERS
This command results in the Protocol Notification USERS
being sent from the Protocol to the Proxy.
Name
REQUEST_USERS ()
Parameters
None
Returns
None
SET_ADMN_CODE
Set the lock's administrator code.
Name
PSET_ADMIN_CODE ()
Parameter | Description | Description |
---|---|---|
PASSCODE | STR | Admin code |
Returns
None
SET_AUTO_LOCK_SECONDS
Set the number of seconds to wait before locking automatically after unlocked. A value of 0 means do not auto lock. Range determined by capabilities.
Name
SET_AUTO_LOCK_SECONDS ()
Parameter | Type | Description |
---|---|---|
SECONDS | NUM | Number of seconds |
Returns
None
SET_CUSTOM_SETTINGS
This command results in the Protocol Notification CUSTOM_SETTINGS
being sent from the Protocol to the Proxy.
Name
SET_CUSTOM_SETTINGS ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Required. |
VALUE | STR | Required. Value type must be converted based on custom setting type. |
Returns
None
SET_LANGUAGE
Set the lock's language. Values determined by capabilities.
Name
SET_ LANGUAGE ()
Parameter | Type | Description |
---|---|---|
LANGUAGE | STR | Lock language. |
Returns
None
SET_LOCK_MODE
Set the lock’s mode. The supported modes are determined by capabilities.
Name
SET_ LOCK_MODE ()
Parameter | Type | Description |
---|---|---|
MODE | STR | MODE: Required: normal, vacation |
Returns
None
SET_LOG_FAILED_ATTEMPTS
For lock’s that have internal log storage, sets whether or not to log failed attempts.
Name
SET_LOG_FAILED_ATTEMPTS ()
Parameter | Description |
---|---|
bool | true/false |
Returns
None
SET_NUMBER_LOG_ITEMS
For locks that have internal log storage, set the maximum number of log items to store. Range determined by capabilities.
Name
SET_NUMBER_LOG_ITEMS ()
Parameter | Type | Description |
---|---|---|
unit | NUM | Log count |
Returns
None
SET_ONE_TOUCH_LOCKING
Set whether or not keypad activation will extend bolt if unlocked.
Name
SET_ONE_TOUCH_LOCKING ()
Parameter | Description |
---|---|
bool | true/false |
Returns
None
SET_SCHEDULED_LOCKOUT_ENABLED
Disable or enable all user passcode access.
Name
SET_SCHEDULED_LOCKOUT_ENABLED ()
Parameter | Description |
---|---|
bool | true/false |
Returns
None
SET_SHUT_OUT_TIMER
Set the number of seconds to wait after wrong code attempts has been reached. Range determined by capabilities.
Name
SET_SHUT_OUT_TIMER ()
Parameter | Description |
---|---|
unit | SECONDS |
Returns
None
SET_WRONG_CODE_ATTEMPTS
Set the number of failed passcode attempts before users are temporarily shut out. Range determined by capabilities.
Name
SET_WRONG_CODE_ATTEMPTS ()
Parameter | Description |
---|---|
unit | COUNT |
Returns
None
SET_VOLUME
Sets the lock’s volume.
Name
SET_VOLUME ()
Parameter | Description |
---|---|
str | high/low/silent |
Returns
None
TOGGLE
Toggle the state of the lock. If the lock status is unknown or default, the resulting status is indeterminable
Name
TOGGLE ()
Parameter
None
Returns
None
UNLOCK
Unlock if status is locked.
Signature
UNLOCK ()
Parameter
None
Returns
None
Lock Protocol Notifications
BATTERY_STATUS_CHANGED
Sent when battery status changed.
Name
BATTERY_STATUS_CHANGED ()
Parameter | Type | Description |
---|---|---|
BATTERY STATUS | STR | Required parameter: normal, warning, or critical. Fires Events: BatteryNormal, BatteryWarning, BatteryCritical. |
CAPABILITY_CHANGED
Sent when a capability changes; or when requested by the protocol driver command REQUEST_CAPABILITES
, and a capability has changed from what is defined in the driver capabilities XML
Name
CAPABILITY_CHANGED ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Required parameter: The name of the setting is its XML tag as defined in <lock_setup> . |
VALUE | STR | Required parameter: The capabilities new value. |
HISTORY
Sent in response to the command REQUEST_HISTORY
.
Name
HISTORY ()
Parameter
None
Returns
None
Example
<lock_history>
<history_item>
<history_id>history-ID INT</history_id>
<date>date STRING</date>
<time>time STRING</time>
<message>message STRING</message>
<source>source STRING</source>
</history_item>
</lock_history>
CUSTOM_SETTINGS
Sent in response to the command REQUEST_CUSTOM_SETTINGS
.
Name
CUSTOM_SETTINGS ()
Parameter
None
Returns
None
Example
<lock_custom_settings>
<custom_setting>
<name>name STRING</name>
<type>STRING,LIST,RANGED_INTEGER,RANGED_FLOAT,BOOLEAN</type>
<mode> alpha|alpha-numeric|password</mode>
<items>
<item>item</item>
<item>item</item>
</items>
<minimum>min</minimum>
<maximum>max</maximum>
<value>value</value>
</custom_setting>
</lock_custom_settings>
CUSTOM_SETTINGS_CHANGED
Sent in when a custom setting changes
Name
CUSTOM_SETTINGS_CHANGED ()
Parameter
None
Returns
None
LOCK_STATUS_CHANGED
Sent in when a lock status changes for any reason.
Name
LOCK_STAUS_CHANGED ()
Parameter | Type | Description |
---|---|---|
LOCK STATUS | STR | Required parameter: unknown, locked, unlocked, or fault. |
LAST ACTION DESCRIPTION | STR | Optional parameter. |
SOURCE | STR | Optional parameter: the source that affected the status change. |
MANUAL | BOOL | Optional parameter: true, false, assumed false if not specified. |
Returns
None
SETTINGS
Sent in response to the command REQUEST_SETTINGS
.
Name
SETTINGS ()
Parameters
None
Returns
None
Example
<lock_settings>
<admin_code>admin-code STRING</admin_code>
<auto_lock_time>nINT</auto_lock_time>
<log_item_count>nINT </log_item_count>
<schedule_lockout_enabled>true|false</schedule_lockout_enabled>
<lock_mode> normal|vacation|privacy</lock_mode>
<log_failed_attempts>true|false</log_failed_attempts>
<wrong_code_attempts>nINT</wrong_code_attempts>
<shutout_timer>nINT</shutout_timer>
<language>English|French|Spanish|etc</language>
<volume>silent|low|high</volume>
<one_touch_locking>true|false</one_touch_locking>
</lock_settings>
SETTINGS_CHANGED
Sent when a setting changes.
Name
SETTINGS_CHANGED ()
Parameter | Description |
---|---|
str | Required parameter. The name of the setting is its XML tag as defined in <lock_settings>’ |
Returns
None
USERS
Sent in response to the command REQUEST_HISTORY
.
Name
USERS ()
Parameter
None
Returns
None
USER_ADDED
Sent when a user is added.
Name
USER_ADDED ()
Parameter | Description | |
---|---|---|
int | USER ID | |
str | USER NAME | |
str | PASSCODE | |
bool | IS ACTIVE: Optional, true | false. A user can be enabled or disabled without affecting schedule. Defaults to true. |
bool | SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true | false. Defaults all true. |
int | START DAY: 1-31. | |
int | START MONTH: 1-12. | |
int | START YEAR: YYYY. | |
int | END DAY: 1-31 | |
int | END MONTH: 1-12. | |
int | END YEAR: YYYY. | |
int | START TIME: optional, minutes from midnight. | |
int | END TIME: optional, minutes from midnight. | |
str | SCHEDULE TYPE: Optional. daily | date range. A daily schedule will specify SCHEDULED_DAYS . A date_range will specify a start date and an end date. Both schedule types may be restricted to a START_TIME and END_TIME . Defaults to daily. |
bool | IS RESTRICTED SCHEDULE: Optional, true/false. Specifies whether or not to enforce the user’s schedule. Defaults to false. |
Returns
None
USER_CHANGED
Sent when a user setting is changed.
Name
USER_CHANGED ()
Parameter | Description | |
---|---|---|
int | USER ID | |
str | USER NAME | |
str | PASSCODE | |
bool | IS ACTIVE: Optional, true | false. A user can be enabled or disabled without affecting schedule. Defaults to true. |
bool | SCHEDULED DAYS: Comma delimited BOOLEAN. Optional. Sunday – Saturday, true | false. Defaults all true. |
int | START DAY: 1-31. | |
int | START MONTH: 1-12. | |
int | START YEAR: YYYY. | |
int | END DAY: 1-31 | |
int | END MONTH: 1-12. | |
int | END YEAR: YYYY. | |
int | START TIME: optional, minutes from midnight. | |
int | END TIME: optional, minutes from midnight. | |
str | SCHEDULE TYPE: Optional. daily | date range. A daily schedule will specify SCHEDULED_DAYS . A date_range will specify a start date and an end date. Both schedule types may be restricted to a START_TIME and END_TIME . Defaults to daily. |
bool | IS RESTRICTED SCHEDULE: Optional, true/false. Specifies whether or not to enforce the user’s schedule. Defaults to false. |
Returns
None
USER_DELETED
Sent when a user setting is deleted.
Name
USER_DELETED ()
Parameter | Type | Description |
---|---|---|
USER ID | INT | User ID |
USER NAME | STR | User Name |
Returns
None
Lock Capabilities
LOCK CAPABILITIES
The following Capabilities are supported with the Lock Proxy. Note that these capabilities will persist their values. This can result in inaccurate capability values being displayed on Navigators.
The correct way to update these capabilities when a driver is updated is with the DYNAMIC_CAPABILITY_CHANGED notification. For example see the lua code to the right which uses name/value pairs:
C4:SendToProxy(5001, 'CAPABILITY_CHANGED', { NAME = 'shutout_timer_values', VALUE = '10, 30' } , 'NOTIFY')
C4:SendToProxy(5001, 'CAPABILITY_CHANGED', { NAME = 'shutout_timer_display_values', VALUE = '10s, 30s' }, 'NOTIFY')
Capabilities
<auto_lock_time_display_values></auto_lock_time_display_values>
Comma delimited list of correlating display values: str
<auto_lock_time_values></auto_lock_time_values>
Comma delimited list of increasing values: int
<has_admin_code></has_admin_code>
Defines whether the lock has an admin code that must be entered to access lock management. true|false
<has_auto_lock_time></has_auto_lock_time>
Defines whether a lock has an auto lock setting. A lock can auto lock after a set amount of time or not auto lock if time set to 0 – OFF: true|false
<has_custom_settings></has_custom_settings>
Defines whether the lock supports any custom settings that should be added to the list of standard proxy defined settings. See lock_custom_settings
data-to-ui: true|false
<has_date_range_schedule></has_date_range_schedule>
Defines whether the lock supports a date range schedule for users: true|false
<has_daily_schedule></has_daily_schedule>
Defines whether the lock supports a daily schedule for users: true|false
<has_internal_history></has_internal_history>
Defines whether the lock maintains its own list of log / history items: true|false
<has_language></has_language>
Defines whether the lock has a setting for different languages: true|false
<has_log_item_count></has_log_item_count>
Defines whether a lock has a setting for the number of log items to store for internal logging/history: true|false
<has_log_failed_attempts></has_log_failed_attempts>
Defines whether a lock has a setting for logging failed keypad unlock attempts: true|false
<has_lock_modes></has_lock_modes>
Defines whether the lock has a setting for different modes. Vacation mode prevents users from opening a lock using the keypad. Privacy mode prevents users from opening a lock using the keypad. However, if a key is used during privacy mode the lock resets to normal mode. Not all modes have to be supported. true|false
<has_one_touch_locking></has_one_touch_locking>
Defines whether the lock has a setting to allow one touch locking at the keypad without entering full key code: true|false
<has_schedule_lockout></has_schedule_lockout>
Defines whether a lock has a schedule lockout setting. The schedule lockout can be used to prevent all users from manually unlocking a lock using the lock's keypad. This is similar to privacy mode: true|false
<has_settings></has_settings>
Defines whether the lock supports any settings: true|false
<has_shutout_timer></has_shutout_timer>
Defines whether the lock has a setting for how long to disable lock keypad after failed attempts: true|false
<has_volume></has_volume>
Defines whether the lock has a setting for volume: true|false
<has_wrong_code_attempts</has_wrong_code_attempts>
Defines whether the lock has a setting for the number of failed unlock attempts to allow before temporarily disabling the lock: true|false
<is_management_only></is_management_only>
Defines whether the lock is only used for managing users A lock that is management only does not support the LOCK, UNLOCK, and TOGGLE commands: true|false
<language_values></language_values>
English, French, Spanish …: str
<lock_modes_values></lock_modes_values>
normal, vacation, privacy: str
<log_item_count_values></log_item_count_values>
Comma delimited list of increasing values: int
<max_users></max_users>
The maximum number of user that can be added to a lock: int
<shutout_timer_display_values></shutout_timer_display_values>
Comma delimited list of correlating display values: str
<shutout_timer_values></shutout_timer_values>
Comma delimited list of increasing values: int
<wrong_code_attempts_values> </wrong_code_attempts_values>
Comma delimited list of increasing values: int
Lock Conditionals
LOCK CONDITIONALS
The Lock Proxy supports the following conditionals:
IS_LOCKED
IS_UNKNOWN
IS_UNLOCKED
IS_FAULT
IS_BATTERY_NORMAL
IS_BATTERY_WARNING
IS_BATTERY_CRITICAL
Lock Events
LOCK EVENTS
The Lock Proxy fires the following events:
Locked (1) – UI, keypad or deadbolt.
Unlocked (2) – UI, keypad or deadbolt.
LockedManually (3) – Keypad or deadbolt.
UnlockedManually (4) – Keypad or deadbolt.
LockedProxy (5) - Locked via the Proxy.
UnlockedProxy (6) - Unlocked via the proxy.
Fault (7) -Door/Lock Jam Event. Battery too low.
BatteryNormal (8) - Battery state change from Normal.
BatteryWarning (9) - Battery state change from Warning.
BatteryCritical (10) - Battery state change from Critical.
Lock Variables
LOCK VARIABLES
The Lock Proxy supports the following variables:
LockStatus (1000) – STRING: unknown, locked, unlocked, fault
BatteryStatus (1001) – STRING: normal, warning, critical
LastActionDescription (1002) - STRING: Description of the last action for the lock. For example: "User opened Lock." "Lock was Toggled."
Pool Capabilities
The following Capabilities are supported with the Pool Proxy:
<aux_types></aux_types>
List of auxiliary types needed by the protocol driver. There are two types of auxiliary types supported: Toggle and List.
<pool_heat_modes></pool_heat_modes>
xml list of pool heat modes.
<pool_pump_modes></pool_pump_modes>
xml list of pool pump modes.
<spa_heat_modes></spa_heat_modes>
xml list of spa heat modes.
<spa_ pump_modes></spa_ pump_modes>
xml list of spa pump modes.
<temp_max></temp_max>
Should be entered as Fahrenheit value, it is automatically adjusted to Celsius when the pool is set to Celsius.
<temp_min></temp_min>
Should be entered as Fahrenheit value, it is automatically adjusted to Celsius when the pool is set to Celsius.
<provides_aux_list></provides_aux_list>
Should be true (false by default) when the pool controller device provides aux list to the driver.
This capability disables name and type changes in Auxiliary Controls card in Composer Pro.
Example
The example capabilities XML is from the Jandy Aqualink driver.
<capabilities>
<provides_aux_list>True</provides_aux_list>
<pool_pumpmodes>Off,On</pool_pumpmodes>
<spa_pumpmodes>Off,On</spa_pumpmodes>
<temp_min>34</temp_min>
<temp_max>104</temp_max>
<pool_heat_modes>
<mode>
<id>1</id>
<text>Heater</text>
<command>set_pool_heater</command>
</mode>
<mode>
<id>2</id>
<text>Solar Heater</text>
<command>set_solar_heater</command>
</mode>
</pool_heat_modes>
<spa_heat_modes>
<mode>
<id>1</id>
<text>Heater</text>
<command>set_spa_heater</command>
</mode>
</spa_heat_modes>
<aux_types>
<aux_type>
<type>TOGGLE</type>
<name>Toggle</name>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Jandy Colors</name>
<items>Off,Alpine White,Sky Blue,Cobalt Blue,Caribbean Blue,Spring Green,Emerald</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Pentair</name>
<items>Off,White,Light Green,Green,Cyan,Blue,Lavender,Magenta,Light Magenta,Color</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Hayward Color Logic</name>
<items>Off,Voodoo Lounge,Deep Blue Sea,Afternoon Skies,Emerald,Sangria,Cloud</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Jandy LED Water Colors</name>
<items>Off,Alpine White,Sky Blue,Cobalt Blue,Caribbean Blue,Spring Green</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Pentair Intellibright</name>
<items>Off,Sam,Party,Romance,Caribbean,American,California Sunset,Royal,Blue,Green,Red,White,Magenta</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>true</provides_selected_item>
<name>Dimmer</name>
<items>Off,25%,50%,75%,100%</items>
</aux_type>
</aux_types>
</capabilities>
Pool Conditionals
The Pool Proxy supports the following conditionals:
IF_AIR_TEMPERATURE
IF_BUTTON
IF_POOL_SETPOINT
IF_POOL_TEMPERATURE
IF_PUMPMODE
IF_SPA_MODE
IF_SPA_SETPOINT
IF_SPA_TEMPERATURE
Pool Events
The Pool Proxy fires the following events:
AirTemperatureChanged
AirModeChanged
PoolHeatModeChanged
PoolSetpointChanged
PoolTemperatureChanged
PumpModeChanged
ScaleChanged
SpaHeatModeChanged
SpaModeChanged
SpaSetpointChanged
SpaTemperatureChanged
Pool Proxy Commands
SET_AUX_MODE
Received from the proxy when the auxiliary mode has been changed.
Name
SET_AUX_MODE ()
Parameter | Type | Description |
---|---|---|
ID |
NUM | ID value of the auxiliary to set. |
MODE |
STR | ON/OFF |
Returns
None
SET_POOL_HEAT_MODE
Received from the proxy when pool het mode has been changed.
Name
SET_POOL_HEATMODE ()
Parameter | Description | Description |
---|---|---|
MODE |
STR | ON/OFF |
ID |
INT | Heat mode ID value |
Returns
None
SET_POOL_PUMP_MODE
Received from the proxy when pool pump mode has been changed.
Name
SET_POOL_PUMPMODE ()
Parameter | Description |
---|---|
PUMPMODE |
From : <pool_pumpmodes> capability. |
Returns
None
SET_POOL_SETPOINT
Received from the proxy when pool temperature etpoint has been changed.
Name
SET_POOL_SETPOINT ()
Parameter | Description | Description |
---|---|---|
SETPOINT |
INT | Temperature Value |
Returns
None
SET_SPA_HEAT_MODE
Received from the proxy when spa heat mode been changed.
Name
SET_SPA_HEATMODE ()
Parameter | Type | Description |
---|---|---|
MODE |
STR | ON/OFF |
ID |
INT | Heat mode ID |
Returns
None
SET_SPA_PUMP_MODE
Received from the proxy when spa pump mode has been changed.
Name
SET_SPA_PUMPMODE ()
Parameter | Description |
---|---|
PUMPMODE |
From : <SPA_pumpmodes> capability. |
Returns
None
SET_SPA_SETPOINT
Received from the proxy when Spa Setpoint has been changed.
Name
SET_SPA_SETPOINT ()
Parameter | Type | Description |
---|---|---|
SETPOINT |
INT | Temperature |
Returns
None
UPDATE_AUX_ITEM
Received from the proxy when the auxiliary id is changed in Auxiliary Controls card. The command should be received only when provides_aux_list capability is set to true.
Name
AUX_ITEM_UPDATED ()
Parameter | Type | Description |
---|---|---|
ID |
STR | Current aux ID |
NEW_ID |
STR | New aux ID |
Returns
None
ADD_AUX_ITEM
Received from the proxy when an auxiliary item is added by clicking on the + icon in Auxiliary Controls card. The command should be received only when provides_aux_list capability is set to true.
Name
AUX_ITEM_ADDED ()
Parameter | Type | Description |
---|---|---|
AUX_ID |
STR | ID of the aux added |
Returns
None
REMOVE_AUX_ITEM
Received from the proxy when an auxiliary item is removed by clicking on the - icon in Auxiliary Controls card. The command should be received only when provides_aux_list capability is set to true.
Name
AUX_ITEM_ADDED ()
Parameter | Description | Description |
---|---|---|
ID |
STR | ID of the aux removed |
Returns
None
Pool Protocol Notifications
AIR_TEMP_CHANGED
Sent to the proxy to indicate that the air temperature has changed
Name
AIR_TEMP_CHANGED ()
Parameter | Type | Description |
---|---|---|
TEMPERATURE |
NUM | Temperature value. |
Returns
None
Example
C4:SendToProxy(5001, "AIR_TEMP_CHANGED", {TEMPERATURE = 99})
AUX_NAMES_CHANGED
This notification provides a way to override capabilities.
Name
AUX_NAMES_CHANGED ()
Parameter | Type | Description |
---|---|---|
AUXNAMES |
BOOL | XML UPDATE LIST - True |
Returns
None
Example
<items>
<item>
<id>1</id>
<item_text>Pool Cleaner</item_text>
<type>Toggle</type>
</item>
<item>
<id>2</id>
<item_text>Low Speed Pump</item_text>
<type>Toggle</type>
</item>
<item>
<id>3</id>
<item_text>Spa Spillover</item_text>
<type>Toggle</type>
</item>
</items>
AUXMODE_CHANGED
Notification sent to the proxy to indicate whether Aux Buttons on the right side of the UI are On or Off. ID corresponds to the button name ID in the BUTTONNAMES notify. Mode Y is On, N is Off.
Name
AUXMODE_CHANGED ()
Parameter | Type | Description |
---|---|---|
ID |
INT | ID of auxiliary |
MODE |
STR | ON/OFF |
SELECTED |
LIST | For type LIST from <aux_types> <items> item selected if is provided by the device. |
Returns
None
Example
<aux_state>
<item>
<id>1</id>
<mode>ON</mode>
</item>
<item>
<id>6</id>
<mode>ON</mode>
<selected>50%</selected>
</item>
</aux_state>
HAS_AIR_CHANGED
Sent to the proxy to indicate that there is an outdoor air temperature available on this pool controller. Determines whether the outdoor temperature is shown on the Navigator UI.
Name
HAS_AIR_CHANGED ()
Parameter | Description | Description |
---|---|---|
HASAIR |
BOOL | (“True/False”) Is an outdoor air temperature available. |
Returns
None
Example
C4:SendToProxy(5001, "HASAIR_CHANGED", {HASAIR = "True"})
HAS_POOL_CHANGED
Sent to the proxy to indicate that there is a Pool available on this controller. If ‘False’, Pool Setpoint is unavailable to set.
Name
HAS_POOL_CHANGED ()
Parameter | Description | Description |
---|---|---|
HASPOOL |
BOOL | (“True/False”) Is a Pool available on this controller |
Returns
None
Example
C4:SendToProxy(5001, "HASPOOL_CHANGED", {HASPOOL = "True"})
HAS_SPA_CHANGED
Sent to the proxy to indicate that there is a Spa available on this controller. If ‘False’, Spa Setpoint is unavailable to set.
Name
HAS_SPA_CHANGED ()
Parameter | Type | Description |
---|---|---|
HASSPA |
BOOL | (“True/False”) Is a Spa available on this controller. |
Returns
None
Example
C4:SendToProxy(5001, "HASSPA_CHANGED", {HASSPA = "True"})
NUM_AUXS_CHANGED
Sent to the proxy to indicate the number of Aux Buttons available in ComposerPro, and on Navigator
Name
NUM_AUXS_CHANGED ()
Parameter | Type | Description |
---|---|---|
AUXS |
NUM | Maximum number of auxiliaries. |
Returns
None
Example
C4:SendToProxy(5001, "NUM_AUXS", {AUXS = 5}
POOL_PUMPMODES_ LIST_CHANGED
Sent to the proxy to indicate the number of Aux Buttons available in ComposerPro, and on Navigator
Name
POOL_PUMPMODES_LIST_CHANGED ()
Parameter | Type | Description |
---|---|---|
POOL_PUMPMODES |
LIST | Comma delimited list of Aux buttons. |
Returns
None
POOL_SETPOINT_CHANGED
Sent to the proxy to indicate that the setpoint on the pool controller has changed.
Name
POOL_SETPOINT_CHANGED ()
Parameter | DType | Description |
---|---|---|
SETPOINT |
NUM | New setpoint. |
Returns
None
Example
C4:SendToProxy(5001, "POOL_SETPOINT_CHANGED", {SETPOINT = 23})
POOL_TEMP_CHANGED
Sent to the proxy to indicate that the pool temperature has changed.
Name
POOL_TEMP_CHANGED ()
Parameter | Type | Description |
---|---|---|
TEMPERATURE |
NUM | New temperature value. |
Returns
None
Example
C4:SendToProxy(5001, "POOL_TEMP_CHANGED", {TEMPERATURE = 78})
POOL_HEATMODE_CHANGED
Sent to the proxy to indicate that the pool heat mode has changed.
Name
POOL_HEATMODE_CHANGED ()
Parameter | Description |
---|---|
XML |
HEATMODE. |
Returns
None
Example
<pool_heatstate>
<item>
<id>set_pool_heater</id>
<mode>ON</mode>
</item>
<item>
<id>set_solar_heater</id>
<mode>OFF</mode>
</item>
</pool_heatstate>`
POOL_HEATMODE_LIST_CHANGED
Sent to the proxy to indicate that the pool heat mode list has changed.
Name
POOL_HEATMODE_LIST_CHANGED ()
Parameter | Description |
---|---|
XML |
POOL_HEATMODE. |
Returns
None
Example
<pool_heat_modes>
<mode>
<id>1</id>
<text>Heater</text>
<command>set_pool_heater</command>
</mode>
<mode>
<id>2</id>
<text>Solar Heater</text>
<command>set_solar_heater</command>
</mode>
</pool_heat_modes>
PUMP_MODE_CHANGED
Sent to the proxy to indicate that the pump mode has changed.
Name
PUMP_MODE_CHANGED ()
Parameter | Description | Description |
---|---|---|
PUMPMODE |
BOOL | From <pool_pumpmodes> True/False |
Returns
None
Example
C4:SendToProxy(5001, "PUMP_MODE_CHANGED", {PUMPMODE = "True"})
SCALE_CHANGED
Sent to the proxy to indicate that the Temperature scale has changed.
Name
SCALE_CHANGED ()
Parameter | Type | Description |
---|---|---|
SCALE |
STR | “C” or “F” |
Returns
None
Example
C4:SendToProxy(5001, "SCALE_CHANGED", {SCALE = "C"})
SPA_HEATMODE_CHANGED
Sent to the proxy to indicate that the spa heat mode has changed.
Name
SPA_HEATMODE_CHANGED ()
Parameter | Description |
---|---|
XML |
HEATMODE. |
Returns
None
Example
XML:
id: from <command>
mode: OFF | ON | ENABLED
<spa_heatstate>
<item>
<id>set_spa_heater</id>
<mode>OFF</mode>
</item>
</spa_heatstate>
SPA_HEATMODES_LIST_CHANGED
This notification provides a way to override capabilities. It is sent to the proxy when the list of available spa heat modes has changed.
Name
SPA_HEATMODES_LIST_CHANGED ()
Parameter | Description |
---|---|
SPA_HEATPMODES |
XML. |
Returns
None
Example
XML
<spa_heat_modes>
<mode>
<id>1</id>
<text>Heater</text>
<command>set_spa_heater</command>
</mode>
</spa_heat_modes>
SPA_MODE_CHANGED
Sent to the proxy to indicate whether the ‘Spa’ Aux button on the right side of the UI is On or Off.
Name
SPA_MODE_CHANGED ()
Parameter | Type | Description |
---|---|---|
SPAMODE |
BOOL | From <spa_pumpmodes> True/False |
Returns
None
Example
C4:SendToProxy(5001, "SPA_MODE_CHANGED", {SPAMODE = "True"})
SPA_PUMPMODES_LIST_CHANGED
This notification provides a way to override capabilities. It is sent to the proxy when the list of available spa pump modes has changed
Name
SPA_PUMPMODES_LIST_CHANGED ()
Parameter | Description | Description |
---|---|---|
SPA_PUMPMODES |
LIST | Comma delimited list of available spa pump modes. |
Returns
None
SPA_SETPOINT_CHANGED
Sent to the proxy to indicate that the temperature setpoint on the spa controller has changed.
Name
SPA_SETPOINT_CHANGED ()
Parameter | Type | Description |
---|---|---|
SETPOINT |
NUM | New setpoint value. |
Returns
None
Example
C4:SendToProxy(5001, "SPA_SETPOINT_CHANGED", {SETPOINT = 103})
SPA_TEMP_CHANGED
Sent to the proxy to indicate that the spa temperature has changed.
Name
SPA_TEMP_CHANGED ()
Parameter | Type | Description |
---|---|---|
TEMPERATURE |
NUM | New temperature value. |
Returns
None
Example
C4:SendToProxy(5001, "SPA_TEMP_CHANGED", {TEMPERATURE = 105})
Pool Proxy UI Requests
GET_PROPERTIES
Obtains the pool driver’s property information.
Example
<pool_properties>
<hasair>True</hasair>
<hasspa>True</hasspa>
<haspool>True</haspool>
<aux_list>
<items>
<item>
<id>1</id>
<item_text>Auxiliary Control 1</item_text>
<type>Toggle</type>
</item>
<item>
<id>2</id>
<item_text>Auxiliary Control 2</item_text>
<type>Toggle</type>
</item>
<item>
<id>3</id>
<item_text>Auxiliary Control 3</item_text>
<type>Toggle</type>
</item>
<item>
<id>4</id>
<item_text>Auxiliary Control 4</item_text>
<type>Toggle</type>
</item>
<item>
<id>5</id>
<item_text>Jandy Color Aux 5</item_text>
<type>Light Dimmer Jandy Colors</type>
</item>
<item>
<id>6</id>
<item_text>Dimmer Aux 6</item_text>
<type>Dimmer</type>
</item>
<item>
<id>7</id>
<item_text>Auxiliary Control 7</item_text>
<type>Toggle</type>
</item>
<item>
<id>8</id>
<item_text>Auxiliary Control 8</item_text>
<type>Toggle</type>
</item>
</items>
</aux_list>
</pool_properties>
GET_STATE
Obtains the pool’s state.
Example
<pool_state>
<spamode>Off</spamode>
<pumpmode>On</pumpmode>
<pool_setpoint>86</pool_setpoint>
<spa_setpoint>102</spa_setpoint>
<pool_temp>79</pool_temp>
<spa_temp>-1</spa_temp>
<scale>F</scale>
<air_temp>79</air_temp>
<aux_state>
<item>
<id>1</id>
<mode>ON</mode>
</item>
<item>
<id>2</id>
<mode>OFF</mode>
</item>
<item>
<id>3</id>
<mode>OFF</mode>
</item>
<item>
<id>4</id>
<mode>OFF</mode>
</item>
<item>
<id>5</id>
<mode>OFF</mode>
</item>
<item>
<id>6</id>
<mode>ON</mode>
<selected>75%</selected>
</item>
<item>
<id>7</id>
<mode>ON</mode>
</item>
<item>
<id>8</id>
<mode>OFF</mode>
</item>
<item>
<id>9</id>
<mode>OFF</mode>
</item>
<item>
<id>10</id>
<mode>OFF</mode>
</item>
<item>
<id>11</id>
<mode>OFF</mode>
</item>
<item>
<id>12</id>
<mode>OFF</mode>
</item>
<item>
<id>13</id>
<mode>OFF</mode>
</item>
<item>
<id>14</id>
<mode>OFF</mode>
</item>
<item>
<id>15</id>
<mode>OFF</mode>
</item>
</aux_state>
<pool_heatstate>
<item>
<id>set_pool_heater</id>
<mode>ON</mode>
</item>
<item>
<id>set_solar_heater</id>
<mode>OFF</mode>
</item>
</pool_heatstate>
<spa_heatstate>
<item>
<id>set_spa_heater</id>
<mode>OFF</mode>
</item>
</spa_heatstate>
</pool_state>
GET_SETUP
Obtains the driver’s setup information.
Example
pool_setup>
<temp_min>34</temp_min>
<temp_max>104</temp_max>
<pool_pumpmodes>Off,On</pool_pumpmodes>
<spa_pumpmodes>Off,On</spa_pumpmodes>
<max_aux>15</max_aux>
<pool_heat_modes>
<mode>
<id>1</id>
<text>Heater</text>
<command>set_pool_heater</command>
</mode>
<mode>
<id>2</id>
<text>Solar Heater</text>
<command>set_solar_heater</command>
</mode>
</pool_heat_modes>
<spa_heat_modes>
<mode>
<id>1</id>
<text>Heater</text>
<command>set_spa_heater</command>
</mode>
</spa_heat_modes>
<aux_types>
<aux_type>
<type>TOGGLE</type>
<name>Toggle</name>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Jandy Colors</name>
<items>Off,Alpine White,Sky Blue,Cobalt Blue,Caribbean Blue,Spring Green,Emerald Green,Emerald Rose,Magenta,Garnet Red,Violet,Color Splash</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Pentair</name>
<items>Off,White,Light Green,Green,Cyan,Blue,Lavender,Magenta,Light Magenta,Color Splash</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Hayward Color Logic</name>
<items>Off,Voodoo Lounge,Deep Blue Sea,Afternoon Skies,Emerald,Sangria,Cloud White,Twilight,Tranquility,Gemstone,USA,Mardi Gras,Cool Cabaret</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Jandy LED Water Colors</name>
<items>Off,Alpine White,Sky Blue,Cobalt Blue,Caribbean Blue,Spring Green,Emerald Green,Emerald Rose,Magenta,Violet,Slow Color Splash,Fast Color Splash,USA,Fat Tuesday,Disco Tech</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>false</provides_selected_item>
<name>Light Dimmer Pentair Intellibright</name>
<items>Off,Sam,Party,Romance,Caribbean,American,California Sunset,Royal,Blue,Green,Red,White,Magenta</items>
</aux_type>
<aux_type>
<type>LIST</type>
<provides_selected_item>true</provides_selected_item>
<name>Dimmer</name>
<items>Off,25%,50%,75%,100%</items>
</aux_type>
</aux_types>
</pool_setup>
Pool Proxy Variables
POOL VARIABLES
The Pool Proxy supports the following variables:
AIR_TEMPERATURE
integer
POOL_HEATMODE
string
POOL_SETPOINT
integer
POOL_TEMPERATURE
integer
PUMPMODE
string
SCALE
string
SPAMODE
string
SPA_HEATMODE
string
SPA_SETPOINT
integer
SPA_TEMPERATURE
integer
Security Capabilities
The following Capabilities are supported by the Security Proxy:
button_list
Defines buttons to be displayed on UI panel along with IDs for Keypad. locCode defines button's column (A...Z) and row (1...9). For example, A3 indicates column 1 row 3. Width defines button width (in columns).
Parameter |
---|
True/False |
display_type
Define GUI display location and width.
Parameter | Description |
---|---|
locCode | location code |
width |
Example
<location>locCode</location>
<width>nWidth</width>
has_alrm_cleared_event
Alarm capable of generating an event when alarm is cleared.
Parameter |
---|
True/False |
has_alrm_event
Alarm capable of generating an event when activated
Parameter |
---|
True/False |
has_trouble_event
Alarm capable of generating an event when alarm trouble is detected.
Parameter |
---|
True/False |
Security Panel Commands
ADDITIONAL_PANEL_INFO
Command from the UI to the Proxy and then forwarded on to the Protocol. Has no Return values. This command will only be sent after having received a REQUEST_ADDITIONAL_INFO
notification from the protocol driver. The protocol driver will send the notification to the proxy driver, which will send a request_additional_info
DataToUI command to the UIs. The UIs will then prompt the user for additional info. After the information is entered, the UI will generate this command to send back to the protocol driver. See the REQUEST_ADDITIONAL_INFO
notification.
Parameter | Type | Description |
---|---|---|
Info | STR | A copy of the info_string parameter that was passed with the request_additional_info request. The protocol driver will need this to know what actions to return to when it gets the new info. |
FunctionName | STR | A copy of the function_name parameter that was passed with the request_additional_info request. The protocol driver may need this to know what actions to return to when it gets the new info. |
NewInfo | STR | The new info provided by the UI in response to the Request_additional_info request. |
InterfaceID | STR | A unique (str) to identify which interface is sending this command. |
Returns
None
GET_ALL_PGM_INFO
Request to return information about each PGM active on the panel. The information consists of its id and a flag indicating if it is currently opened.
Parameters
None
Return | Description | Description |
---|---|---|
PGM ID | INT | PGM ID |
BOOL | True, False: True if PGM is Open. |
GET_ALL_PARTITION_INFO
Request to return information to the panel proxy about each of its partitions. The information consists of its id, if it’s enabled, its binding id, and its current state.
Parameters
None
Return | Type | Description |
---|---|---|
Partition ID | INT | Partition ID |
BOOL | True, False: True if this partition is Open. | |
Binding ID | INT | Binding ID |
State | STR | State |
GET_ALL_ZONE_INFO
Request to return information about each zone on the panel. The information consists of its id, name, type_id, and a list of partitions the zone is included in, a flag indicating if it can be bypassed, and a flag indicating if it is currently opened.
Parameters
None
Return | Type | Description |
---|---|---|
ZONE ID | INT | Zone ID |
ZONE NAME | STR | Zone Name |
ZONE TYPE | INT | Zone Type ID |
TABLE | Partitions the Zone is included in. | |
BOOL | True, False: True if Zone can be bypassed. | |
TBOOL | True, False: True if Zone is currently Open. | |
State | STR | State |
GET_PANEL_SETUP
Calls [GET_ALL_PARTITION_INFO\]1
PGM_CLOSE
Sends an ‘close’ command to the targeted PGM.
Parameter | Description | Description |
---|---|---|
PGM ID | PINT | The id of the targeted PGM. |
PGM_OPEN
Sends an ‘open’ command to the targeted PGM.
Parameter | Type | Description |
---|---|---|
PGM ID | INT | The id of the targeted PGM. |
PGM_TOGGLE
Sends an ‘toggle’ command to the targeted PGM.
Parameter | Type | Description |
---|---|---|
PGM ID | INT | The id of the targeted PGM. |
PGM_TRIGGER
Sends an ‘trigger’ command to the targeted PGM.
Parameter | Description | Description |
---|---|---|
PGM ID | INT | The id of the targeted PGM. |
READ_PANEL_INFO
Send a command to the panel to read its partition and zone information.
SET_PANEL_TIME_DATE
Set the current date and time on the panel. This command is only available if the ‘can_set_time’ capability is set to ‘true’.
Parameter | Type | Description |
---|---|---|
YEAR | INT | The current year (4 digits) |
MONTH | INT | The current month (2 digits 01-12) |
DAY | INT | The current day of the month (2 digits 01-31) |
HOUR: | INT | The current hour in 24-hour time (2 digits 00-23) |
MINUTE | INT | The current minute in the hour (2 digits 00-59) |
SECOND | INT | The current second in the minute (2 digits 00-59) |
INTERFACE ID: | STR | Unique string ID indicating from where the command originated. |
SET_PARTITION_ENABLED
Set a flag to designate whether or not the specified partition is currently enabled. This command is only available if the ‘can_activate_partitions’ capability is set to ‘true’.
Parameter | Type | Description |
---|---|---|
PARTITION ID | STR | PARTITION ID: The id number of the targeted partition. |
ENABLED | BOOL | ENABLED ‘True’ if this partition should now be enabled, False if not. |
SEND_PGM_COMMAND
Send a command to a PGM on the panel.
Parameter | Type | Description |
---|---|---|
PGM ID | INT | The id of the targeted PGM. |
ENABLED | BOOL | ‘True’ if this partition should now be enabled, False if not. |
COMMAND | STR | Possible commands are: ‘open’, ‘close’, ‘toggle’, and ‘trigger’. |
SET_ZONE_INFO
Set the information about a specified zone in the driver.
Parameter | Description |
---|---|
int | ZONE_ID: The id of the targeted zone. |
str | NAME: The name by which we will now refer to this zone. |
str | TYPE_ID: The type of zone that the Control4 project will consider this zone. This will determine which icons will show up when it is referenced. Valid values are: |
”CONTACT_SENSOR" | |
”EXTERIOR_DOOR" | |
“EXTERIOR_WINDOW" | |
“INTERIOR_DOOR" | |
"MOTION_SENSOR" | |
"FIRE" | |
"GAS" | |
"CARBON_MONOXIDE" | |
"HEAT" | |
"WATER" | |
"SMOKE" | |
"PRESSURE" | |
"GLASS_BREAK" | |
"GATE" | |
"GARAGE_DOOR" | |
bool | DATA_GUARDED: ‘True’ if these new settings should be protected so that information from the panel doesn’t overwrite them. |
str | INTERFACE_ID: Unique string ID indicating from where the command originated. |
Security Panel Capabilities
The following Capabilities are supported with the Security System Controller Panel:
<can_set_time></can_set_time>
Defaults to true.
<can_activate_partitions></can_activate_partitions>
Defaults to true.
Security Panel Conditionals
The following Conditionals are supported with the Security System Controller Panel. System programming conditionals are handled by the proxy and return a true or false:
IN_TROUBLE
: Returns True if the system is currently in a TROUBLE state.
Security Panel Events
The following Events are supported with the Security System Controller Panel.
TROUBLE
: Fired when the security panel receives a TROUBLE notification.
TROUBLE_CLEAR
: Fired when the TROUBLE state is cleared.
Security Panel Notifications
Overview
Sending Protocol Notifications requires the use of the SendToProxy API.
The first parameter for C4:SendToProxy is a binding id. The API doesn't not recognize Partition Ids. The assumption is made that the panel binding defined in driver.xml is on binding id 5001. Then partition 1 is on binding id 5002, partition 2 on 5003, etc.
The second parameter is the text of the particular notification being sent. The Proxy knows the information being sent based off of this text. For example, when the parameter "PARTITION_ENABLED" is sent through SendtoProxy, the Camera proxy knows parameter type information that "PARTITION_ENABLED" should contain.
The third parameter is a table of the parameters for the particular notification. In this case, the PARTITION_ENABLED notification takes one parameter named "ENABLED". Its value is either "true" or "false". Note that the third parameter could also be sent as a string rather than a table. In this case the are no parameter names. The whole string is just interpreted as data for the notification. This usage is mostly deprecated, but some notifications (such as DISPLAY_TEXT) started out doing this and have never been changed so they don't break backward compatibility.
The fourth parameter is just the word "NOTIFY". This is just some extra information for BindingManager so it won't try to make assumptions about the type of message based on binding ids. It is recommended that it is included in C4:SendToProxy.
To the right are an examples fully formed PANEL_ZONE_STATE and ALL_ZONES_INFO Notifications being sent using the SendToProxy API.
-- PANEL_ZONE_STATE Example
function SendZoneState(ZoneId, IsOpen, AreInitializing)
C4:SendToProxy( 5001,
"PANEL_ZONE_STATE",
{ ZONE_ID = ZoneId,
ZONE_OPEN = IsOpen,
INITIALIZING = AreInitializing
},
"NOTIFY"
)
end
-- ALL_ZONES Example
function SendAllZoneInfo()
local ZoneInfoXMLStr =
[[<zones>
<zone>
<id>1</id>
<name>Back Door</name>
<type_id>2</type_id>
<partitions></partitions>
<can_bypass>false</can_bypass>
<is_open>false</is_open>
</zone>
<zone>
<id>2</id>
<name>Front Door</name>
<type_id>2</type_id>
<partitions></partitions>
<can_bypass>false</can_bypass>
<is_open>false</is_open>
</zone>
<zone>
<id>3</id>
<name>Back Window</name>
<type_id>3</type_id>
<partitions></partitions>
<can_bypass>true</can_bypass>
<is_open>true</is_open>
</zone>
<zone>
<id>4</id>
<name>Zone 4</name>
<type_id>5</type_id>
<partitions></partitions>
<can_bypass>true</can_bypass>
<is_open>false</is_open>
</zone>
</zones>]]
C4:SendToProxy( 5001,
"ALL_ZONES_INFO",
ZoneInfoXMLStr,
"NOTIFY"
)
end
ALL_PGMS_INFO
Sends and XML string of all PGMs (relays) and respective PGM information.
Parameter | Description |
---|---|
xml | XML data. See example. |
Example
<pgms>
<pgm>
<id>1</id>
<is_open>true</is_open>
</pgm>
<pgm>
<id>2</id>
<is_open>false</is_open>
</pgm>
<pgm>
<id>3</id>
<is_open>false</is_open>
</pgm>
</pgms>
ALL_ZONES_INFO
Sends and XML string of all zones and respective zone information.
Parameter | Description |
---|---|
xml | XML data. See example. |
Example
<zones>
<zone>
<id>1</id>
<name>Back Door</name>
<type_id>2</type_id>
<partitions></partitions>
<can_bypass>false</can_bypass>
<is_open>false</is_open>
</zone>
<zone>
<id>2</id>
<name>Front Door</name>
<type_id>2</type_id>
<partitions></partitions>
<can_bypass>false</can_bypass>
<is_open>false</is_open>
</zone>
<zone>
<id>3</id>
<name>Back Window</name>
<type_id>3</type_id>
<partitions></partitions>
<can_bypass>true</can_bypass>
<is_open>true</is_open>
</zone>
<zone>
<id>4</id>
<name>Zone 4</name>
<type_id>5</type_id>
<partitions></partitions>
<can_bypass>true</can_bypass>
<is_open>false</is_open>
</zone>
</zones>
PANEL_ADD_PGM
Add a PGM (relay) to the panel.
Parameter | Description | Description |
---|---|---|
PGM ID | NUM | ID of the new PGM |
Example
C4:SendToProxy(TargetBindingID, "PANEL_ADD_PGM", { PGM_ID = 1 }, "NOTIFY")
SYNC_PANEL_INFO
Tells the Panel proxy that the hardware has been initialized and is ready to function.
Parameters
None
Example
C4:SendToProxy(TargetBindingID, "PANEL_INITIALIZED", {}, "NOTIFY")
PANEL_PARTITION_STATE
Lets the panel know the state of the given partition. This is used in the Properties display in ComposerPro.
Parameter | Type | Description |
---|---|---|
PARTITION ID | NUM | ID of the target partition. |
STATE | STR | A string listing its state. Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT_READY" "CONFIRMATION_REQUIRED" |
TYPE | STR | Further information on the state. For example, it could be "Stay" for a type of ARMED. It could be "Burglary" for a type of ALARM. Can be "" if not needed. |
Example
C4:SendToProxy(5001, "PANEL_PARTITION_STATE", {PARTITION_ID = 2, STATE = "ARMED", TYPE = "Stay"}, "NOTIFY")
PANEL_PGM_STATE
Current status of a PGM (relay): open or closed
Parameter | Type | Description |
---|---|---|
PGM ID | NUM | ID of the target PGM |
PGM OPEN | BOOL | "true" if the PGM is opened. "false" if it is closed. |
INITIALIZING | BOOL | "true" if the PGM is initializing. This will prevent programming from firing. |
Example
C4:SendToProxy(TargetBindingID, "PANEL_PGM_STATE", { PGM_ID = 1, PGM_OPEN = true, INITIALIZING = false }, "NOTIFY")
PANEL_REMOVE_PGM
Remove a PGM (relay) from the panel.
Parameter | Type | Description |
---|---|---|
PGM ID | NUM | ID of the PGM being removed |
Example
C4:SendToProxy(TargetBindingID, "PANEL_REMOVE_PGM", { PGM_ID = 1 }, "NOTIFY")
PANEL_REMOVE_ ZONE
Remove a zone from the panel.
Parameter | Description | Description |
---|---|---|
ID | NUM | ID of the target zone. |
Example
C4:SendToProxy(TargetBindingID, "PANEL_REMOVE_ZONE", { ID = 2}, "NOTIFY")
PANEL_ZONE_INFO
Information about a given zone that Navigator or Composer can display.
Parameter | Description | |
---|---|---|
num | ID: ID of the target zone. | |
str | NAME: The zone's name either read from the panel or assigned by the user. Will default to "Zone NN" | |
num | TYPE ID: The type of zone so that the Control4 system can map its sensor binding to a type of sensor. Current valid types with their ids are: | |
UNKNOWN = 0 | ||
CONTACT SENSOR= 1 | ||
EXTERIOR DOOR= 2 | ||
EXTERIOR WINDOW= 3 | ||
INTERIOR DOOR = 4 | ||
MOTION SENSOR = 5 | ||
FIRE = 6 | ||
GAS = 7 | ||
CARBON MONOXIDE = 8 | ||
HEAT = 9 | ||
WATER = 10 | ||
SMOKE = 11 | ||
PRESSURE = 12 | ||
GLASSBREAK= 13 | ||
GATE = 14 | ||
GARAGE DOOR = 15 | ||
str | PARTITIONS: Comma-delimited string of numbers indicating which partitions this zone is a member of. For example, if this zone is included in both partitions 1 and 3, the string would be "1,3" | |
bool | IS\_OPEN: "true" = open. "false" = closed. |
Example
C4:SendToProxy(TargetBindingID, "PANEL_ZONE_INFO", { ID = 2, NAME = "ENTRYWAY", TYPE_ID = 5, PARTITIONS = "1,3", IS_OPEN = true}, "NOTIFY")
PANEL_ZONE_STATE
Sends the current status of a zone: open or closed.
Parameter | Type | Description |
---|---|---|
ZONE ID | NUM | ID of the target zone |
ZONE OPEN | BOOL | "true" if the zone is opened. "false" if it is closed. |
INITIALIZING | BOOL | "true" if the zone is initializing. This will prevent programming from firing. |
Example
C4:SendToProxy(TargetBindingID, "PANEL_ZONE_STATE", { ZONE_ID = 1, ZONE_OPEN = true, INITIALIZING = false }, "NOTIFY")
REQUEST_ADDITIONAL_PANEL_INFO
This is a notification that can allow two-way communication with the keypad. This command will cause Navigator to bring up the keypad screen with the prompt string. After the user types in something on the keypad, it will be returned to our driver through the ADDITIONAL_PANEL_INFO command.
Parameter | Description |
---|---|
str | PROMPT: The prompt string that will show up above the keypad on the Navigator string. |
str | INFO_STRING: This is a string that will not be shown to the user, but will be returned with the ADDITIONAL_INFO command. It is a way that information can be built up through multiple iterations of calls to REQUEST_ADDITIONAL_PANEL_INFO |
str | FUNCTION_NAME: This will not be shown to the user but will also be returned with the ADDITIONAL_INFO command. It is the function name of the handler in the driver code that should be called when the new information arrives. |
bool | MASK_DATA: “true" if the information being entered on the screen (such as a user code) should not be readable. If the flag is true, then each character will show up on the Navigator screen as a dot. |
str | INTERFACE_ID: Unique identification string for one of the UIs that the prompt will appear on. |
Example
C4:SendToProxy(TargetBindingID, "REQUEST_ADDITIONAL_PANEL_INFO", { PROMPT =
promptstring, INFO_STRING = infostring, FUNCTION_NAME = functionstring, MASK_DATA = true, INTERFACE_ID = interfaceid }, "NOTIFY")
SYNC_PANEL_INFO
This is a request to the proxy driver to re-send all of the information it has about the panel to ensure synchronization.
Parameters
None
Example
C4:SendToProxy(TargetBindingID, "SYNC_PANEL_INFO", {}, "NOTIFY")
TROUBLE_CLEAR
Clear the trouble flag.
Parameter | Type | Description |
---|---|---|
IDENTIFIER | NUM | Unique number for the trouble instance that has been resolved. |
Example
C4:SendToProxy(TargetBindingID, "TROUBLE_CLEAR", { IDENTIFIER = 10 }, "NOTIFY")
TROUBLE_START
List trouble that the panel is having on the Composer Property Page and on each of the Navigator partition screens.
Parameter | Type | Description |
---|---|---|
TROUBLE TEXT | STR | Text listing the type of trouble. “For example: “Battery", "Communication", etc.) |
DENTIFIER | NUM | Unique number for this instance of trouble. |
Example
C4:SendToProxy(TargetBindingID, "TROUBLE_START", { TROUBLE_TEXT = "Battery", IDENTIFIER = 10 }, "NOTIFY")
Security Panel Variables
The Security System Controller Panel supports the following variable:
TROUBLE_TEXT
String representing the text which will be displayed.
Security Partition Capabilities
The following Capabilities are supported with the Security System Controller Partition:
ui_version
Integer. Defaults to 2.
A value of 2 means that the new user interface is used. If the interface changes in the future, this number may increase again.
arm_states
Comma Delimited String.
A comma delimited string containing the possible arm states this system supports.
has_fire
Boolean. Defaults to false.
True if this partition supports the “Fire” emergency button. If True, Navigator will show a fire emergency icon.
has_medical
Boolean. Defaults to false.
True if this partition supports the “Medical” emergency button. If True, Navigator will show a medical emergency icon.
has_police
Boolean. Defaults to false.
True if this partition supports the “Police” emergency button. If True, Navigator will show a police emergency icon.
has_panic
Boolean. Defaults to false.
True if this partition supports the “Panic” emergency button. If True, Navigator will show a fire emergency icon.
functions
Comma Delimited String. Default to ""
A comma delimited string containing the functions supported by the protocol driver. Navigator will show these under its 'Functions' button on the main screen. When one of the functions are selected a command will be sent to the driver with the function name. It is up to the driver writer to implement that function.
star_label
string Default to *
The text that will be shown on the * button
on the keypad.
pound_label
string Default to “#”
The text that will be shown on the # button on the keypad.
button_A
xml string
<visible\>true\</visible\>
Designates whether button “A” will be visible on the UI keypad.
<label>This is Button A</label>
The text that will appear on button “A” on the UI keypad (if visible) Defaults to “A”
button_B
xml string
<visible\>true\</visible>
Designates whether button “B” will be visible on the UI keypad.
<label>This is Button B</label>
The text that will appear on button “B” on the UI keypad (if visible)
Defaults to “B”
button_C
xml string
<visible>true</visible>
Designates whether button “C” will be visible on the UI keypad.
<label>This is Button C</label>
The text that will appear on button “C” on the UI keypad (if visible)
Defaults to “C”
button_D
xml string
<visible>true</visible>
Designates whether button “D” will be visible on the UI keypad.
<label>This is Button D</label>
The text that will appear on button “D” on the UI keypad (if visible)
Defaults to “D”
supports_virtual_keypad
Boolean Defaults to true.
True if the panel supports raw key presses being passed by the software directly to the hardware; usually used for panel programming or setup. Navigator will provide the user a page that has the keypad on it.
Security Partition Conditionals
The following Conditionals are supported with the Security System Controller Partition. System programming conditionals are handled by the proxy and return a true or false:
CURRENT_ARM_STATUS
Parameter | Description |
---|---|
== | equal |
!= | not equal |
ARM STATE | One of the possible arm states listed in the arm_states configuration entry. These values are defined in the partition driver’s capabilities XML. See arm_states for more information. |
IS_ALARM
Returns true if the current state is ALARM.
IS_ARMED
Returns true if the current state is ARMED, ENTRY DELAY, EXIT DELAY or ALARM
IS_AWAY
Returns true if the partition is armed for away. Note this has been deprecated and is present for backwards compatibility purposes.
IS_DISARMED
Returns true if the partition is currently disarmed (states DISARMED READY or DISARMED NOT READY).
IS_HOME
Returns true if the partition is armed for home (states HOME or Stay). Note this has been deprecated and is present for backwards compatibility purposes.
IS_IN_ENTRY_DELAY
Returns true if the current state is ENTRY DELAY
IS_IN_EXIT_DELAY
Returns true if the current state is EXIT DELAY
PREVIOUS_ARM_STATUS
Same as CURRENT_ARM_STATUS
but used to compares with the arm status before the last state change.
Parameter | Description |
---|---|
== | equal |
!= | not equal |
ARM STATE | One of the possible arm states listed in the arm_states configuration entry. These values are defined in the partition driver’s capabilities XML. See arm_states for more information._ |
Security Partition Events
The following Events are supported with the Security System Controller Partition.
ALARM
Fired when the partition enters an alarm state.
ALARM_CLEAR
Fired when the partition leaves an alarm state.
ARM_FAILED
Fired when an attempt to arm the partition failed
ARMED
Fired when the partition is armed.
AWAY
Fired when the partition is armed for Away. Will be deprecated.
DISARMED
Fired when the partition is disarmed.
DISARM_FAILED
Fired when an attempt to disarm the partition failed
EMERGENCY_TRIGGERED
Fired when an emergency is triggered that doesn't change the alarm state.
HOME
Fired when the partition is armed for Home. Will be deprecated.
PARTITION_STATE_CHANGE
Fired when the partition state changes
Security Partition Notifications
Overview
Sending Protocol Notifications requires the use of the SendToProxy API.
The first parameter for C4:SendToProxy is a binding id. The API doesn't not recognize Partion Ids. The assumption is made that the panel binding defined in driver.xml is on binding id 5001. Then partition 1 is on binding id 5002, partition 2 on 5003, etc.
The second parameter is the text of the particular notification being sent. The Proxy knows the information being sent based off of this text. For example, when the parameter "PARTITION_ENABLED" is sent through SendtoProxy, the Camera proxy knows parameter type information that "PARTITION_ENABLED" should contain.
The third parameter is a table of the parameters for the particular notification. In this case, the PARTITION_ENABLED notification takes one parameter named "ENABLED". Its value is either "true" or "false". Note that the third parameter could also be sent as a string rather than a table. In this case the are no parameter names. The whole string is just interpreted as data for the notification. This usage is mostly deprecated, but some notifications (such as DISPLAY_TEXT) started out doing this and have never been changed so they don't break backward compatibility.
The fourth parameter is just the word "NOTIFY". This is just some extra information for BindingManager so it won't try to make assumptions about the type of message based on binding ids. It is recommended that it is included in C4:SendToProxy.
To the right is an example of a fully formed Partition_Enabled Notifications being sent using the SendToProxy API.
-- Partition_Enabled Example
function SetPartitionEnabled(PartitionID, Enabled)
local TargetBindingID = PartitionID + 5001
C4:SendToProxy(TargetBindingID, "PARTITION_ENABLED", { ENABLED = tostring(Enabled) }, "NOTIFY")
end
ARM_FAILED
An attempt to arm the partition failed. The two most common reasons are because a user code is required to arm this partition or because one or more un-bypassed zones are open.
Parameter | Type | Description |
---|---|---|
ACTION | STR | Supported values include: “keypad”: Will cause Navigator to ask for a user code and then retry. “bypass”: Will cause Navigator to show a list of zones that are in fault and ask the user if they wish to continue. If continue chosen, the arm command will be resent. However, it will try to bypass each faulted zone before it tries to arm again. “NA”: Failed for some other reason. Navigator will take no further action on the arming. |
INTERFACE ID | STR | Commands receiveD from Director will have an interface\_id string sent as one of the parameters. This is a unique string that identifies where the command originated. When a response such as a failure is sent, it should only display on the UI that originated the command. To support this, the INTERFACE ID string is sent back with the notification. Only the original UI will show the results of this notification. |
Example
C4:SendToProxy(TargetBindingID, "ARM_FAILED", { ACTION = "bypass" }, "NOTIFY")
CLEAR_ZONE_LIST
Removes all the zones from a partition's list. Usually precedes new messages that will build that list back up.
Parameters
None
Example
C4:SendToProxy(TargetBindingID, "CLEAR_ZONE_LIST", {}, "NOTIFY")
CODE_REQUIRED
Sets a flag that Navigator will use when an arm command is attempted. If the flag is true, Navigator will ask for a user code before it sends the arm command.
Parameter | Type | Description |
---|---|---|
CODE REQUIRED TO ARM: | BOOL | “true" if the user code should be sent with the arm command. |
Example
C4:SendToProxy(TargetBindingID, "CODE_REQUIRED", { CODE_REQUIRED_TO_ARM = true }, "NOTIFY")
DISARM_FAILED
Notification sent when an attempt to disarm the panel failed. This is typically due to an invalid user code.
Parameter | Description | Description |
---|---|---|
INTERFACE ID | STR | Commands receiveD from Director will have an interface id string sent as one of the parameters. This is a unique string that identifies where the command originated. When a response such as a failure is sent, it should only display on the UI that originated the command. To support this, the INTERFACE ID string is sent back with the notification. Only the original UI will show the results of this notification. |
Example
C4:SendToProxy(TargetBindingID, "DISARM_FAILED", { INTERFACE_ID = ID }, "NOTIFY")
EMERGENCY_TRIGGERED
An emergency was triggered, either from a sensor or by the user hitting one of the emergency buttons.
Parameter | Type | Description |
---|---|---|
TYPE | STR | Specifies the type of emergency just triggered. It can be anything, but standard types that Navigator has icons for are: Fire, Medical, Police, and Panic. |
Example
C4:SendToProxy(TargetBindingID, "EMERRGENCY_TRIGGERED", { TYPE = "Fire" }, "NOTIFY")
HAS_ZONE
Tells the proxy that a particular zone is part of this partition.
Parameter | Type | Description |
---|---|---|
ZONE ID: | NUM | The zone ID of the zone to be included in this partition's zone list. |
Example
C4:SendToProxy(TargetBindingID, "HAS_ZONE", { ZONE_ID = 2 }, "NOTIFY")
PARTITION_ENABLED
It's possible to have partitions defined on a panel that aren't enabled. They still must have a proxy defined for them, but it is possible to specify whether they are currently in use or not.
Parameter | Type | Description |
---|---|---|
ENABLED | BOOL | "true" if this partition is enabled. |
Example
C4:SendToProxy(TargetBindingID, "PARTITION_ENABLED", { ENABLED = tostring(Enabled) }, "NOTIFY")
PARTITION_STATE
Specifies which state the partition is currently in.
Parameter | Description | Description |
---|---|---|
STATE | STR | Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT\\\_READY" "CONFIRMATION_REQUIRED" |
TYPE | STR | Further information on the state. For example, it could be "Stay" for a type of ARMED. It could be "Burglary" for a type of ALARM. Can be "" if not needed. |
DELAY TIME TOTAL: | NUM | For Entry or Exit delays. The total time of the delay. |
DELAY TIME REMAINING | NUM | For Entry or Exit delays, the time remaining in the delay. |
CODE REQUIRED TO CLEAR | BOOL | "true" if a user code is now required from Navigator to change from the current state. |
Example
C4:SendToProxy(TargetBindingID, "PARTITION_STATE", { STATE = "ALARM", TYPE = "BURGLARY", DELAY_TIME_TOTAL = 5, DELAY_TIME_REMAINING = 2, CODE_REQUIRED_TO_CLEAR = true }, "NOTIFY")
PARTITION_STATE_INIT
Specifies which state the partition is currently in but will not cause any of the programming to be fired.
Parameter | Type | Description |
---|---|---|
STATE | STR | Supported values include: "ARMED" "ALARM" "OFFLINE" "EXIT_DELAY" "ENTRY_DELAY" "DISARMED_READY" "DISARMED_NOT_READY" "CONFIRMATION_REQUIRED" |
TYPE | STR | Further information on the state. For example, it could be "Stay" for a type of ARMED. It could be "Burglary" for a type of ALARM. Can be "" if not needed. |
DELAY TIME TOTAL: | NUM | For Entry or Exit delays. The total time of the delay. |
DELAY TIME REMAINING | NUM | For Entry or Exit delays, the time remaining in the delay. |
CODE REQUIRED TO CLEAR | BOOL | "true" if a user code is now required from Navigator to change from the current state. |
Example
C4:SendToProxy(TargetBindingID, "PARTITION_STATE_INIT", { STATE = "ALARM", TYPE = "BURGLARY", DELAY_TIME_TOTAL = 5, DELAY_TIME_REMAINING = 2, CODE_REQUIRED_TO_CLEAR = true}, "NOTIFY")
REQUEST_ADDITIONAL_INFO
This notification allowS two-way communication with the keypad. This command will cause Navigator to bring up the keypad screen with the prompt string. After the user types in something on the keypad, it will be returned to the driver through the ADDITIONAL_INFO command.
Parameter | Type | Description |
---|---|---|
INFO STRING | STR | This is a string that will not be shown to the user, but will be returned with the ADDITIONAL\_INFO command. It provides a way for information to be built up through multiple iterations of calls to REQUEST_ADDITIONAL_INFO |
FUNCTION NAME | STR | This will not be shown to the user but will also be returned with the ADDITIONAL INFO command. It is the function name of the handler in the driver code that should be called when the new information arrives. |
MASK\_DATA: | STR | “true" if the information being entered on the screen (such as a user code) should not be readable. If the flag is true, then each character will show up on the Navigator screen as a dot. |
INTERFACE ID | BOOL | Commands received from Director will have an interface\_id string sent as one of the parameters. This is a unique string that identifies where the command originated. When a response such as a failure is sent, it should only display on the UI that originated the command. To support this, the INTERFACE ID string is sent back with the notification. Only the original UI will show the results of this notification. |
INTERFACE ID | STR | Commands received from Director will have an interface\_id string sent as one of the parameters. This is a unique string that identifies where the command originated. When a response such as a failure is sent, it should only display on the UI that originated the command. To support this, the INTERFACE ID string is sent back with the notification. Only the original UI will show the results of this notification. |
Example
C4:SendToProxy(TargetBindingID, "REQUEST_ADDITIONAL_INFO", { PROMPT =
promptstring, INFO_STRING = infostring, FUNCTION_NAME = functionstring, MASK_DATA = true, INTERFACE_ID = interfaceid }, "NOTIFY")
REQUEST_DEFAULT_USER_CODE_
The proxy code stores the default user code if it exists for the partition. When the proxy is first bound to the protocol driver, it will send that code to the protocol driver. However, we found that when a driver is updated, that call was not being made, so we added a mechanism for the protocol driver to initiate the communication to get that code. This is new in 3.2
Available from 3.2.0
Parameters
None
Example
C4:SendToProxy(TargetBindingID, "REQUEST_DEFAULT_USER_CODE", {}, "NOTIFY")
REMOVE_ZONE
Tells the proxy that a particular zone is no longer a part of this partition.
Parameter | Type | Description |
---|---|---|
ZONE ID | NUM | The zone ID of the zone to be removed from the partition's zone list. |
Example
C4:SendToProxy(TargetBindingID, "REMOVE_ZONE", { ZONE_ID = 1 }, "NOTIFY")
ZONE_STATE
Reports if a specific zone is open/closed and bypassed/un-bypassed.
Parameter | Description | Description |
---|---|---|
ZONE ID | NUM | Number |
ZONE OPEN | BOOL | "true" if the zone is opened. "false" if it is closed. |
ZONE BYPASSED | BOOL | "true" if the zone is bypassed. "false" if it is not bypassed. |
Example
C4:SendToProxy(TargetBindingID, "ZONE_STATE", { ZONE_ID = 1, ZONE_OPEN = true, ZONE_BYPASSSED = false }, "NOTIFY")
Security Partition Commands
ADDITIONAL_INFO
This command will only be sent after having received a REQUEST_ADDITIONAL_INFO
notification from the protocol driver. The protocol driver will send the notification to the proxy driver, which will send a request_additional_info
DataToUI command to the UIs. The UIs will then prompt the user for additional info. After the information is entered, the UI will generate this command to send back to the protocol driver. See the REQUEST_ADDITIONAL_INFO
notification.
Parameter | Description | Description |
---|---|---|
Info | STR | A copy of the info_string parameter that was passed with the request_additional_info request. The protocol driver will need this to know what actions to return to when it gets the new info. |
FunctionName | STR | A copy of the function_name parameter that was passed with the request_additional_info request. The protocol driver may need this to know what actions to return to when it gets the new info. |
NewInfo | STR | The new info provided by the UI in response to the equest_additional_info request. |
InterfaceID | STR | A unique (str) to identify which interface is sending this command. |
ARM_CANCEL
Cancel an uncompleted arm command.
Parameter | Type | Description |
---|---|---|
InterfaceID | STR | A unique string to identify which interface is sending this command. |
EXECUTE_EMERGENCY
Requests the partition to execute an emergency event of the type specified by the EmergencyType parameter. Valid values are: Fire, Medical, Police, and Panic.
Parameter | Type | Description |
---|---|---|
STR | A unique string to identify which interface is sending this command. | |
Interface ID | STR | I Unique string ID indicating from where the command originated |
EXECUTE_FUNCTION
Request the partition to execute a function event of the type listed in the functions capability. The function parameter would be one of the function strings listed in the <functions> capability
Parameter | Description | Description |
---|---|---|
Function | STR | Function string |
InterfaceID | STR | A unique string to identify which interface is sending this command. |
KEY_PRESS
Specifies that a key (button) was pressed on the UI interface. But different from BUTTON_PRESS
, the actual key name is passed rather than its ID.
Parameter | Description | Description |
---|---|---|
Key Name | STR | The single key that we should emulate a press for. |
InterfaceID | STR | A unique string to identify which interface is sending this command. |
SET_DEFAULT_USER_CODE
The default user code that this driver should use when it receives arm and disarm commands that originated from programming.
Parameter | Description |
---|---|
str | Code |
PARTITION_ARM
Specifies the user code to use with the arm command (if needed).
Parameter | Type | Description |
---|---|---|
ArmType | STR | Request the partition to arm. |
UserCode | STR | Optional. Specifies the user code to use with the arm command (if needed). |
Bypass | BOOL | Optional. Specify whether currently open zones should be bypassed. |
InterfaceID | STR | A unique string to identify which interface is sending this command. |
PARTITION_DISARM
Specifies the user code to use with the DISARM command (if needed).
Parameter | Type | Description |
---|---|---|
User Code: | STR | The user code needed for disarming. |
InterfaceID | STR | A unique string to identify which interface is sending this command. |
Security Partition States
SECURITY SYSTEM CONTROLLER PARTITION STATES
The following States are supported by the Security System Controller Partition. These states were added to the Proxy in operating system release 2.9.0.
ALARM
The partition is in an alarm state. A separate variable will indicate which type of alarm (Burglary, Fire, CO, etc.).
ARMED
The partition is armed. A separate variable would keep track of what type of armed state. HOME and AWAY would be the most common types, but the protocol driver could specify other types if desired.
CONFIRMATION REQUIRED
Some panels require an extra confirmation from the user after an alarm has been cleared before they will go back into DISARMED_READY
state. When in this state, the panel is waiting for a SEND_CONFIRMATION
command from one of the UIs.
DISARMED READY
The partition is disarmed, but could be armed if desired.
DISARMED NOT READY
The partition is disarmed, but not ready to be armed; usually because one of its zones is currently open.
EXIT DELAY
The user has given the arm command, but the partition is in the delay time which allows the user to exit the area before the alarm is tripped.
ENTRY DELAY
The user has opened a zone while the partition is armed. He has a certain amount of time to disarm the system before the alarm engages.
OFFLINE
The partition is in an OFFLINE state.
Security Sensor Types
The following sensor types and their respective ID values are listed below:
- UNKNOWN = 0
- CONTACT_SENSOR = 1
- EXTERIOR_DOOR = 2
- EXTERIOR_WINDOW = 3
- INTERIOR_DOOR = 4
- MOTION_SENSOR = 5
- FIRE = 6
- GAS = 7
- CARBON_MONOXIDE = 8
- HEAT = 9
- WATER = 10
- SMOKE = 11
- PRESSURE = 12
- GLASS_BREAK = 13
- GATE = 14
- GARAGE_DOOR = 15
There are no restrictions imposed regarding sensor types when zone information is sent to the security proxy and functionality is not impacted based on the sensor type defined. The sensor type value only dictates which icons are displayed on Navigators and within ComposerPro.
Security Variables
SECURITY SYSTEM CONTROLLER PARTITION VARIABLES
The Security System Controller Partition supports the following Variables:
HOME_STATE
Boolean. True when armed home. Will be deprecated.
AWAY_STATE
Boolean. True when armed away. Will be deprecated.
DISARMED_STATE
Boolean. True when disarmed. Will be deprecated.
ALARM_STATE
Boolean. True when in an alarm state.
DISPLAY_TEXT
String. Current text in the display window.
TROUBLE_TEXT
String. Current text in the trouble window. When trouble text is blank, the UI will hide the trouble text window and give the space to the display text window.
IS_ACTIVE
Boolean. True if this partition is active and can be used.
PARTITION_STATE
String. Text representation of the current state.
DELAY_TIME_TOTAL
Integer. The total length of the current Entry or Exit delay. If not in a delay, this will be 0.
DELAY_TIME_REMAINING
Integer. The amount of time remaining in the current Entry or Exit delay. If not in a delay this will be 0.
OPEN_ZONE_COUNT
Integer. The number of zones in this partition which are currently open. Usually this will only matter when the armed state is DISARMED_NOT_READY
.
ALARM_TYPE
String. If the system is currently in the ALARM state, this will be a string representation of the type of alarm (Burglary, Fire, Medical, Panic, Carbon Monoxide, etc.).
ARMED_TYPE
String. If we the system is currently in the ARMED state, this will be a string representation of type of arming (HOME, AWAY, etc.).
LAST_EMERGENCY
String. When an emergency is triggered, this variable will store which type of emergency it was. e.g. “Police” or “Panic.
Thermostat Capabilities
THERMOSTAT CAPABILITIES
The following Capabilities are supported with the Thermostat Proxy. Please see the Samples folder delivered in this SDK for additional Thermostat (V2) code examples.
<can_calibrate></can_calibrate>
Indicates if the device is capable of calibrating itself. Enables SET_CALIBRATION
command. Valid values: True/False.
<can_change_scale></can_change_scale>
Boolean to enable/disable Navigator UIs and ComposerPro from being able to change the scale of the hardware. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<can_cool></can_cool>
Indicates if this thermostat supports cooling. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.This is older functionality that indicated to UI's and Programming that the device could execute this functionality. However, their limitation is that they do not take into account if the current HVAC mode supported them. HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.
<can_dehumidify></can_dehumidify>
Boolean to enable/disable can_dehumidity
capability, if the device supports this feature, default is True. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality. However, their limitation is that they do not take into account if the current HVAC mode supported them. HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.
<can_do_auto></can_do_auto>
Indicates if this thermostat can automatically switch from heat to cool. If the device can deadband enforcement, it will be done on the UIs as specified with the deadband capabilities. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality. However, their limitation is that they do not take into account if the current HVAC mode supported them. HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.
<can_heat></can_heat>
Indicates if this thermostat supports heating. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality. However, their limitation is that they do not take into account if the current HVAC mode supported them. HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.
<can_humidify></can_humidify>
Boolean to enable/disable can_humidity
capability, if the device supports this feature, default is True. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality. However, their limitation is that they do not take into account if the current HVAC mode supported them. HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.
<can_inc_dec_setpoints></can_inc_dec_setpoints>
Boolean indicating if the device has internal commands to increment and decrement both heat and cool setpoints independently. If false the proxy will take the current setpoint and +/i 1 (or the resolution) and send a DYNAMIC_CAPABILITIES_CHANGED
command with the new setpoint value, which could potentially send 81 three times if someone did programming of Increment Setpoint and the current setpoint was 80, rather than sending 83 as someone might expect from Composer Programming of 3 increment commands without a sleep between that provides enough time for the hardware to set each increment and return the new setpoint to director before the next Increment occurs.
<can_lock_buttons></can_lock_buttons>
Indicates if the buttons on the TSTAT can be locked out to prevent changes. Valid values: True/False.
<can_preset></can_preset>
Boolean indicating if the device supports the preset functionality including custom_fields
. This does not including scheduling as preset_scheduling
is a feature that is currently not supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<can_preset_schedule></can_preset_schedule>
Boolean indicating if the thermostat will support the SET_EVENTS
commands for running presets based on scheduling created in Navigators.
<current_temperature_max_c></current_temperature_max_c>
Double indicating the maximum temperature that the thermostat will report in C. Default is 48.
<current_temperature_min_c></current_temperature_min_c>
Double indicating the minimum temperature that the thermostat will report in C. Default is -40.
<current_temperature_max_f></current_temperature_max_f>
Double indicating the maximum temperature that the thermostat will report in F. Default is 120.
<current_temperature_min_f></current_temperature_min_f>
Double indicating the minimum temperature that the thermostat will report in F. Default is -40.
<current_temperature_resolution_c></current_temperature_resolution_c>
Double indicating the increments that the temperature will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPBILITIES_CHANGED
notification.
<current_temperature_resolution_f></current_temperature_resolution_f>
Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<fan_modes></fan_modes>
This is a comma delimited list of possible fan modes this thermostat supports. For example: Auto, Low, Medium, High with no spaces after the comma. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<fan_states></fan_states>
This is a comma delimited list of all the possible states that the HVAC system fan supports. For example: Off, On, Low, Med, Circulate with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<has_humidity></has_humidity>
Boolean indicating if the device can report the current humidity. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<has_extras></has_extras>
Boolean indicating if the device has extras commands support. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<has_connection_status></has_connection_status>
Boolean indicating if the device reports online/offline status of the hardware device, this is often forgotten about but very important to implement in new protocol drivers drivers.
<has_outdoor_temperature></has_outdoor_temperature>
Boolean indicating if the device can provide an outdoor temperature. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<has_remote_sensor></has_remote_sensor>
Indicates if this thermostat has a remote sensor. Valid values: True/False.
<has_single_setpoint></has_single_setpoint>
Boolean indicating if the device is single setpoint. can_heat, can_cool
and can_auto
should be set to false if this option is used. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality. However, their limitation is that they do not take into account if the current HVAC mode supported them. HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.
<has_temperature></has_temperature>
Boolean indicating if the device can provide a temperature of the thermostat/room. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<has_vacation_mode></has_vacation_mode>
Indicates if this thermostat supports vacation mode Valid values: True/False
The capability has_vacation_mode
must be set to true for the vacation commands and notifications to be executed. Preset Scheduling and Vacation Mode are mutually exclusive and drivers should really use Preset Scheduling to accomplish what Vacation Mode has done in the past.
<hold_modes></hold_modes>
This is a comma delimited list of the possible hold modes this thermostat supports. Valid values include: Off, 2 Hours, Until Next, Permanent with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<humidity_modes></humidity_modes>
A comma separated list of all the modes the device supports. For example: "Off,Humidify,Dehumidify,Auto" with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<humidity_states></humidity_states>
A comma separated list of all the modes the device supports. Usually something like "Off,Humidifying,Dehumidifying", with no spaces after the commas.
<hvac_modes></hvac_modes>
A comma separated list of all the modes the device supports. For example: "Off,Heat,Cool", with no spaces after the commas.
<hvac_states></hvac_states>
This is a comma delimited list that represents all of the possible states that the HVAC system supports. For example: Off, Heat, Cool, Heating, Stage 1 Cool, etc with no spaces after the commas
<outdoor_temperature_resolution_c></outdoor_temperature_resolution_c>
Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note that .2 is the lowest C resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<outdoor_temperature_resolution_f></outdoor_temperature_resolution_f>
Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<preset_fields></preset_fields>
XML of fields for settings that are potentially unique to the protocol driver, yet will be displayed in the UI during the creation or modification of presets for scheduling. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<scheduling></scheduling>
A boolean indicating if the device supports a programmed schedule. If it is true, it should have a schedule_default entry
in its c4z file. Also mutually exclusive to Preset Scheduling and use of this is discouraged.
<schedule_default></schedule_default>
An XML block indicating the default schedule for the device. Mutually exclusive to Preset Scheduling and use of this is discouraged.
<schedule_entry></schedule_entry>
There is one of these entries for each schedule entry during the day. In the example used here, there are six of them. Name indicates the name of the entry that will show up in composer and navigator. Time indicates what time during the day this entry will become active. The time units are minutes since midnight, so 360 means 6:00AM. Enabled indicates whether or not this entry is initially enabled or not. Valid values: True/False. See example to the right.
<schedule_day_info>
<schedule_entry Name="Awake" Time="360" Enabled="True" />
<schedule_entry Name="Leave" Time="480" Enabled="True" />
<schedule_entry Name="Return" Time="1080" Enabled="True"/>
<schedule_entry Name="Sleep" Time="1320" Enabled="True" />
<schedule_entry Name="Custom 1" Time="1380" Enabled="False" />
<schedule_entry Name="Custom 2" Time="1380" Enabled="False" />
</schedule_day_info>
<setpoint_cool_max></setpoint_cool_max>
Integer indicating the highest temperature the cool setpoint can be configured as. Default is 89. If used,_f
and _c
do not need to be set but since this value is Celsius x 10, it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_cool_max_c></setpoint_cool_max_c>
Integer indicating the highest temperature the cool setpoint can be configured as. Default is 90. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_cool_max_c></setpoint_cool_max_c>
Integer indicating the highest temperature the cool setpoint can be configured as. Default is 89. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_cool_min></setpoint_cool_min>
Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 39. If used,_f
and _c
do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_cool_min_c></setpoint_cool_min_c>
Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 42. If used, _f
and _c
do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_cool_min_f></setpoint_cool_min_f>
Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 42. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_cool_resolution_c></setpoint_cool_resolution_c>
Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a C notification.
<setpoint_cool_resolution_f></setpoint_cool_resolution_f>
Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_heatcool_deadband_c></setpoint_heatcool_deadband_c>
Double indicating the deadband range in Celcius that the hardware requires between heat and cool. Default is 2. Default is 2. Post operating system 2.7.0, UI's will show both heat and cool setpoints moving if in Auto and the movement will be based on this deadband value. If a user tries to move heat above cool or cool below heat, the UI's will only send the setpoint command for the primarily moving setpoint. A protocol driver will need to send two notifies back, one for heat and one for cool if in fact both setpoints were changed on the hardware.
<setpoint_heatcool_deadband_f></setpoint_heatcool_deadband_f>
Double indicating the deadband range in Fahrenheit that the hardware requires between heat and cool. Default is 2. Post operating system 2.7.0, UI's will show both heat and cool setpoints moving if in Auto and the movement will be based on this deadband value. If a user tries to move heat above cool or cool below heat, the UI's will only send the setpoint command for the primarily moving setpoint. A protocol driver will need to send two notifies back, one for heat and one for cool if in fact both setpoints were changed on the hardware.
<setpoint_heat_max></setpoint_heat_max>
Integer indicating the highest temperature the heat setpoint can be configured as. Default is 88. If used, _f
and_c
do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_heat_max_c></setpoint_heat_max_c>
Integer indicating the highest temperature the heat setpoint can be configured as. Default is 31. Best to use _f
and _c
and not the older celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_heat_max_f></setpoint_heat_max_f>
Integer indicating the highest temperature the heat setpoint can be configured as. Default is 89. Best to use _f
and _c
and not the older celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_heat_min></setpoint_heat_min>
Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 40. If used, _f
and _c
do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_heat_min_c></setpoint_heat_min_c>
Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 4. Best to use _f
and _c
and not the older Celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_heat_min_f></setpoint_heat_min_f>
Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 38. Best to use _f
and _c
and not the older celsius x 10 capability.
<setpoint_heat_resolution_c></setpoint_heat_resolution_c>
Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_dehumidify_max></setpoint_dehumidify_max>
Integer indicating the highest dehumidify setpoint, default 100. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_dehumidify_min></setpoint_dehumidify_min>
Integer indicating the lowest dehumidify setpoint, default 0. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_humidify_min></setpoint_humidify_min>
Integer indicating the lowest humidify setpoint, default 0. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_humidify_max></setpoint_humidify_max>
Integer indicating the highest humidify setpoint, default 100. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_humidify_resolution></setpoint_humidify_resolution>
Integer indicating the increments that the setpoint will follow, Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_dehumidify_resolution></setpoint_dehumidify_resolution>
Integer indicating the increments that the setpoint will follow, Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_single_max_c></setpoint_single_max_c>
Integer indicating the highest temperature the single setpoint can be configured as. Default is 32. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_single_max_f></setpoint_single_max_f>
Integer indicating the highest temperature the single setpoint can be configured as. Default is 90. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_single_min_c></setpoint_single_min_c>
Integer indicating the lowest temperature the single setpoint can be configured as. Default is 4. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_single_min_f></setpoint_single_min_f>
Integer indicating the lowest temperature the single setpoint can be configured as. Default is 38. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
<setpoint_heat_resolution_f></setpoint_heat_resolution_f>
Double indicating the increments that the setpoint will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED
notification.
Thermostat Conditionals
THERMOSTAT CONDITIONALS
The following Conditionals are supported with the Thermostat Proxy and can be used in ComposerPro Programming. Please see the Samples folder delivered in this SDK for Thermostat (V2) code examples.
IF_TEMPERATURE
- simple integer test to see if the current temperature is a supplied value. No manipulation is done on the units for the temperature. If the thermostat is configured to be celsius, the value to compare it with should be in Celsius as well.
IF_HEAT_SETPOINT
- simple integer test against the current heat setpoint.
IF_COOL_SETPOINT
- simple integer test against the current cool setpoint.
IF_HVAC_MODE
- simple boolean test to see if the HVAC is in a given mode.
IF_FAN_MODE
- simple boolean test to see if the fan is in a given mode.
IF_HOLD_MODE
- simple boolean test to see if the hold mode is in a given mode.
IF_HVAC_STATE
- simple boolean test to see if the HVAC is in a given state.
IF_FAN_STATE
- simple boolean test to see if the fan is in a given state.
IF_VACATION_MODE
- simple boolean test to see if the vacation mode is on/off.
IF_OUTDOOR_TEMPERATURE
- simple integer test to see if the current temperature is a supplied value. Not manipulation is done on the units for the temperature. If the thermostat is configured to be Celsius, the value to compare it with should be in Celsius as well.
IF_HEAT_SETPOINT
- simple integer test against the current heat setpoint.
IF_COOL_SETPOINT
- simple integer test against the current cool setpoint.
IF_HVAC_MODE
- simple boolean test to see if the HVAC is in a given mode.
IF_FAN_MODE
- simple boolean test to see if the fan is in a given mode.
IF_HOLD_MODE
- simple boolean test to see if the hold mode is in a given mode.
IF_HVAC_STATE
- simple boolean test to see if the HVAC is in a given state.
IF_FAN_STATE
- simple boolean test to see if the fan is in a given state.
IF_VACATION_MODE
- simple boolean test to see if the vacation mode is on/off.
IF_OUTDOOR_TEMPERATURE
- simple integer test to see if the current temperature is a supplied value.
IF_HUMIDITY_MODE
- simple boolean test on a string to see if the humidity mode is in a given mode.
IF_HUMIDITY_STATE
- simple boolean test on a string to see if the humidity state is in a given mode.
IF_HUMIDIFY_SETPOINT
- simple integer test on an int number to see if the current humidify setpoint is a supplied value.
IF_HUMIDITY_MODE
- simple boolean test on a string to see if the humidity mode is in a given mode.
IF_HUMIDITY_STATE
- simple boolean test on a string to see if the humidity state is in a given mode.
IF_HUMIDIFY_SETPOINT
- simple integer test on an int number to see if the current humidify setpoint is a supplied value.
IF_MESSAGE
- simple boolean test to see if the HVAC is in a given mode.
IF_PRESET
- simple boolean test to see if the preset is in a given name.
Thermostat Connections
THERMOSTAT CONNECTION CLASSES
The Thermostat Proxy has three output connections. These include:
- Temperature (Class:
TEMPERATURE_VALUE
) - Used to send temperature received from the proxy driver to other driver(s) - Outdoor Temperature (Class:
TEMPERATURE_VALUE
) - Used to send temperature received from the proxy driver to other driver(s) - Humidity (Class:
HUMIDITY_VALUE
) - Used to send humidity received from the proxy driver to other driver(s)
TEMPERATURE AND OUTDOOR VALUE CONNECTION CLASS COMMANDS
GET_SENSOR_VALUE
Used to require remote temperature sensor data via the control input connection binding. Note that command handling is not implemented in some drivers with a temperature control output connection. Sensor data cannot be be requested from these drivers.
Signature
GET_SENSOR_VALUE ()
| Parameter |
None
VALUE_INITIALIZED
The value has been initialized. OnBindingChanged will cause this command to be sent automatically when the sending device goes Online.
Signature
VALUE_INITIALIZED ()
Parameter | Description |
---|---|
str | STATUS : Default is the status after first loading a driver and the value has never been set. active - Status if the value is active. last_known - The Last value received. The device either went offline or it has not been heard from since a reboot. |
int | TIMESTAMP: Timestamp of when the last value was received. |
VALUE_CHANGED
The value has changed.
Signature
VALUE_CHANGED ()
Parameter | Description |
---|---|
int | CELSIUS - Float - Celsius temperature value. |
int | FAHRENHEIT - Float - Fahrenheit temperature value. |
int | TIMESTAMP - Timestamp When the change occurred. |
VALUE_UNAVAILABLE
The value is possibly no longer accurate. OnBindingChanged, device went Offline, etc
Signature
VALUE_CHANGED ()
Parameter | Description |
---|---|
str | STATUS: offline - Device went offline or was unbound |
HUMIDITY VALUE CONNECTION CLASS COMMANDS
Please see the Samples folder delivered in this SDK for Thermostat (V2) code examples.
VALUE_INITIALIZED
The value has been initialized. OnBindingChanged will cause this command to be sent automatically when the sending device goes Online.
Signature
VALUE_INITIALIZED ()
Parameter | Description |
---|---|
str | STATUS: Default is the status after first loading a driver and the value has never been set. active - Status if the value is active. last_known - The Last value received. The device either went offline or it has not been heard from since a reboot. |
int | TIMESTAMP: Timestamp of when the change occurred. |
VALUE_CHANGED
The value has changed.
Signature
VALUE_CHANGED ()
Parameter | Description |
---|---|
int | VALUE |
int | TIMESTAMP: Timestamp of when the change occurred. |
VALUE_UNAVAILABLE
The value is possibly no longer accurate. OnBindingChanged, device went Offline, etc
Signature
VALUE_UNAVAILABLE ()
Parameter | Description |
---|---|
str | STATUS: offline - Device went offline or was unbound. |
Thermostat Events
THERMOSTAT EVENTS
The Thermostat Proxy fires the following events. If any of the registered variables change value, an event is fired; however those events are generated by the Variable Manager, and the proxy doesn't concern itself with those. Like most old proxies, events could be eliminated by just having programming use the registered variables.
In the past some UI's listened for variables not DataToUI calls. In 2.7.0 all UI's no longer listen to variable changed events, but it's worth noting that old UI's did.
Temperature Change
(Event=100)
Heat Setpoint Changed
(Event=101)
Cool Setpoint Changed
(Event=102)
HVAC Mode Changed
(Event=103)
Fan Mode Changed
(Event=104)
Hold Mode Changed
(Event=105)
HVAC State Changed
(Event=106)
Fan State Changed
(Event=107)
Vacation Mode Changed
(Event=108)
Outdoor Temperature Changed
(Event=109)
Humidity Changed
(Event=110)
Humidity Mode Changed
(Event=111)
Humidity State Changed
(Event=112)
Humidify Setpoint Changed
(Event=113)
Dehumidify Setpoint Changed
(Event=114)
Message Changed
(Event=115)
Preset Changed
(Event=116)
Single Setpoint Changed
(Event=117)
Thermostat Notifications
ALLOWED_FAN_MODES _CHANGED
Changes the value of the variable FAN_MODES_LIST
.
Name
ALLOWED_FAN_MODES_CHANGED ()
Parameter | Type | Description |
---|---|---|
Modes |
LIST. | A comma delimited list of available modes. |
Returns
None
ALLOWED_HUMIDITY_MODES_CHANGED
Changes the value of the variable HUMIDITY_MODES_LIST
Name
ALLOWED_HUMIDITY_MODES_CHANGED ()
Parameter | Type | Description |
---|---|---|
Modes |
LIST | A comma delimited list of available modes. Will do the same thing as humidity_modes capability |
Returns
None
ALLOWED HVAC MODES CHANGED
Changes the value of the variable HVAC_MODES_LIST
Name
ALLOWED_HVAC_MODES_CHANGED ()
Parameter | Type | Description |
---|---|---|
Modes |
LIST | A comma delimited list of available modes. |
BOOL | Option parameters: CAN_HEAT , CAN_COOL , CAN_AUTO . These modify the capabilities: can_heat , can_cool , can_do_auto . |
Returns
None
BUTTONS_LOCK_CHANGED
Used to inform the proxy if the buttons on the device should be locked or not.
Name
ALLOWED_HVAC_MODES_CHNAGED ()
Parameter | Type | Description |
---|---|---|
LOCK | BOOL | If the buttons on the device should be locked or not. |
Returns
None
CAN_COOL
Boolean to enable/disable can_cool
capability. If the device supports this feature, default is False.
Name
CAN_COOL ()
Parameter | Type | Description |
---|---|---|
BOOL | True/False. Supports cooling. |
Returns
None
CAN_HEAT
Boolean to enable/disable can_heat
capability. If the device supports this feature, default is False.
Name
CAN_HEAT ()
Parameter | Type | Description |
---|---|---|
BOOL | True/False. enable/disable can_heat capability. |
Returns
None
CAN_HUMIDIFY
Boolean to enable/disable can_humidify
capability. If the device supports this feature, default is False.
Name
CAN_HUMIDIFY ()
Parameter | Type | Description |
---|---|---|
BOOL | True/False. Enable/disable can_humidify capability |
Returns
None
CAN_DEHUMIDIFY
Boolean to enable/disable can_dehumidify
capability. If the device supports this feature, default is False.
Name
CAN_DEHUMIDIFY ()
Parameter | Type | Description |
---|---|---|
BOOL | True/False. Enable/disable can_dehumidify capability. |
Returns
None
CONNECTION
Boolean to enable/disable can_dehumidify
capability. If the device supports this feature, default is False.
Name
CONNECTION ()
Parameter | Description | Description |
---|---|---|
CONNECTED | BOOL | true/false. |
DataToUI name | If is_connected and is a boolean value. If IS_CONNECTED is false, the UI will show "–" where the temperature would be, indicating the device is off line. Also, sending a false will prevent any of the Control Buttons from appearing on the UI. |
Returns
None
COOL_SETPOINT_CHANGED
Notification that should be sent to the proxy when the cooling setpoint has changed.
Name
COOL_SETPOINT_CHANGED ()
Parameter | Type | Description |
---|---|---|
SETPOINT | NUM | New cooling setpoint temperature. |
SCALE | STR | The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F. |
Returns
None
COOL_SETPOINT_RESOLUTION C
Name
COOL_SETPOINT_RESOLUTION_C ()
Parameter | Type | Description |
---|---|---|
SETPOINT | INT | What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_cool_resolution capability, default 1 |
Returns
None
COOL_SETPOINT_RESOLUTION_F
Name
COOL_SETPOINT_RESOLUTION_F ()
Parameter | Type | Description |
---|---|---|
SETPOINT | INT | What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_cool_resolution capability, default 1 |
Returns
None
CUSTOM_FIELDS_CHANGED
Update the template Custom Fields that UI's display for a new Preset Event.
Name
CUSTOM FIELDS CHANGED ()
Parameter | Type | Description |
---|---|---|
XML | Text string of XML matching the Preset Schedule schema. To UI comes through as preset_custom_fields . |
Returns
`None `
Example
<preset_custom_fields>
<field id="TemperatureSensor" type="list" label="Temperature Sensor:" default="Primary: Built-In Sensor, Secondary: None">
<list>
<item text="Primary: Built In Sensor Alias" value="Primary: Built-In Sensor, Secondary: None"/>
<item text="Primary: Wired Remote Sensor Alias, Secondary: None" value="Primary: Wired Remote Sensor, Secondary: None"/>
<item text="Primary: Built In Sensor Alias, Secondary: Wired Remote Sensor Alias" value="Primary: Built-In Sensor, Secondary: Wired Remote Sensor"/<item text="Primary: Wired Remote Sensor Alias, Secondary: Built In Sensor Alias" value="Primary: Wired Remote Sensor, Secondary: Built-In Sensor"/>
</list>
</field>
</preset_custom_fields>
COOL_SETPOINT_MAX_C
Name
COOL_SETPOINT_ MAX_C ()
Parameter | Type | Description |
---|---|---|
Minimum Setpoint | INT | 0-100 that will do the same thing as the setpoint_cool_max capability, default 100 |
Returns
`None `
COOL_SETPOINT_MAX_F
Name
COOL_SETPOINT_ MAX_F ()
Parameter | Type | Description |
---|---|---|
Minimum Setpoint | INT | 0-100 that will do the same thing as the setpoint_cool_max capability, default 100 |
Returns
`None `
COOL_SETPOINT_MIN_C
Name
COOL_SETPOINT_ MIN_C ()
Parameter | Type | Description |
---|---|---|
Minimum Setpoint | INT | 0-100 that will do the same thing as the setpoint_cool_min capability, default 100 |
Returns
None
COOL_SETPOINT_MIN_F
Name
COOL_SETPOINT_ MIN_F ()
Parameter | Type | Description |
---|---|---|
Minimum Setpoint | INT | 0-100 that will do the same thing as the setpoint_cool_min capability, default 100 |
Returns
None
DEHUMIDIFY_SETPOINT_CHANGE
The dehumidify setpoint has changed.
Name
DEHUMIDIFY_SETPOINT_CHANGE ()
Parameter | Description |
---|---|
int | SETPOINT: (0-100). To UI comes through as dehumidify_setpoint |
Returns
None
DEHUMIDIFY_SETPOINT_MIN
The minimum dehumidify setpoint has changed.
Name
DEHUMIDIFY_SETPOINT_MIN ()
Parameter | Description |
---|---|
int | MINIMUM SETPOINT: (0-100). To UI comes through as setpointdehumidifymin ` capability. Defaults to 0. |
`
Returns
None
DEHUMIDIFY_SETPOINT_MAX
The maximun dehumidify setpoint has changed.
Name
DEHUMIDIFY_SETPOINT_MAX ()
Parameter | Description |
---|---|
int | MAXIMUM SETPOINT: (0-100). To UI comes through as setpoint_dehumidify_max capability. Defaults to 100. |
Returns
None
DEHUMIDIFY_SETPOINT _RESOLUTION
The dehumidify setpoint resolution has changed.
Name
DEHUMIDIFY_SETPOINT_RESOLUTION ()
Parameter | Description |
---|---|
int | What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpointdehumidifyresolution \` capability, default 1 |
Returns
None
DYNAMIC_CAPABILITIES_CHANGED TSTAT
Dynamic Capabilities is a way for a protocol driver to send updates about some capabilities that can be changed when settings change on the hardware. An example would be a thermostat that has a humidifier added would need to tell the proxy it can now do humidification as well as what the min, max and resolution of changes are for the setpoint.
Name
DYNAMIC_CAPABILITIES_CHANGED ()
Parameter | Type | Description |
---|---|---|
HAS_OUTDOOR_TEMPERATURE |
BOOL | boolean to enable/disable hasoutdoortemperature capability, if the device supports this feature, default is false. |
CAN_CHANGE_SCALE |
BOOL | boolean to enable/disable Navigators UI's and composer from being able to change the scale of the hardware. |
HAS_HUMIDITY |
BOOL | boolean to enable/disable has_humidity capability, if the device supports this feature, default is false |
HAS_SINGLE_SETPOINT |
BOOL | Boolean used to turn single setpoint mode to on or off. Defaults to false (off). |
HUMIDIFY_SETPOINT_MIN |
INT | Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_min capability, default 0 |
HUMIDIFY_SETPOINT_MAX |
INT | Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_max capability, default 100 |
HUMIDIFY_SETPOINT_RESOLUTION |
INT | What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_humidify_resolution capability, default 1 |
HUMIDITY_SETPOINT_DEADBAND |
INT | What the deadband between humidify and dehumidify is, will do the same thing as the setpoint_humidity_deadband capability, default 10 |
DEHUMIDIFY_SETPOINT_MIN : |
INT | Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_dehumidify_min capability, default 0 |
DEHUMIDIFY_SETPOINT_MAX |
INT | Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_dehumidify_max capability, default 100 |
DEHUMIDIFY_SETPOINT_RESOLUTION |
INT | What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_dehumidify_resolution capability, default 1 |
Returns
None
EXTRAS_SETUP_CHANGED
Update the Extras Setup, displayed in the UI
Name
EXTRAS_SETUP_CHANGED ()
Parameter | Description | Description |
---|---|---|
XML | XML | XML text string of XML matching the Preset Schedule schema. Comes through to the UI as extras_setup . Note that as of OS 3, sending only a singular XML string is supported. For example, sending an array of Extras can result in Navigator performance issues. |
Returns
None
EXTRAS_STATE_CHANGED
Update the Extras Setup, displayed in the UI
Name
EXTRAS_STATE_CHANGED ()
Parameter | Type | Description |
---|---|---|
XML | XML | XML text string of XML matching the Preset Schedule schema. To UI comes through as extras_state . |
Returns
None
FAN_MODE_CHANGED
Notification that should be sent to the proxy when Fan mode has changed. Changes the variables: FAN_MODE
, V1 FANMODE,
.
Name
FAN_MODE_CHANGED ()
Parameter | Type | Description |
---|---|---|
MODE | STR | One of the supported modes for example: Auto, On. |
Returns
None
FAN_STATE_CHANGE
Notification that should be sent to the proxy when the fan state has changed.
Name
FAN_STATE_CHANGE ()
Parameter | Type | Description |
---|---|---|
STATE | STR | One of the following Off, On. |
Returns
None
HAS_EXTRAS
Boolean to enable/disable has_extras capability
. If the device supports this feature, default is false
Updates the XML that will be consumed by the Navigator UI’s.
Name
HAS_EXTRAS ()
Parameter | Type | Description |
---|---|---|
XML | STR | Text string of XML that matches the Preset Schedule A. |
Returns
None
HAS_EXTRAS - boolean to enable/disable has_extras capability, if the device supports this feature, default is false Updates the XML that will be consumed by the Navigator UI's
Parameters XML text string of XML that matches the Preset Schedule API.
HAS_HEAT_PUMP
Boolean to enable/disable has_heat_pump
. If the device supports this feature, default is false.
Name
HAS_HEAT_PUMP ()
Parameter | Description | Description |
---|---|---|
BOOL | True/False. enable/disable has_heat_pump |
Returns
None
HAS_HUMIDITY
Boolean to enable/disable has_humidity
capability. If the device supports this feature, default is false
Name
HAS_ HUMIDITY ()
Parameter | Type | Description |
---|---|---|
BOOL | True/False. enable/disable has_humidity capability. |
Returns
None
HAS_OUTDOOR_TEMPERATURE
Boolean to enable/disable has_outdoor_temperature
capability, if the device supports this feature, default is false
Name
HAS_OUTDOOR_TEMPERATURE ()
Parameter | Type | Description |
---|---|---|
BOOL | True/False. enable/disable has_outdoor_temperature capability. |
Returns
None
HEAT_SETPOINT
Fires event: Heat_Setpoint_Changed
.
Name
HEAT_SETPOINT ()
Parameters
None
Returns
None
HEAT_SETPOINT_CHANGED
Notification that should be sent to the proxy when the heating setpoint has changed.
Name
HEAT_SETPOINT_CHANGED ()
Parameter | Type | Description |
---|---|---|
SETPOINT | NUM | New heating setpoint temperature. |
SCALE | STR | The scale being used for the setpoint. The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F. |
Returns
None
HEATCOOL_SETPOINTS_DEADBAND_C
Minimum Setpoint difference between heat and will do the same thing as setpoint_heatcool_deadband
.
Name
HEATCOOL_SETPOINTS_DEADBAND_C
Parameter | Description |
---|---|
num | Default 2 |
Returns
None
HEATCOOL_SETPOINTS_DEADBAND_F
Minimum Setpoint difference between heat and will do the same thing as setpoint_heatcool_deadband
.
Name
HEATCOOL_SETPOINTS_DEADBAND_F
Parameter | Description |
---|---|
num | Default 2 |
Returns
None
HEAT_SETPOINT_RESOLUTION_C
What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_heat_resolution
capability.
Name
HEAT_SETPOINT_RESOLUTION_C ()
Parameter | Description |
---|---|
num | Default 1 |
Returns
None
HEAT_SETPOINT_RESOLUTION_F
What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_heat_resolution
capability.
Name
HEAT_SETPOINT_RESOLUTION_F ()
Parameter | Description |
---|---|
num | Default 1 |
Returns
None
HEAT_SETPOINT_MAX_C
Maximum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_max
capability.
Name
HEAT_SETPOINT_MAX_C ()
Parameter | Description |
---|---|
int | Default 100 |
Returns
None
HEAT_SETPOINT_MAX_F
Maximum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_max
capability.
Name
HEAT_SETPOINT_MAX_F ()
Parameter | Description |
---|---|
int | Default 100 |
Returns
None
HEAT_SETPOINT_MIN_C
Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_min
capability.
Name
HEAT_SETPOINT_MIN_C ()
Parameter | Description |
---|---|
int | Default 100 |
Returns
None
HEAT_SETPOINT_MIN_F
Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_min
capability.
Name
HEAT_SETPOINT_MIN_F ()
Parameter | Description |
---|---|
int | Default 100 |
Returns
None
HOLD_MODE_CHANGED
Notification that should be sent to the proxy when hold mode has changed. Changes the variables HOLD_MODE
, ANA_HOLDMODE
. Fires event HOLD_MODE_CHANGED
.
Name
HOLD_MODE_CHANGED ()
Parameter | Type | Description |
---|---|---|
MODE | STR | One of the supported hold modes for example: Off, 2 Hours, Permanent. Required parameter options if Hold Mode is "Hold Until" : YEAR - integer 2000+, MONTH - integer 0-11, DAY - integer 0-31, HOUR - integer 0-23, MINUTE - integer 0-60. |
Returns
None
HUMIDITY_CHANGED
The actual humidity percent (integer 0-100) value detected by the thermostat has changed. To UI comes through as humidity
.
Name
HUMIDITY_CHANGED ()
Parameter | Description | Description |
---|---|---|
HUMIDITY | INT | HUMIDITY: (0-100) |
Returns
None
HUMIDITY_MODE_CHANGED
MODE, typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto). To UI comes through as humidity_mode
Name
HUMIDITY_MODE_CHANGED ()
Parameter | Type | Description |
---|---|---|
MODE | STR | Typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto). |
Returns
None
HUMIDIFY_SETPOINT_CHANGED
The humidity setpoint has changed. To UI comes through as humidify_setpoint
Name
HUMIDIFY_SETPOINT_CHANGED ()
Parameter | Type | Description |
---|---|---|
SETPOINT | NUM | (0-100) |
Returns
None
HUMIDITY_SETPOINT_DEADBAND
What the deadband between humidify and dehumidify is, will do the same thing as the setpoint_humidity_deadband
capability.
Name
HUMIDITY_SETPOINT_DEADBAND ()
Parameter | Description |
---|---|
num | Default 10 |
Returns
None
HUMIDITY_SETPOINT_MAX
Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_max
capability,
Name
HUMIDITY_SETPOINT_MAX ()
Parameter | Description |
---|---|
num | Default 100 |
Returns
None
HUMIDITY_SETPOINT_MIN
Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_min
capability,
Name
HUMIDITY_SETPOINT_MIN ()
Parameter | Description |
---|---|
num | Default 0 |
Returns
None
HUMIDITY_SETPOINT_RESOLUTION
What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_humidify_resolution
capability.
Name
HUMIDITY_SETPOINT_RESOLUTION ()
Parameter | Description |
---|---|
num | Default 1 |
Returns
None
HUMIDITY_STATE_CHANGED
State has changed on the thermostat. To UI comes through as humidity_state
.
Name
HUMIDITY_STATE_CHANGED ()
Parameter | Type | Description |
---|---|---|
STATE | STR | Typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto |
Returns
None
HVAC_MODE_CHANGED
Notification sent when the mode of the HVAC system has changed. Changes the variable HVAC_MODE
.
Name
HVAC_MODE_CHANGED ()
Parameter | Type | Description |
---|---|---|
MODE | STR | One of the supported modes for example: Off, Heat,Cool, Auto, Emergency |
Returns
None
HVAC_STATE_CHANGED
Notification that should be sent to the proxy when the HVAC state has changed. Changes the variable HVAC_STATE
.
Name
HVAC_STATE_CHANGED ()
Parameter | Type | Description |
---|---|---|
STATE: | STR | One of the supported HVAC states for example: Off, Heat, Cool |
Returns
None
MESSAGE_CHANGED
Update the text message displayed in the UI. Multiple lines can be specified by using \n to separate lines, although UI's will display each line in its own way. Could be a paragraph, ticker scrolling, cycling, etc. To UI comes through as message
.
Name
MESSAGE_CHANGED ()
Parameter | Type | Description |
---|---|---|
MESSAGE | STR | Text string, max length of the string is not set, though driver developers need to keep in mind that this information shows up in Navigators in a ticker or similar scrolling text display and should not be cluttered but kept to key things like HVAC system errors, and CRITICAL information. |
Returns
None
Usage Note
This string may or may not have multiple message segments. If it does, the message segments are delimited by a \n (newlines). Some protocol drivers such as the c4-therm support up to 4 lines of messages. Most UI's scroll these \n delimited messages right to left in a marquee style.
PRESET_CHANGED
Updates the current Preset State displayed in the UI. Sent to the UI as preset
.
Name
PRESET_CHANGED ()
Parameter | Description |
---|---|
str | Name of Preset. |
Returns
None
PRESET_FIELDS_CHANGED
Updates the Preset FIELDS TEMPLATE that UIs display for a Preset Event. To UI comes through as preset_fields
. If this is modified, it is possible that existing presets will have data that is not in compliance. However, a protocol driver can modify this to have new preset_fields
which are compatible. Do not delete this as Events are erased when presets are deleted.
Name
PRESET_FIELDS_CHANGED ()
Parameter | Type | Description |
---|---|---|
XML | XML | XML text string of XML matching the Preset Schedule schema |
Returns
None
SCALE_CHANGED
Changes the scale the proxy tracks for the temperature. This is primarily important for Composer Pro when programming as it will use this scale for setting temperatures. Navigators also use this scale.
Name
SCALE_CHANGED ()
Parameter | Type | Description |
---|---|---|
SCALE | STR | CELSIUS, FAHRENHEIT, C, c, F, f |
Returns
None
SCHEDULE_ENTRY_CHANGED
Notification that should be sent to the proxy when a change is made to the HVAC schedules. Every entry that is changed will send one protocol notification.
Name
SCHEDULE_ENTRY_CHANGED ()
Parameter | Type | Description |
---|---|---|
DayIndex | NUM | Number representing day of week: 0= Sunday, 1=Monday |
EntryIndex | NUM | 0 to the number of entries the day can support. 0 = the first entry, 1 = the second entry. |
TimeMinutes | NUM | Number of minutes past midnight for the entry change. For example 360= 6:00AM. |
EnabledFlag | BOOL | Enables or disables a schedule. By default, the first four schedules are enabled. |
HeatSetpoint | NUM | Temperature designated to start the heating system. |
CoolSetpoint: | NUM | Temperature designated to start the cooling system. |
Units | STR | F or C – Fahrenheit or Celsius. |
Returns
None
SINGLE_SETPOINT_CHANGED
Used to inform the proxy that the single setpoint has changed. This notification changes variables SINGLE_SETPOINT_F
and SINGLE_SETPOINT_C
. It fires the event Single Setpoint Changed
.
Name
SINGLE_SETPOINT_CHANGED ()
Parameter | Type | Description |
---|---|---|
SETPOINT | INT | The new temperature setpoint value. |
SCALE | STR | The scale being used for the setpoint. The values allowed are CELSIUS, C, FAHRENHEIT, or F |
Returns
None
SINGLE_SETPOINT_MAX_C
Maximum Setpoint. Will do the same thing as the setpoint_single_max
capability.
Name
SINGLE_SETPOINT_MAX_C ()
Parameter | Type | Description |
---|---|---|
SETPOINT | INT | 0-100 default 100 |
Returns
None
SINGLE_SETPOINT_MAX_ F
Maximum Setpoint. Will do the same thing as the setpoint_single_max
capability.
Name
SINGLE_SETPOINT_MAX_F ()
Parameter | Type | Description |
---|---|---|
SETPOINT | INT | 0-100 default 100 |
Returns
None
SINGLE_SETPOINT_MIN_ C
Minimum Setpoint. Will do the same thing as the setpoint_single_min
capability.
Name
SINGLE_SETPOINT_MIN_C ()
Parameter | Type | Description |
---|---|---|
SETPOINT: | INT | 0-100 default 0 |
Returns
None
SINGLE_SETPOINT_MIN_C
Minimum Setpoint. Will do the same thing as the setpoint_single_min
capability.
Name
SINGLE_SETPOINT_MIN_F ()
Parameter | Type | Description |
---|---|---|
SETPOINT: | INT | 0-100 default 0 |
Returns
None
SINGLE_SETPOINT_RESOLUTION_C
What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_single_resolution
capability.
Name
SINGLE_SETPOINT_RESOLUTION_C ()
Parameter | Description |
---|---|
num | Default 1 |
Returns
None
SINGLE_SETPOINT_RESOLUTION_F
Indicates the increments that the setpoint will follow, such as .2, .5, 1, 2, 5, etc. Note that .2 is the lowest F resolution supported.
Name
SINGLE_SETPOINT_RESOLUTION_F ()
Parameter | Description |
---|---|
num | Default 1 |
Returns
None
TEMPERATURE_CHANGED
Notification that should be sent to the proxy when the temperature has changed.
Name
TEMPERATURE_CHANGED ()
Parameter | Type | Description |
---|---|---|
TEMPERATURE | NUM | New temperature value. |
SCALE: | STR | The scale being used for the temperature. The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F. |
Returns
None
TEMPERATURE_RESOLUTION
What increment to use (ie .1,.5,1,3,5,10,etc), will do the same thing as the temperature_resolution
capability, default 1
Name
TEMPERATURE_RESOLUTION ()
Parameter | Description |
---|---|
int | Default 1. |
Returns
None
VACATION_MODE
Notification that should be sent to the proxy when vacation mode is turned on or off.
Name
VACATION_MODE ()
Parameter | Type | Description |
---|---|---|
ON VACATION | STR | True or False |
Returns
None
Usage Note
The capability has_vacation_mode
must be set to true for the vacation commands and notifications to be executed. Not to be used with Preset Scheduling.
VACATION_SETPOINTS
Notification that should be sent to the proxy when setpoints have been changed for vacation mode. This Notification is not to be used with Preset Scheduling. The capability has_vacation_mode
must be set to true for the vacation commands and notifications to be executed.
Name
VACATION_ SETPOINTS ()
Parameter | Type | Description |
---|---|---|
VAC HEAT SETPOINT | NUM | New temperature for the heating setpoint while in vacation mode. |
VAC COOL SETPOINT: | NUM | New temperature for the cooling setpoint while in vacation mode. |
UNITS | STR | F or C – Fahrenheit or Celsius. |
Returns
None
OUTDOOR_TEMPERATURE_CHANGED
Used to inform the proxy that the outdoor temperature has changed.
Name
OUTDOOR_TEMPERATURE_CHANGED ()
Parameter | Description |
---|---|
int | Default 1. |
Returns
None
OUTDOOR_TEMPERATURE_RESOLUTION
What increment to use (ie .1, .5, 1, 3, 5, 10, etc), will do the same thing as the outdoor_temperature_resolution
capability.
Name
OUTDOOR_TEMPERATURE_RESOLUTION ()
Parameter | Description |
---|---|
int | Default 1. |
Returns
None
Thermostat Proxy Commands
DEC_SETPOINT_COOL
Used to decrease the cool set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_COOL
command to send to the protocol driver, unless the capability can_inc_dec_setpoints
is set to true.
Name
DEC_SETPOINT_COOL ()
Parameter
None
Returns
None
SET_PRESET
Runs a Preset regardless if there is an event scheduled for it.
Name
SET_PRESET ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Preset Name |
Returns
None
DEC_SETPOINT_HEAT
Used to decrease the heat set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_HEAT
command to send to the protocol driver, unless the capability can_inc_dec_setpoints
is set to true
Name
DEC_SETPOINT_HEAT ()
Parameter
None
Returns
None
INC_SETPOINT_COOL
Used to increase the cool set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_COOL
command to send to the protocol driver, unless the capability can_inc_dec_setpoints
is set to true.
Name
INC_SETPOINT_COOL ()
Parameter
None
Returns
None
INC_SETPOINT_HEAT
Used to increase the heat set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_HEAT
command to send to the protocol driver, unless the capability can_inc_dec_setpoints
is set to true.
Name
INC_SETPOINT_HEAT ()
Parameter
None
Returns
None
PRESET_ADD
Adds a new Preset Schedule Preset (If protocol driver has the can_preset_schedule
capability)
Name
PRESET_ADD ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Preset Name. Required. |
PRESET FIELDS | XML | If a UI or Driver sends a bound call with a string that has invalid XML syntax, this field will be set to <preset_field/> and an error message will be logged to director.log when this occurs. Note that only a driver OR UI should specify the _f or c. For example: heat_setpoint_f , cool_setpoint_f , heat_setpoint_c , cool_setpoint_c but not both. The proxy will auto insert the missing _f or _c based on the scales resolution if it detects one side is not supplied. This makes it so UI's and drivers do not need to calculate the correct value for the scale. However, if a driver or UI does want to calculate it, the proxy will leave the value alone. In the same manner the proxy will not correct or anything if the _f and _c do not resolve to the equivalent temperature. |
Returns
None
Example
<preset_fields>
<field id="heat_setpoint_f" value="65">
<field id="cool_setpoint_f" value="75">
<field id="humidify_setpoint" value="50">
<field id="fan_mode" value="On">
</preset_fields>
PRESET_DELETE
Adds a new Preset Schedule Preset (If protocol driver has the can_preset_schedule
capability)
Name
PRESET_DELETE ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Preset Name. Required. |
PRESET FIELDS | XML | If a UI or Driver sends a bound call with a string that has invalid XML syntax, this field will be set to <preset_field/> and an error message will be logged to director.log when this occurs. Note that only a driver OR UI should specify the _f or c. For example: heat_setpoint_f , cool_setpoint_f , heat_setpoint_c , cool_setpoint_c but not both. The proxy will auto insert the missing _f or _c based on the scales resolution if it detects one side is not supplied. This makes it so UI's and drivers do not need to calculate the correct value for the scale. However, if a driver or UI does want to calculate it, the proxy will leave the value alone. In the same manner the proxy will not correct or anything if the _f and _c do not resolve to the equivalent temperature. |
Returns
None
PRESET_EVENT_ADD
Adds a Preset Schedule Preset Event to be run at the specified day/time (If protocol driver has the can_preset_schedule
capability.
Name
PRESET_EVENT_ADD ()
Parameter | Description | Description |
---|---|---|
NAME | STR | Event Name |
WEEKDAY | INT | 0-6 with Sunday being 0 |
HOUR | INT | 0-23 |
MINUTE | INT | 0-60 |
Returns
None
Usage Note
Adding an event at the same time as a different preset event will result in the different preset event being deleted and the new one being put in at that time.
PRESET_EVENT_DELETE
Deletes a Preset Schedule Preset if the protocol driver has the can_preset_schedule
capability.
Name
PRESET_EVENT_DELETE ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Using "" (an empty string) will match all presets to make deleting all events of a given preset name easier. |
WEEKDAY | INT | 0-6 with Sunday being 0. Using -1 will match any weekday. |
HOUR | INT | 0-23 Using -1 Will match any Hour. |
MINUTE | INT | 0-60 Using -1 will match any Minute. |
Returns
None
Usage Note
Usage Note:
Using ""
for the Preset or -1 for the weekday, hour or minute might be useful for UI's, Agents or Protocol Drivers as when a matching parameter is used you can delete multiple events at once AND only one Notify of the changes that were made are sent rather than causing a notify for each and every modification if they were done one at a time.
PRESET_EVENT_MODIFY
Modifies an existing Preset Schedule Event (If protocol driver has the can_preset_schedule
capability)
Name
PRESET_EVENT_MODIFY ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Event Name |
WEEKDAY: | INT | 0-6 with Sunday being 0. |
HOUR | INT | 0-23 |
MINUTE | INT | 0-60 |
NEW WEEKDAY | INT | 0-6 with Sunday being 0 |
NEW HOUR | INT | 0-23 |
NEW MINUTE | INT | 0-60 |
Returns
None
Usage Note
Modifying an event to the same time as a different preset event will result in the different preset event being deleted and the new one being put in at that time.
PRESET_MODIFY
Modifies an existing Preset Schedule Event (If protocol driver has the can_preset_schedule
capability)
Name
PRESET_MODIFY ()
Parameter | Type | Description |
---|---|---|
NAME | STR | Preset Name |
PRESET FIELDS | XML | XML DATA |
NEW NAME | STR | New Preset Name |
Returns
None
Example
<preset_fields>
<field id="heat_setpoint_f" value="65">
<field id="cool_setpoint_f" value="75">
<field id="humidify_setpoint" value="50">
<field id="fan_mode" value="On">
</preset_fields>
QUERY_SCHEDULE
Used for the old .ccz and a few older thermostats for scheduling purposes.
Name
QUERY_SCHEDULE ()
QUERY_SCHEDULE_EVENTS
Used for the old .ccz and a few older thermostats for scheduling purposes.
Name
QUERY_SCHEDULE_EVENTS ()
SET_BUTTONS_LOCK
Used to indicate if the buttons on the thermostat should be locked out from controlling the temperature.
Name
SET_BUTTONS_LOCK ()
Parameter | Type | Description |
---|---|---|
LOCK | BOOL | 1 or 0 indicating if the buttons should be locked out or not. |
Thermostat Unhandled Commands
Unhandled Commands
This section includes Commands supported by many protocol drivers but are not directly handled by the Thermostat proxy:
DEC_SETPOINT_HUMIDIFY
Used to Decrement the Setpoint by one step.
DEC_SETPOINT_DEHUMIDIFY
Used to Decrement the Setpoint by one step.
INC_SETPOINT_DEHUMIDIFY
Used to increment the Setpoint by one step.
INC_SETPOINT_HUMIDIFY
Used to increment the Setpoint by one step.
SET_CALIBRATION
Used to set the calibration value.
SET_EVENT
Occurs when the scheduler determines it's time for a new event to be run for Preset Scheduling
SET_EVENTS
XML that is provided from the proxy in the case that a protocol driver wants to push the Preset Schedule to hardware
SET_REMOTE_SENSOR
Used to indicate if the remote sensor on the thermostat is in use.
SET_SCALE
Used to set the temperature scale the thermostat should use.
SET_MODE_FAN
Used to set the current fan mode of the thermostat.
SET_MODE_HOLD
Used to set the current hold mode of the thermostat.
SET_MODE_HUMIDITY
Used to set the humidification mode in a protocol driver.
SET_MODE_HVAC
Used to set the HVAC mode in a protocol driver.
SET_OUTDOOR_TEMPERATURE
Set the outdoor temperature which is used by some thermostats for the purpose of humidity balancing, fresh air venting, air quality venting, and other HVAC functionality.
SET_PRESET
Occurs when someone selects to run a preset OUTSIDE of its regular schedule.
SET_PRESETS
XML that the Proxy sends down to a protocol driver that contains information about presets. If preset scheduling is a capability of the protocol driver.
SET_SETPOINT_DEHUMIDIFY
Used to set the dehumidify setpoint.
SET_SETPOINT_COOL
Used to set the cool setpoint.
SET_SETPOINT_HEAT
Used to set the heat setpoint.
SET_SETPOINT_HUMIDIFY
Used to set the humidify setpoint.
SET_SETPOINT_SINGLE
Used to set the single setpoint value.
SET_VAC_SETPOINT_COOL
Used to set the cool setpoint when it vacation mode
SET_VAC_SETPOINT_HEAT
Used to set the heat setpoint when it vacation mode
SET_VACATION_MODE
Used to indicate if the thermostat is in vacation mode or not
Thermostat Proxy Variables
THERMOSTAT PROXY VARIABLES
Thermostats that use this proxy have the following registered variables that can be manipulated:
Note: Temperature Units are stored and processed in the proxy as Current Units, Kelvin * 10
, or Celsius * 10
depending on V1, V2 and programming.
CALIBRATION
(ID=1129) - int - Set to the value given with the Notify CALIBRATION_CHANGED
CoolSetPoint_C
(ID=1135) - Read only - Double representing the cool setpoint. Replaces CoolSetpoint
CoolSetPoint_F
(ID=1134) - Read only - Double representing the cool setpoint. Replaces CoolSetpoint
PRESET
(ID=1144) - Read Only - Name of the currently Active Preset in Preset Scheduling.
DEHUMIDIFY_SETPOINT
(ID=1143) - Read Only - Percent 0-100. (Note: The range and resolutions are set via capabilities)
FAN_MODE
(ID=1105) - string - Current Fan Mode
HEATCOOL_SETPOINTS_DEADBAND_C
(ID=1147) - Read Only - string - Setpoint different between heat and cool
HEATCOOL_SETPOINTS_DEADBAND_F
(ID=1146) - Read Only - string - Setpoint different between heat and cool
HeatSetPoint_F
(ID=1132) - Read only - Double representing the heat setpoint. Replaces HeatSetpoint
HeatSetPoint_C
(ID=1133) - Read only - Double representing the heat setpoint. Replaces HeatSetpoint
HEATPUMP
(ID=1124) - bool - Whether or not a heat pump exists.
HOLD_MODE
(ID=1106) - string - Current Hold Mode
HOLD_MODES_LIST
(ID=1122) - string - comma separated list of hold modes that can be selected for the thermostat.
HEATCOOL_SETPOINTS_DEADBAND_C
(ID=1147) - Read Only - string - Setpoint different between heat and cool
HUMIDITY_STATE
(ID=1141) - Read Only - Currently state. Typically Humidify, Humidify Auto or Dehumidify.
HVAC_MODES_LIST
(ID=1120) - string - comma separated list of hvac modes that can be selected for the thermostat.
HVAC STATE
(ID=1107) - string - Current HVAC State (Could be Heat, Heating, Cool, Cooling, 1st Stage Heat, or any other phrase passed in by the protocol driver for the HVAC_STATE
notify.
HVAC_MODE
(ID=1104) - string - Current HVAC Mode
IS_CONNECTED
(ID=1112) - bool - Indicator if the hardware is online/available. This will be set to 'true' on startup UNLESS a protocol driver has the has_connection_status
capability set to true. If this value is false, UI's will display "–" for temperature when the device is offline.
MESSAGE
(ID=1145) - Read Only - Status message that a protocol driver can send to the UI
REVERSING_VALVE
(ID=1128) - string - Name of reversing valve.
SINGLE_SETPOINT_F
(ID=1149) - Read only - Double representing the single setpoint.
SINGLE_SETPOINT_F
(ID=1149) - Read only - Double representing the single setpoint.
OUTDOOR_TEMPERATURE_C
(ID=1137) - Can be read and written. Read is for providing info to UI/Navigator or other thermostats and write is for allowing programming and other devices to set this value, which can be read by some devices (Including the C4 AAT Thermostat) so they do not have to be hard wired to outside to perform some calculations.
OUTDOOR_TEMPERATURE_F
(ID=1136) - Can be read and written. Read is for providing info to UI/Navigator or other thermostats and write is for allowing programming and other devices to set this value, which can be read by some devices (Including the C4 AAT Thermostat) so they do not have to be hard wired to outside to perform some calculations.
SCALE
(ID=1100) - String - the current scale that was passed in on the SCALE_CHANGED
notify.
SCHEDULE
(ID=1113) - string - XML of the entire schedule
TEMPERATURE_C
(ID=1131) - Read only - Double representing the temperature. Replaces TEMPERATURE
TEMPERATURE_F
(ID=1130) - Read only - Double representing the temperature. Replaces TEMPERATURE
VACATION_MODE
(ID=1109) - bool - Will be set to the value passed in for the VACATION_MODE's
ON_VACATION
parameter.
This variable will be deprecated when the traditional scheduling model is deprecated. No date has been set at this time for this deprecation.
UI Button Proxy Overview
The UI Button Proxy was delivered in OS 2.9.0. The proxy supports the display of a configurable button within Navigator. The button and can be placed onto any experience menu such as Listen, Watch, Security, Comfort. Navigator menu configuration for shortcuts supported by the button is done through ComposerPro's standard room menu controls.The button's icon can also change to reflect the state of the device that the button controls.
The XML name of the proxy is "UI Button". For example:
<proxies>
<proxy proxybindingid="5001" name="UI Button">uibutton</proxy>
</proxies>
To the right is an example of the connection information required to use the UI Button Proxy:
<connections>
<connection>
<id>5001</id>
<facing>6</facing>
<connectionname>UIBUTTON</connectionname>
<type>2</type>
<consumer>False</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>UIBUTTON</classname>
</class>
</classes>
</connection>
</connections>
Note that OS Release 2.10.0 enhanced this Proxy with the capability to allow for URL manipulation of Navigator's web module feature through the use of the HTML Web View.
HTML WebView Overview
Adding the HTML WebView functionality to an Experience (UIbutton) driver enables the driver developer to specify a web URL that can provide an HTML interface for the end user. The web UI is launched within an embedded browser on the Control4 T3 touch screen.
HTML WebView Usage Best Practice Recommendations
The Driver Developer should implement the proxy interfaces that Control4 provides as a standard part of the user experience to the full extent that these apply to the device. The web interface should be considered supplementary to the proxy interface.
The Driver Developer should keep the Web UI as simple as reasonably possible.
HTML WebView Usage Guidelines (rules):
The developer must self-certify their website on our current browsers (on the T3, T4s and Mobile devices). If they find any incompatibility between their HTML UI / website, and our embedded browser, they must code around it.
They must provide all support for their web UI.
The Experience driver can do no more than reference the external website, all log ins must occur at the web site, not within the driver.
There is no Control4 certification for an Experience driver that uses the HTML WebView capability.
Because these drivers are not certified, we reserve the right to post them or not to post them within the Control4 online database based on discretion.
If a call comes to our support, we MAY instruct the dealer to remove the driver, otherwise any support will be referred to the developer of the driver.
JavaScript API
The Proxy has also been enhanced to provide a JavaScript API that allows Driver hosted web views to send commands, subscribe to DATA_TO_UIs and variables using the existing mobile communication channels.
In addition to the APIs, a new capability has been added: mobile_webview_enabled
This functionality is available for all customers running mobile app version 321.46 (or later) and running OS 3.1.3 (or later).
A sample Driver: JavascriptAPIDemo.c4z is also available. To use the demo driver:
- Download the Javascript API driver from the JS demo Driver folder from the DiverWorks Github repository and add it to your project.
- Under the Project’s System Design, select the room where the driver was added.
- Under the Room’s Properties select Navigator.
- Note the that the demo driver (UI Button) is listed under the Device column in the following Experience Menus: Comfort, Listen, Security and Watch.
- Ensure that UI Button has a Visibility status of Visible in each of the Experience menus. The status can be changed by clicking on the Modify … button on the Properties screen.
- Refresh Navigators.
Demo Driver Usage
The driver utilizes a lightbulb and color variables to demonstrate the use of the web_view_url capability and new APIs. Selecting the UI Button driver from System Design will display the Advanced properties for the driver. The driver supports the selection of several states for the bulb.
Select a state, Red for example, and click the set Button. Verify the color state is red on Touchscreens in the room where the UI Button resides and mobile devices running this project. The color state can also be verified by double clicking the UI Button driver from System design.
The driver’s Lua output will from the Red State setting is displayed to the right.
OnPropertyChange(): States Red
OnPropertyChange(): States
Icon changed to: Red
Red
fireEvent(): Red
Next, from a mobile device, change the color of the bulb state to Blue. Verify the state change on Touchsrceens and double clicking the UI Button driver from System design.
The driver’s Lua output from changing from red State to Blue is displayed to the right.
OnPropertyChange(): States Red
OnPropertyChange(): States
Icon changed to: Red
Red
fireEvent(): Red
OnPropertyChange(): States Blue
Icon changed to: Blue
OnPropertyChange(): States
Blue
fireEvent(): Blue
WebView Mobile Usage Best Practice Recommendations
Webview Mobile App Usage Guidelines (rules):
When accessing a controller remotely through the App, a fully qualified URL should be used to ensure all UI resources will render correctly on the App. The mobile App cannot access local-style resources specified by the CSS. However, if the CSS is structured to include the fully qualified path including the controller syntax, the resource will be available both locally and remotely.
For example, here is a path that would successfully render a background image locally:
{ background-image: url(../images/wp_carbon_blue.jpg); padding: 16px; }
However, this path will fail to render the image on the mobile App. An example of a fully qualified URL to the background image would be:
{ background-image: url(controller://driver/JavascriptAPIDemo/contents/images/wp_carbon_blue.jpg); padding: 16px; }
Implementation
See the web_view_url capability
Supported HTML/CSS Components
The following HTML/CSS components and versions are shipped with the T3 and T4 touchscreens:
T4: (OS 3.2.1 or above)
- Mozilla 5.0
- Android 9 Mobile rv:96.0
- Gecko/96.0
- Firefox/96.0
T3: (OS 3.1.3 or above)
- Mozilla 5.0
- Android 4.4.2 Mobile rv: 96.0
- Gecko 96.0
- Firefox 96.0
T3: (OS 3.1.2 or below)
- Mozilla 5.0
- Linux for Android 4.4.2 rk3188 Build KOT49H
- AppleWebKit 537.36
- KHTML, like Gecko Version 4.0
- Chrome 30.0.0.0
- Safari 537.36
UI Button Capabilities
<navigator_display_options></navigator_display_options>
This capability adds the ability to display device state icons for the button. As of this release, icon resolution for non-Media Server Proxy based drivers is:
- 300x300px
- 90x90px
- 70x70px
Example
<capabilities>
<navigator_display_option proxybindingid="5001">
<display_icons>
<!-- Default Icon -->
<Icon width="300" height="300">controller://driver/shortcutTest/icons/msp_ico_settings/msp_ico_settings_300.png</Icon>
<!-- On State -->
<state id="Settings-on">
<Icon width="300" height="300">controller://driver/shortcutTest/icons/msp_ico_settings_a/msp_ico_settings_a_300.png</Icon>
</state>
<!-- Off State -->
<state id="Settings-off">
<Icon width="300" height="300">controller://driver/shortcutTest/icons/msp_ico_settings/msp_ico_settings_a_300.png</Icon>
</state>
</display_icons>
</navigator_display_option>
</capabilities>
Note, the example to the right does not include all icon sizes for brevity.
<web_view_url></web_view_url>
Optional Capability which, when added contains the default URL that is associated with the shortcut.
Example
<capabilities>
<web_view_url proxybindingid="5000">http://youtube.com</web_view_url>
</capabilities>
web_view_url
<web_view_url></web_view_url>
An optional capability which points to the c4z-delivered web application. The controller://driver/driver_name construct (i.e., the Controller URL Scheme) connects at the driver's www directory as the root of the path.
Note that the driver name MUST be the same as the driver's filename.
Example
<capabilities>
<web_view_url proxybindingid="5001">controller://driver/JavascriptAPIDemo/contents/index.html</web_view_url>
</capabilities>
mobile_web_view_enabled
<mobile_web_view_enabled></mobile_web_view_enabled>
An optional boolean capability that indicates that the driver can be shown in mobile clients when the web_view_url
capability is also present. Applicable to O.S. 3.0.0 and later.
UI Button Proxy Events
The UI Button Proxy currently supports one Event:
Selected
- Fired upon receiving the Select command.
UI Button Proxy Notifications
ICON_CHANGED
Notification sent to the proxy to change the driver's icon.
Signature
ICON_CHANGED
Parameter | Description |
---|---|
icon | str: value which references an icon state name defined in the display icons capability or an empty string to set the default icon. |
icon_description | str: Value of a human readable string describing the icon state. This is used in the List Navigator in place of the icon. |
Returns
None
DataToUI
Sends “icon” DataToUI: <icon>Settings-on</icon>
Also sends “icon_description” DataToUI: <icon_description>Settings are on</icon_description>
Example
C4:SendToProxy(5001, "ICON_CHANGED", {icon="Settings-on", icon_description="Settings are on"})
URL_CHANGED
Notification that supports the ability for the driver to dynamically change the web URL. This is useful in cases such as changing ports, load balancing and driver-delivered controller hosted UI content. This function is sent to the proxy when the URL changes. Note that if the parameter value is empty, then the URL is considered disabled and the web view will not be shown in navigator. Also, note, Navigator will not change the URL of an open web view.
Signature
URL_CHANGED
Parameter | Description |
---|---|
url | str: Value of the URL |
Returns
None
DataToUI
Sends “url” DataToUI: <url>http://google.com</url>
Example
C4:SendToProxy(5001, "URL_CHANGED", {url="http://control4.com"})
Usage Note
See the HTML Webview Overview content for more information.
UI Button Proxy Commands
SELECT
This command comes from the UI when a user selects the shortcut for the button. It is passed to the protocol driver and also sends the Selected event.
Signature
SELECT
Parameter | Type | Description |
---|---|---|
Device ID | NUM | The room device ID value where the shortcut was pressed in. Exposed by the LAST_ROOM_SELECTED variable. |
Menu | STR | The name of the menu the shortcut was selected in. Possible values: "listen", "watch", "security", "comfort", "service". Exposed by the LAST_MENU_SELECTED variable. |
UI Button Proxy Variables
LAST_MENU_SELECTED
String value of the name of the menu where the menu was selected. Possible values are: "listen", "watch", "security", "comfort", "service".
LAST_ROOM_SELECTED
Number value of the room id of the last room invoked by the Select command on the shortcut.
UI Button Proxy Webview JavaScript API
API OVERVIEW
Requires Navigator Version 321.46+
The Java Script API included with the UI Button proxy allows Driver hosted web views to send commands, subscribe to DATA_TO_UIs and variables using the existing mobile communication channels. This enables UI Button web views to work remotely. Previous versions of web views only worked on Control4 touchscreens residing on the local network.
Note that these API calls can only be made to the driver/protocol hosting the web page. UI Buttons pointing to external web pages will not be able to access the Javascript API.
C4.sendCommand
Sends a command to either the protocol or driver. All responses are sent back via the Javascript callback: onDataToUi(response: string)
. Driver writers will need to implement this callback in their web page. Errors are sent back via: onSendCommandError(message: string)
Signature
C4.sendCommand(commandName: string, params: string, async: boolean, sendToProtocol: boolean = false): void)
Parameter | Description |
---|---|
string | commandName - The name of the command to be executed by the driver or protocol. |
string | params - A JSON formatted string of parameters. Invalid JSON will trigger an exception. |
boolean | async - true to send the command asynchronously to ExecuteCommand(). false to send the command as a UI Request. |
boolean | sendToProtocol - Whether the command should be sent to the protocol or driver. |
Returns | Description |
---|---|
void | All responses, even for synchronous commands, will be sent back via the Javascript callback: onDataToUi(response: string) |
Callbacks | Description |
---|---|
onDataToUi(response: string) |
Callback to receive DATA_TO_UIs when subscribed. |
onSubscribeToDataToUiError(message: string) |
Callback to receive error messages when attempting to subscribe to DATA_TO_UIs. |
Example
C4.sendCommand("SetState", "{'state':'" + color + "'}", false, true);
C4.subscribeToDataToUi
Subscribes to the DATA_TO_UIs for either the protocol or proxy. All responses are sent back via the Javascript callback: onDataToUi(response: string)
. Driver writers will need to implement this callback in their web page to receive DATA_TO_UIs. Errors are sent back via: onSubscribeToDataToUiError(message: string)
Signature
C4.subscribeToDataToUi(sendToProtocol: boolean = false):void
Parameter | Description |
---|---|
boolean | sendToProtocol - Whether the command should be sent to the protocol (true ) or proxy (false ). |
Returns | Description |
---|---|
void | All responses will be sent back via the Javascript callback: onDataToUi(response: string) |
Callbacks | Description |
---|---|
onDataToUi(response: string) |
Receives DATA_TO_UIs when subscribed. DATA_TO_UIs are converted to json by Broker before being sent to the web page. |
onSubscribeToDataToUiError(message: string) |
Receives error messages when attempting to subscribe to DATA_TO_UIs. |
Example
Subscribes to the protocol's DataToUI events. Protocol driver's can send DataToUI
events by calling C4:SendDataToUI(xml)
or C4:SendDataToUI (strCommand, tParams)
C4.subscribeToDataToUi(true);
C4.subscribeToVariable
Subscribes to the specified variable for either the protocol or proxy. All responses are sent back via the Javascript callback: onVariable(response: string)
. Driver writers will need to implement this callback in their web page to receive variable change events. Errors are sent back via: onSubscribeToVariableError(message: string)
Signature
C4.subscribeToVariable("LAST_MENU_SELECTED", false);
Parameter | Description |
---|---|
string | variableName - The name of the variable to subscribe to for either the driver or protocol. |
boolean | protocol - Whether the variable is part of the protocol (true ) or proxy (false ). |
Returns | Description |
---|---|
void | All responses will be sent back via the Javascript callback: onDataToUi(response: string) |
Callbacks | Description |
---|---|
onVariable(response: string) |
Receives DATA_TO_UIs when subscribed. |
onSubscribeToVariableError(variableName: string, message: string) |
Receives error messages when attempting to subscribe to a variable. |
Example
Subscribes to the proxy's "LAST_MENU_SELECTED" variable.
C4.subscribeToVariable("LAST_MENU_SELECTED", false);
UI Button Proxy JavaScript Logging
Managing JS Logging using console.log
A debug console is included in the webview page to assist with viewing javascript logs. It is invoked by tapping 4 times on the header. The console appears in the lower half of the view and can be positioned as needed. Any JS console logging is shown in the console view.
Contact Overview
CONTACTS OVERVIEW
This area of the Proxy and Protocol Guide contains information for a developing a Contact driver. Contacts are unique in how they are handled within Control4's architecture. Contact drivers do not rely upon a proxy as most traditional drivers do. In the most simple use case, a contact driver is added to a project to provide icons on devices running Navigator for the contacts' state (open and close) or a change to that state. An example of this type of driver can be seen in the contactsingle_contactswitch.c4i
file. In a typical ComposerPro installation, this driver can be found in the following directory:
C:\Program Files\Control4\Composer###\Drivers\Virtual
Opening this driver in a text editor and reviewing several of the driver components is helpful in order to understand how a simple contact driver is used. To begin with, line 46 of this driver defines its proxy type. The value entered here is the filename of the driver without the .c4i file extension:
<proxy>contactsingle_contactswitch_c4</proxy>
The filename of the driver is used in the proxy tag because this driver does not reference a defined Control4 proxy. This is a required convention for all “Combo-drivers”. Populating the proxy tag in this manner is required for the driver to work.
The next section of code to review is the states section where icons are included. Beginning with line 49 we can see that this driver has two states: Open and Closed. These states are supported by icons that are loaded onto the controller upon installation of ComposerPro. The icons to the right represent the default icon for a contact switch:
<states>
<state>
<id>1</id>
<small>devices_sm\contactsingle_contactswitch_open.gif</small>
<large>devices_lg\contactsingle_contactswitch_open.gif</large>
</state>
<state>
<id>2</id>
<small>devices_sm\contactsingle_contactswitch_close.gif</small>
<large>devices_lg\contactsingle_contactswitch_close.gif</large>
</state>
</states>
Default icons vary based on the type of contact being represented by the driver. In the example to the right, if we look at the states section from the contactsingle_gate_c4i
file (located in the same directory) we'll see different icons being used:
<states>
<state>
<id>1</id>
<small>devices_sm\contactsingle_gate_open.gif</small>`
<large>devices_lg\contactsingle_gate_open.gif</large>`
</state>
<state>
<id>2</id>
<small>devices_sm\contactsingle_gate_close.gif</small>`
<large>devices_lg\contactsingle_gate_close.gif</large>`
</state>
</states>
Next, to the right we can examine the connection section of this driver we see the following:
<connections>
<connection>
<id>1</id>
<facing>6</facing>
<connectionname>Contact Sensor</connectionname>
<type>1</type>
<consumer>True</consumer>
<audiosource>False</audiosource>
<videosource>False</videosource>
<linelevel>False</linelevel>
<classes>
<class>
<classname>CONTACT_SENSOR</classname>
</class>
</classes>
</connection>
</connections>
All of the stock contact drivers use a connection type of 1. This is a control connection type and a requirement for the driver.
Finally, the last piece of driver code which needs to be considered is the control tag. If we look at the control value for the contact driver we see the following:
<control>control4_contactsingle</control>
Populating the control tag with the control4_contactsingle
value in this manner is required for the driver to work.
Control4 provides stock contact drivers for the following devices:
- Carbon Monoxide Detector
- Generic Contact
- Doorbell
- Door Contact Sensor
- Driveway Sensor
- Garage Door Sensor
- Gate
- Glass Break Detector
- Heat Detector
- Humidity Sensor
- IR Beam
- Motion Sensor
- Pressure Sensor
- Smoke Detector
- Water Sensor
- Window Contact Sensor
If the device that you would like to include in a ComposerPro project falls under one of the device types listed above, it can easily be supported through one of the stock contact drivers delivered through ComposerPro. This assumes, that your driver needs consist of a simple communication protocol which will reflect contact state on UI devices using stock icons. Driver needs that fall outside of the scope of this document are currently not supported through the Contact driver architecture.
Contact Notifications
CLOSED
Contact has closed.
Signature
CLOSED ()
Parameters
None
Returns
None
OPENED
Contact has opened.
Signature
OPENED ()
Parameters
None
Returns
None
STATE_CLOSED
Contact remains in the closed state.
Signature
STATE_CLOSED ()
Parameters
None
Returns
None
STATE_OPENED
Contact remains in the opened state.
Signature
STATE_OPENED ()
Parameters
None
Returns
None
Relay Overview
NON-PROXY DEVICE: RELAY OVERVIEW
This area of the Proxy and Protocol Guide contains information regarding commands and notifications for a developing a Relay driver. Together, these provide an interface for controlling the Relay. Generic commands such as On, Off, etc. are supported for controlling the Relay while feedback is received through the notifications to update the Control4 User Interface.
Relay Commands
CLOSE
Close relay.
Signature
CLOSE ()
Parameters
None
Returns
None
OPEN
OPEN relay.
Signature
OPEN ()
Parameters
None
Returns
None
TOGGLE
TOGGLE relay.
Signature
TOGGLE ()
Parameters
None
Returns
None
TRIGGER
TRIGGER relay.
Signature
TRIGGER ()
Parameter | Type | Description |
---|---|---|
TIME | INT | Milliseconds |
Returns
None
Relay Notifications
CLOSED
Relay has closed.
Signature
CLOSED ()
Parameters
None
Returns
None
OPENED
Relay has opened.
Signature
OPENED ()
Parameters
None
Returns
None
STATE_CLOSED
Relay remains in the closed state. Does not indicate a change in state.
Signature
STATE_CLOSED ()
Parameters
None
Returns
None
Usage Note
Send STATE_CLOSED
when the device initializes rather than CLOSED
. The driver will ignore the STATE_CLOSED
from the standpoint of events since it is not a state change but just a notification of the current state.
STATE_OPENED
Relay remains in the open state. Does not indicate a change in state.
Signature
STATE_OPENED ()
Parameters
None
Returns
None
Usage Note
Send STATE_OPENED
when the device initializes rather than OPENED
. The driver will ignore the STATE_OPENED
from the standpoint of events since it is not a state change but just a notification of the current state.
Best Practices
AV PATHING, UNSOLICITED NOTIFICATIONS AND CONTROL4 UI
Fundamentally, audio/video source/endpoint selection and pathing behavior in the Control4 system are expected to be under Control4’s control. Commands are expected to originate from the Control4 user interface. The user selects a source for playback in a certain room (as configured by the Control4 installer and automatically generated in the Control4 UI). When the user selects a source, the Control4 pathing algorithms dynamically select the best path from the selected source device to the audio/video endpoint(s) based on the connections configured by the Control4 installer. Drivers for the devices on the path are expected to handle the commands for on/off, source selection, input/output switching, etc. The drivers will receive commands and should send the proper notifications for each command received based on the Proxy/Protocol guide documentation. Because of this architectural choice made by Control4, the system will ignore unsolicited notifications (or notifications for which no command was sent). If the user is controlling a specific device in the path (through physical buttons, 1st-party product remote, or product-specific app), even if the driver sends a notification to the Control4 system the changes will not be propagated back up to the Control4 UI. Control4 will not run the pathing algorithms in reverse to try to interpret what has just happened. And the Control4 UI will be out of sync with the actual device status. Therefore, we recommend that the Control4 user interface be used for source selection.
Likewise, because of the automatic pathing algorithms, Control4 discourages driver developers from trying to mimic the pathing functionality of the system by having their driver select other device(s). When it comes to devices selecting other devices, it’s best to simply not do so in the driver because the driver doesn’t have access to all of the information that the installer has configured when the system was installed.
If a driver developer decides to implement this type of functionality, for a specific use case, we recommend that they include a dealer setup method on the properties page where the dealer actually selects which source is connected to which input and use that, combined with the Room On room selector property, to choose the source in the right room. This effectively replicates the programming the dealer would have to do on the programming page inside the driver and is a user-friendly way of doing this. We have not done this on any driver of ours yet though, because the use case of source selection outside of Control4 is so low because of the source control aspect.
If used, this behavior should be select-able by the dealer though, and not always forced, as there are likely to be scenarios where different behavior than expected by the client/dealer will happen, even though it’s “correct”.
Please note, however, that the above restriction only applies to AV-type device drivers. This does not apply to other types of devices controlled within the Control4 environment. Drivers for security system integrations, blinds/shades, relays/sensors, thermostats, etc. will always send notifications of state changes and these will be tracked by the Control4 system regardless of whether or not the command to perform the action which resulted in the state change originated with the Control4 UI.
AUTOBINDINGS in Receiver an TV DRIVERS
Usage Note on the use of Auto-Bindings in conjunction with the Receiver and TV Proxies:
If your Receiver and TV driver intends to use Auto-Binding feature in ComposerPro, the binding ID value for those connections must use an ID value of 7000. Any other value will result in the auto-binding connection not being created.
For example:
<connection proxybindingid="5000">
<id>7000</id>
<facing>6</facing>
<connectionname>Room Selection - Output</connectionname>
<type>7</type>
<consumer>False</consumer>
<audiosource>True</audiosource>
<videosource>True</videosource>
<linelevel>True</linelevel>
<classes>
<class>
<classname>AUDIO_SELECTION</classname>
</class>
<class>
<classname>AUDIO_VOLUME</classname>
</class>
<class>
<classname>VIDEO_SELECTION</classname>
</class>
</classes>
</connection>
USING THE UPDATE PROPERTY COMMAND
The UPDATE_PROPERTY
command is a non proxy-specific function that can be called from any device to change a property of any other device. This command modifies a Property of a device that is currently in a Control4 project. The command is sent from a driver other than that of the device who's property is being modified. This supports that ability to modify device properties externally.
Consider the following scenarios where UPDATE_PROPERTY
may be useful:
- A Primary device that is aware of the configuration of Secondary devices. The Primary device can use
UPDATE_PROPERTY
to send new configuration data to Secondary devices and ultimately to set the properties of the Secondary devices. - The replacement of an obsolete device driver with a new driver. Instead of manually copying a device’s properties to a new driver’s properties, a dealer could use the
UPDATE_PROPERTY
to automate this process.
Parameter | Description |
---|---|
str | Name: Name of the Property that is being modified. |
int | Value: The new value of the Property that is being modified. |
Returns
None
Example
C4:SendToDevice(deviceId, "UPDATE_PROPERTY", {Name = propName, Value = newPropValue})
OS 3 NAVIGATOR UI AND VOLUME CONTROL
In conjunction with OS 3, a new volume control slider is available on the Control4 UI. The use of this slider to set or change volume results in devices receiving volume adjustment commends every 750 milliseconds by default. This represents a sampling of the continuous volume commands that are being sent by the Navigator to the device. The Room Driver has the ability to throttle these commands being sent in order to ensure that volume behaves properly and that volume commands are not received faster than they can be processed and remain in the queue. This command throttling is managed through a new capability: <throttled_vol_ms_rate></throttled_vol_ms_rate>
This capability designates the amount of time (in milliseconds) that volume change commands are sent from the Navigator to the driver. For example: <throttled_vol_ms_rate>600</throttled_vol_ms_rate>
will result in volume commands being sent very 600 milliseconds.
In the event that a volume control device cannot process commands fast enough to accommodate the default use of the new volume control slider (750 milliseconds), this capability can be added to the driver's <capabilities></capabilities>
XML and an increased millisecond value be used.
Conversely, if a volume-control device driver can process volume commands fast enough to allow more commands being sent in a smaller millisecond time frame; it can use this capability to lower the time (increase the sampling) and provide a smoother volume control experience for the end user. For example, if the device is capable, a value of 250 milliseconds will provide a good volume slider experience. Values less than 200 milliseconds are not recommended.