Detailed instructions for use are in the User's Guide.
[. . . ] instruction manual
Standard NetLinx API (SNAPI) R 1. 8. 0
Components/Listeners
last revision: 8-29-06 Document ID: 033-004-2993
AMX Limited Warranty and Disclaimer
AMX Corporation warrants its products to be free of defects in material and workmanship under normal use for three (3) years from the date of purchase from AMX Corporation, with the following exceptions: · · · · · Electroluminescent and LCD Control Panels are warranted for three (3) years, except for the display and touch overlay components that are warranted for a period of one (1) year. Disk drive mechanisms, pan/tilt heads, power supplies, MX Series products, and KC Series products are warranted for a period of one (1) year. Unless otherwise specified, OEM and custom products are warranted for a period of one (1) year. Batteries and incandescent lamps are not covered under the warranty.
This warranty extends only to products purchased directly from AMX Corporation or an Authorized AMX Dealer. [. . . ] Note that this response is a command, not a string and can be captured in a DATA_EVENT in the COMMAND sub-section:
DATA_EVENT[dvDevice] { COMMAND: { // DATA. TEXT holds the response to a query command } }
General The NetLinx program should assume that NetLinx levels are initially 0 and that channels are 'off'. The SNAPI router will notify the NetLinx client upon a change of state. 41000:1:0 in the following statements:
DEFINE_DEVICE vdvModule = 41000:1:0 dvDevice = 135:1:0 DEFINE_MODULE 'LightModule' LightModule1 (vdvModule , dvDevice )
While it is possible to create a Duet Virtual Device on a port other than 1 and pass it to the Duet module, the behavior of the module is undefined.
Channel and Level Ranges
SNAPI uses only channels in range 1-299. Some channels are used for multiple functions but these channels belong to components that do not overlap within a single device. For instance, HVAC and Display both use channel 214 for setFanState and setFreezeOn respectively. Some channels are used for the same function in multiple components, for instance Video Conference and Display both define channel 191 for cyclePIPPosition. Channels 67-76 and 300-399 are reserved for modules to use for whatever functions they like. See specific module documentation for details on the channels used in that module. Some levels are used for the same function in multiple components, for instance HVAC, Pool/Spa and Weather all define level 34 for Outdoor Temperature. Levels 50-80 and above are reserved for modules to use for whatever functions they like. See specific module documentation for details on the levels used in that module.
6
Standard NetLinx API (SNAPI) R 1. 8. 0
Interfacing with Standard NetLinx API (SNAPI)
Commands and Escape Characters
SNAPI command uses comma as a parameter separator. If a parameter's value contains a comma, the parameter is escaping using double quotes at the start and end of the parameter. If a parameter's value contains a double quote character it is escaped with a pair of double quote characters. The following examples are properly escaped parameter values: 6 Hello Brown Eyed Girl "Morrison, Van" "Van ""The Man"" Morrison" The following examples are improperly escaped parameter values: Morrison, Van Van "The Man" Morrison SNAPI. axi includes a few helpful routines to build commands: DuetPackCmdHeader(Hdr) DuetPackCmdParam(Cmd, Param) DuetPackCmdParamArray(Cmd, Params[]) DuetPackCmdHeader is a command using a given command header where Hdr is the command header. DuetPackCmdParam adds a parameter to the command, escaping the parameter and adding parameter separators as needed; Cmd is the command to which the parameter is added and Param is the parameter to be added. DuetPackCmdParamArray is similar to DuetPackCmdParam but it takes an array of parameters and adds them to the command. SNAPI. axi includes a few helpful routines to parse commands as well: DuetParseCmdHeader(Cmd) DuetParseCmdParam(Cmd) DuetParseCmdHeader removes and returns the command header from a command. DuetParseCmdParam removes and returns the next parameter from the command, un-escaping the parameter as needed. Both of these functions return a string containing the command header or the parameter.
Standard NetLinx API (SNAPI) R 1. 8. 0
7
Interfacing with Standard NetLinx API (SNAPI)
An example program using these routines is shown below:
// Build cTestCmd cTestCmd cTestCmd cTestCmd cTestCmd a = = = = = command to be stored in cTestCmd DuetPackCmdHeader('COMMAND') DuetPackCmdParam(cTestCmd, 'Morrison, Van') DuetPackCmdParam(cTestCmd, 'Wild Nights') DuetPackCmdParam(cTestCmd, '"The Man"') DuetPackCmdParam(cTestCmd, 'Tupelo Honey')
// Resulting command is: // 'COMMAND-"Morrison, Van", Wild Nights, ""The Man"", Tupelo Honey' // Remove the parameters for this command cCmdheader = DuetParseCmdHeader(cTestCmd) SWITCH (cCmdheader) { CASE 'COMMAND': { cParam1 = DuetParseCmdParam(cTestCmd) cParam2 = DuetParseCmdParam(cTestCmd) cParam3 = DuetParseCmdParam(cTestCmd) cParam4 = DuetParseCmdParam(cTestCmd) // // // // } } cParam1 cParam2 cParam3 cParam4 = = = = 'Morrison, Van' 'Wild Nights' '"The Man"' 'Tupelo Honey'
8
Standard NetLinx API (SNAPI) R 1. 8. 0
Amplifier
Component Name: Amplifier Interface: IAmplifierComponent Component Functions: Name:
Intentionally left blank IAmplifierComponent
Channel:
Level: Command:
Constant:
Notes:
Listener Name: Amplifier Listener Interface: IAmplifierComponentListener Listener Functions: Name:
Intentionally left blank IAmplifierComponentListener
Channel:
Level: Command:
Constant:
Notes:
Standard NetLinx API (SNAPI) R 1. 8. 0
9
10
Standard NetLinx API (SNAPI) R 1. 8. 0
Audio Conferencer
Component Name: Audio Conferencer Interface: IAudioConferencerComponent IAudioConferencerComponent Component Functions: Name:
cyclePrivacy() setPrivacyOn(state) train()
Channel:
145 146 147
Level: Command:
Constant:
ACONF_PRIVACY ACONF_PRIVACY_ON ACONF_TRAIN
Notes:
Momentary Function Channel: Cycle privacy when channel is activated Discrete Function Channel: Privacy is on while channel is active Momentary Function Channel: Train is executed when the channel is activated
Listener Name: Audio Conferencer Listener Interface: IAudioConferencerComponentListener Listener Functions: Name:
processPrivacyEvent IAudioConferencerComponentListener
Channel:
146
Level: Command:
Constant:
ACONF_PRIVACY_FB
Notes:
Feedback Channel: Privacy is muted if channel is on
Standard NetLinx API (SNAPI) R 1. 8. 0
11
12
Standard NetLinx API (SNAPI) R 1. 8. 0
Audio Mixer
Component Name: Audio Mixer Interface: IAudioMixerComponent Component Functions: Name:
getAudioMixerCrosspoint(input, output) getAudioMixerPreset() isAudioMixerCrosspointMuteOn(input, output) IAudioMixerComponent
Channel:
Level: Command:
?XPOINT-<input>, <output>
Constant:
Notes:
Query for Audio Mixer Crosspoint, responds with XPOINT-<value>, <input>, <output> where <value> is 0 to 255, <input> is 1 to the maximum supported input and <output> is the maximum supported output (see specific module documentation) Query for Audio Mixer Preset, responds with MIXERPRESET-<preset> where <preset> is 1 to x and x is the maximum supported preset (see specific module documentation) Query for Audio Mixer Crosspoint Mute, responds with XPOINTMUTE<state>, <input>, <output> where <state> is 0 (un-muted) or 1 (muted), <input> is 1 to the maximum supported input and <output> is the maximum supported output (see specific module documentation) Save Audio Mixer Preset where <preset> is 1 to x and x is the maximum supported preset (see specific module documentation) Set Audio Mixer Crosspoint for <input> to one or more <output>s where <value> is 0 to 255. <input> is 1 to the maximum supported input and <output> is 1 to the maximum supported output (see specific module documentation) Set Audio Mixer Crosspoint Mute for <input> and <output> where <state> is 0 (unmuted) or 1 (muted). <input> is 1 to the maximum supported input and <output> is 1 to the maximum supported output (see specific module documentation) Recall Audio Mixer Preset where <preset> is 1 to x and x is the maximum supported preset (see specific module documentation)
?MIXERPRESET ?XPOINTMUTE-<input>, <output>
saveAudioMixerPreset(preset) setAudioMixerCrosspoint(input, output[], value) setAudioMixerCrosspointMuteOn(input, output, state) setAudioMixerPreset(preset)
MIXERPRESETSAVE-<preset> XPOINT-<value>, <input>, <output>[, <output>, <output>Ö] XPOINTMUTE-<state>, <input>, <output> MIXERPRESET-<preset>
Listener Name: Audio Mixer Listener Interface: IAudioMixerComponentListener Listener Functions: Name:
processAudioMixerCrosspointEvent processAudioMixerCrosspointMuteOnEvent processAudioMixerPresetEvent IAudioMixerComponentListener
Channel:
Level: Command:
XPOINT-<value>, <input>, <output>
Constant:
Notes:
Audio Mixer Crosspoint changed for <input> to one or more <output>s where <value> is 0 to 255. <input> is 1 to the maximum supported input and <output> is 1 to the maximum supported output (see specific module documentation) Audio Mixer Crosspoint Mute changed for <input> and <output> where <state> is 0 (unmuted) or 1 (muted). [. . . ] Value list will contain one forcast high temperature for each forecast day. Values are in degrees C or F depending on weather scale Query for Rain fall, responds with WEATHERRAIN-<duration>, <value> where <duration> is DAY, WEEK, MONTH, YEAR, YTD and <value> is in inches (Imperial Scale) or cm (Metric Scale). Query for Weather alert, responds with WEATHERALERT-<alert> where <alert> is a string containing the weather alert Query for forecast conditions, responds with FORECASTCONDITION-<day 1>, <day 2>, etc. . Values will be BLIZZARD, BLOWINGSNOW, CLEAR, CLOUDY, DRIZZLE, DUST, FAIR, FOG, FREEZINGDRIZZLE, FREEZINGRAIN, HAZE, HUMID, ICE, MOSTLYCLOUDY, MOSTLYSUNNY, PARTLYCLOUDY, RAIN, RAINSHOWERS, RAINSNOWMIX, SLEET, SMOKE, SNOW, SNOWFLURRIES, SNOWSHOWERS, SUNNY, THUNDERSTORMS, UNKNOWN, VERYCOLD, WINDY Query for the temperature scale, responds with WEATHERSCALE-<scale> where <scale> is IMPERIAL or METRIC Query for the wind speed/direction, responds with WEATHERWIND-<speed>, direction> where <speed> will be in mph or kph, depending on scale and <direction> will be N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW
?WEATHERCONDITION
getForecastHighTemperature()
?FORECASTHIGH
getForecastLowTemperature()
?FORECASTLOW
getRainfall(dur)
?WEATHERRAIN-<duration>
getWeatherAlert() getWeatherConditions()
?WEATHERALERT ?FORECASTCONDITION
getWeatherScale() getWindInfo()
?WEATHERSCALE ?WEATHERWIND
queryWeatherAll() setWeatherScale(us)
208 WEATHERSCALE-<scale>
WEATHER_FORCE_REA DING
Momentary Function Channel: Causes the weather station to update its readings when the channel is activated Set the weather scale, where <scale> is IMPERIAL or METRIC
Standard NetLinx API (SNAPI) R 1. 8. 0
159
Listener Name: Weather Listener Interface: IWeatherComponentListener Listener Functions: Name:
processBarometricPressureEvent processBarometricTrendEvent processBarometricTrendEvent processChanceOfPrecipitationEvent processCurrentConditionEvent 233 232 FORECASTCOP-<day 1>, <day 2>, etcÖ WEATHERCONDITION-<condition> IWeatherComponentListener
Channel:
Level: Command:
48
Constant:
WEATHER_BAR_LVL WEATHER_BAR_FALLIN G WEATHER_BAR_RISING
Notes:
Barometric pressure changed, value is in inches Hg (Imperial Scale) or mm Hg/torr (Metric Scale) Feedback Channel: Barometric pressure trend change (see chart below) Feedback Channel: Barometric pressure trend change (see chart below) Weather forecast chance of percipitation changes, value list will contain one forcast chance of percipitation for each forecast day. [. . . ]