Skip to content

Device

Overview

The Device API is a global variable table that allows the script access to various constants (and psuedo-constants) maintained by the main Device Firmware when online, or Composer when offline.

This is especially helpful for TCP/UDP communications to allow Intelligent Modules to be associated with a given 3rd party Dante device.

Device.

Type Comment
Device.Offline Bool True if running offline in Composer

Device.Offline

Returns a Bool “true “ if the script is running while Composer is Offline. Returns Bool “false” if the script is running while Composer is Online.

print(Device.Offline) >> false

This is very commonly used to do different things if online or offline

if Device.Offline then

--Do some stuff when Offline

else

--Do different stuff when Online

end

Device.LocalUnit

The Device.LocalUnit API returns information about the device on which the script is executing.

Availability Type Comment
Device.LocalUnit.ControlIP 8.0 String Dotted IP address of network adapter used for control.
Device.LocalUnit.AudioIP 8.0 String Dotted IP address of network adapter used for network audio.
Device.LocalUnit.Name 8.0 String Network Name of the device running the script.
Device.LocalUnit.Type 8.0 Integer Hardware type enumeration of the device running the script.
Device.LocalUnit.TypeName 8.0 String Hardware type name of the device running the script.
Device.LocalUnit.InterfaceVersion 9.0 String The dotted version number of Composer that is executing the IM offline or pushed the IM online, e.g. “9.0.0.19”
Device.LocalUnit.FirmwareVersion 9.0 String The dotted version number of the firmware that is executing the IM online, i.e. “9.0.0.19”. The field is blank offline.
Device.LocalUnit.TimerResolution 9.0 Float The minimum timer period available in milliseconds.

Device.LocalUnit.ControlIP

Returns the dotted IP address of the network adapter used for control. When Online, this will be the actual Control IP address of the device on which the script is executing.

print(Device.LocalUnit.ControlIP) >> 192.168.0.10

This will be zero when Online before the IP address of the IP unit has resolved. The script can (and should) look for it being zero as an indicator the device has not completed booting yet as even if there is no network connection, it will eventually get a link local address.

When Composer is Offline, it will return the IP address of the network adapter designated for Control in the Intelligent Module Options window.

Device.LocalUnit.AudioIP

Returns the dotted IP address of the network adapter used for network audio. When Online, this will be the actual Audio Network IP address of the device on which the script is executing.

print(Device.LocalUnit.AudioIP) >> 169.254.1.21

This will be zero when Online before the IP address of the IP unit has resolved. The script can (and should) look for it being zero as an indicator the device has not completed booting yet as even if there is no network connection, it will eventually get a link local address.

When Composer is Offline, it will return the IP address of the network adapter designated for Network Audio in the Intelligent Module Options window.

Device.LocalUnit.Name

Returns the Name of the device on which the script is executing. This behaves the same when running Offline or Online.

print(Device.LocalUnit.Name) >> My Awesome Radius NX-1

This name will be unique for all devices in your Site. This is done by taking the user device name (editable in the Unit Properties dialog) and appending a Composer supplied enumeration to the end. In the case of the example above, “-1” is added.

Device.LocalUnit.Type

Returns an enumeration for the type of device on which the script is executing. This behaves the same when running Offline or Online.

print(Device.LocalUnit.Name) >> 113

Below is a list of the enumeration codes for all Symetrix devices that support Intelligent Modules:

  • Invalid = 0

  • Edge = 36

  • Solus NX 4x4 = 40

  • Solus NX 8x8 = 41

  • Solus NX 16x16 = 42

  • Radius 12x8 = 43

  • Radius 12x8 AEC = 46

  • Radius 12x8 EX = 64

  • Prism 4x4 = 71

  • Prism 8x8 = 72

  • Prism 12x12 = 73

  • Prism 16x16 = 74

  • Prism 0x0 = 104

  • Radius NX 12x8 = 110

  • Radius NX 4x4 = 113

  • Server D100 = 157

Device.LocalUnit.TypeName

Returns the name of the type of device on which the script is executing. This behaves the same when running Offline or Online. This will be the same for all devices of the same type.

print(Device.LocalUnit.TypeName) >> Radius NX 4x4

Device.LocalUnit.InterfaceVersion

Returns the dotted version number of Composer that is executing the IM offline or pushed the IM online.

print(Device.LocalUnit.InterfaceVersion) >> 9.0.0.19

Device.LocalUnit.FirmwareVersion

Returns the dotted version number of the firmware that is executing the IM online. The field is blank offline.

print(Device.LocalUnit.FirmwareVersion) >> 9.0.0.19

Device.LocalUnit.TimerResolution

Returns an float representing the minimum timer period available in milliseconds.

Radius NX, Edge and Prism class devices, are updated at a maximum of 4 Hz so the smallest allowable timer period is 0.25 seconds or 250 ms.

