The Device Management Protocol is the core component of the ACN network, as it is resoponsible to control the devices behaviour. While SDT communication takes place between components (the session leader and one or multiple session members), DMP messages are excahnged between devices. A SDT component may have multiple devices, e.g. each channel of a dimmer pack can be regarded as a DMP device.
DMP is set up on top of the SDT transportation layer, thus all DMP commands are sent as SLP messages to the SDT session members. The programmer may select freely whether DMP messages are sent "reliably" or "unreliably", depending on the properties values importance, e.g. all but the last dimmer values of a fast fade may be sent as unreliable packages, as the values are only valid for a short time.
The key element of DMP is the Property. Properties are somewhat similar to DMX channels but provide additional flexibility, as properties are able to hold not only integers in the range from 0-255 but can handle also large integers, floating point values or even strings. Properties may be writable and/or readable.
DMP uses six messages (and also six responses):
Message from controller
Response from device
The Get_property and Set_property commands and its responses are mostly self explainatory. Writing properties determines the fixtures behaviour (e.g. by setting the X-, or Y-position property of an automated fixture). By reading properties the session leader may aquire status information (e.g. the lamps operating hours) from the device.
As devices can be members of multiple sessions (can be controlled by multiple lighting controllers at the same time) property value changes have to be communicated to all controllers. The lighting controller may issue a Subscription_Request to the device in order to be informed about changes of specific property value changes. The device is responsible to create a new SDT session where it is the session leader and has to invite the requesting controller to join that session. Property value changes are then sent as Event messages to the created session.
All properties are arranged in a two dimesional matrix (with up to 32768 elements in each direction) and are identified by their row and column address respectively. Assigning the same property value to multiple properties at the same time is achieved by speciying the leftmost property on the top and the rightmost property at the bottom in the Set_property message.