Server D100, is updated at a maximum of 1 Hz so the smallest allowable timer period is 0.1 seconds or 100 ms.

When running an IM offline, the value is the expected version for the firmware of the unit type the IM as placed in.

print(Device.LocalUnit.TimerResolution) >> 100

This is typically used to set the timer period.

Device.RemoteUnit

The Device.RemoteUnit API returns information about the associated User Library Dante Device and thus should only be used with these types of Intelligent Modules. If used in a script for a Stand Alone Intelligent Module, Device.RemoteUnit will return nil, thus any of the API calls will cause an error. To learn more about these two types of Intelligent Modules, see Creating Custom Intelligent Modules .

Type Comment
Device.RemoteUnit.IP String Dotted IP address of Dante unit’s control interface, if known.
Device.RemoteUnit.Name String Name of the Dante unit being controlled.
Device.RemoteUnit.Type Integer Hardware type enumeration of Dante unit being controlled.
Device.RemoteUnit.TypeName String Hardware type name of Dante unit being controlled.
Device.RemoteUnit.DanteIP String Dotted IP address of Dante unit’s audio interface.
Device.RemoteUnit.DanteMAC String MAC address of Dante unit in the form of XX:XX:XX:XX:XX.
Device.RemoteUnit.DanteName String Dante name of Dante unit being controlled.
Device.RemoteUnit.DanteModel String Model name of Dante unit being controlled.
Device.RemoteUnit.DanteMfg String Manufacturer name of Dante unit being controlled.

Device.RemoteUnit.IP

Returns the dotted IP address of the network adapter used for control of the associated Dante Device if known. When Online, this will be the actual Control IP address of the associated Dante Device.

print(Device.RemoteUnit.IP) >> 192.168.0.10

Note this is not known for most remote devices and the control IP needs to be determined through other means and entered manually by the user for use by the script. In this case the API will return “0.0.0.0”.

Device.RemoteUnit.Name

Returns the Network Name of the associated Dante Device. This behaves the same when running Offline or Online. This will be unique for all devices in your Site.

print(Device.RemoteUnit.Name) >> My Cool Dante Mic

This corresponds to the Network Name assigned in Composer which can be set automatically or manually from the Unit Properties dialog.

Device.RemoteUnit.Type

Returns an enumeration for the type of the associated Dante Devices. This behaves the same when running Offline or Online.

print(Device.RemoteUnit.Type) >> 94

A single code is used for all User Library Dante devices: 94. So all devices should return this code.

Device.RemoteUnit.TypeName

Returns the name of the type of the associated Dante Device. This behaves the same when running Offline or Online. This will be the same for all devices of the same type.

print(Device.RemoteUnit.TypeName) >> Audio-Technica-ATND971

Device.RemoteUnit.DanteIP

Returns the dotted IP address of the network adapter used for the Dante network of the associated Dante Device. This behaves the same when running Offline or Online.

print(Device.RemoteUnit.DanteIP) >> 169.254.1.21

Device.RemoteUnit.DanteMAC

Returns the MAC address of the network adapter used for the Dante network of the associated Dante Device. This behaves the same when running Offline or Online.

print(Device.RemoteUnit.DanteMAC) >> 12:34:56:78:90

Device.RemoteUnit.DanteName

Returns the Dante Name of the associated Dante Device. This behaves the same when running Offline or Online. This will be unique for all devices in your Site.

print(Device.RemoteUnit.DanteName) >> My Cool Dante Mic

This is the name assigned in Dante Controller.

Device.RemoteUnit.DanteModel

Returns the Dante Model Name of the associated Dante Device. This behaves the same when running Offline or Online. This will be the same for all products of the same model.

print(Device.RemoteUnit.DanteModel) >> ATND971

This is the Model Name found on the Status tab in Dante Controller.

Device.RemoteUnit.DanteMfg

Returns the Dante Manufacturer Name of the associated Dante Device. This behaves the same when running Offline or Online. This will be the same for all products with the same manufacturer.

print(Device.RemoteUnit.DanteMfg) >> Audio-Technica

This is the Manufacturer Name found on the Status tab in Dante Controller.

Usage Examples

The following examples illustrate how these can be used:

Example 1 – Check and make sure it is a good IP before using

Because the IP address may not be valid yet, you should check before using it.

--state

validIP = false

function TimerClick ()

--Check if IP was previously marked as valid

if validIP ~= true then

--If not yet valid, check if IP is Valid

if Device.LocalUnit.ControlIP ~= "0.0.0.0" then

--If valid, mark it as so for future use

validIP = true

end

--if not valid, try again next time timer fires

else

--do communications using the validated IP address

end

end

MyTimer = Timer.New()

MyTimer.EventHandler = TimerClick

MyTimer:Start(.5)