Device Type Definition

The device type definition (_dp.xml) file contains the device type definition or definitions.

The contents of hue_light_dp.xml are shown here.



<?xml version="1.0"?>
<DeviceDescriptor xmlns="http://IoTProtocol"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://IoTProtocol ../../../Schemas/Soti.IoT.Schema.Definitions/content/device_profiles.xsd">

    <Resources>

        <Resource id="type">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="name">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="modelid">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="uniqueid">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="luminaireuniqueid">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="manufacturername">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="swversion">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <!--State -->

        <Resource id="on">
            <Type>boolean</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="bri">
            <Type>integer</Type>
            <Range >
                <Minimum >1</Minimum>
                <Maximum>254</Maximum>
            </Range>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="hue">
            <Type>integer</Type>
            <Range >
                <Minimum >0</Minimum>
                <Maximum>65535</Maximum>
            </Range>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="sat">
            <Type>integer</Type>
            <Range >
                <Minimum >0</Minimum>
                <Maximum>254</Maximum>
            </Range>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="x">
            <Type>float</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="y">
            <Type>float</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="ct">
            <Type>integer</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="alert">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="effect">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="colormode">
            <Type>string</Type>
            <Enumeration >
                <Value >none</Value>
                <Value>colorloop</Value>
            </Enumeration>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="reachable">
            <Type>boolean</Type>
            <Operations>rw</Operations>
        </Resource>

        <!--Command additions -->

        <Resource id="transitiontime">
            <Type>integer</Type>
            <Range >
                <Minimum >0</Minimum>
                <Maximum>100</Maximum>
            </Range>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="bri_inc">
            <Type>integer</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="sat_inc">
            <Type>integer</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="hue_inc">
            <Type>integer</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="ct_inc">
            <Type>integer</Type>
            <Operations>rw</Operations>
        </Resource>

        <!--protocol stack resources -->

        <Resource id="connectionURL">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="serverURL">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="publicKey">
            <Type>bytes</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="privateKey">
            <Type>bytes</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="securityMode">
            <Type>integer</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="manufacturer">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="UTCtime">
            <Type>datetime</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="startupTime">
            <Type>datetime</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="uptime">
            <Type>double</Type>
            <Operations>r</Operations>
            <Units>sec</Units>
        </Resource>

        <Resource id="version">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="id">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="ipAddress">
            <Type>string</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="data">
            <Type>bytes</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="level">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="size">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="layout">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="updateURL">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="packageName">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="packageVersion">
            <Type>string</Type>
            <Operations>rw</Operations>
        </Resource>

        <Resource id="state">
            <!--Description>State (idle, downloading; downloaded)</Description-->
            <Type>integer</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="initialized">
            <Type>boolean</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="updateResult">
            <!--Description>Update Result (default, success, download interrupted, checksum failure, not supported, invalid url)</Description-->
            <Type>integer</Type>
            <Operations>r</Operations>
        </Resource>

        <Resource id="log">
            <Type>file</Type>
            <Operations>r</Operations>
        </Resource>

    </Resources>

    <Groups>

        <Group id="Light">
            <Resource id ="id" idref="uniqueid"/>
            <Resource id ="type" idref="type"/>
            <Resource id ="name" idref="name"/>
            <Resource id ="modelid" idref="modelid"/>
            <Resource id ="uniqueid" idref="uniqueid"/>
            <Resource id ="manufacturername" idref="manufacturername"/>
            <Resource id ="swversion" idref="swversion"/>
            <Group id="state" idref="State"/>
        </Group>

        <Group id="State">
            <Resource id ="on" idref="on"/>
            <Resource id ="bri" idref="bri"/>
            <Resource id ="hue" idref="hue"/>
            <Resource id ="sat" idref="sat"/>
            <Resource id ="x" idref="x"/>
            <Resource id ="y" idref="y"/>
            <Resource id ="ct" idref="ct"/>
            <Resource id ="alert" idref="alert"/>
            <Resource id ="effect" idref="effect"/>
            <Resource id ="colormode" idref="colormode"/>
            <Resource id ="reachable" idref="reachable"/>
        </Group>

        <Group id="BWLight">
            <Resource id ="id" idref="uniqueid"/>
            <Resource id ="type" idref="type"/>
            <Resource id ="name" idref="name"/>
            <Resource id ="modelid" idref="modelid"/>
            <Resource id ="uniqueid" idref="uniqueid"/>
            <Resource id ="manufacturername" idref="manufacturername"/>
            <Resource id ="swversion" idref="swversion"/>
            <Group id="state" idref="BWState"/>
        </Group>

        <Group id="BWState">
            <Resource id ="on" idref="on"/>
            <Resource id ="bri" idref="bri"/>
            <Resource id ="alert" idref="alert"/>
            <Resource id ="reachable" idref="reachable"/>
        </Group>

        <!--Protocol stack groups-->

        <Group id="IOTServer">
            <Resource id="serverURL" idref="serverURL"/>
            <Resource id="publicKey" idref="publicKey"/>
            <Resource id="privateKey" idref="privateKey"/>
            <Resource id="securityMode" idref="securityMode"/>
            <!--no sec, preshared; x509    -->
        </Group>

        <Group id="PSP">
            <Resource id="manufacturer" idref="manufacturer"/>
            <Resource id="type" idref="type"/>
            <Resource id="version" idref="version"/>
            <Resource id="ipAddress" idref="ipAddress"/>
            <Resource id="initialized" idref="initialized"/>
            <Resource id="uptime" idref="uptime"/>
            <!--seconds-->
            <Resource id="UTCtime" idref="UTCtime"/>
            <!--ISO8601 string-->
            <Resource id="startupTime" idref="startupTime"/>
            <!--ISO8601 string-->
            <!--Resource id="connectionURL" idref="connectionURL"/-->
            <!--eventually will become grouplist-->
            <!--Group id="IOTServer" idref="IOTServer"/-->
        </Group>

        <Group id="Device">
            <Resource id="id" idref="id"/>
            <Resource id="type" idref="type"/>
        </Group>

        <!--
        <Group id="CloudServer">
            <Resource id="apikey" idref="apikey"/>
            <Resource id="secret" idref="secret"/>
            <Resource id="code" idref="code"/>
            <Resource id="token" idref="token"/>
            <Resource id="refreshToken" idref="refreshToken"/>
        </Group>
        -->

        <Group id="Log">
            <Resource id="data" idref="data"/>
            <!--Resource id="data" idref="log"/-->
            <Resource id="level" idref="level"/>
            <Resource id="layout" idref="layout"/>
            <Resource id="size" idref="size"/>
        </Group>

        <!--
        <Group id="Update">
            <Resource id="updateURL" idref="updateURL"/>
            <Resource id="packageName" idref="packageName"/>
            <Resource id="packageVersion" idref="packageVersion"/>
            <Resource id="update" idref="update"/>
            <Resource id="state" idref="state"/>
            <Resource id="updateResult" idref="updateResult"/>
        </Group>
        -->

    </Groups>

    <DeviceProfiles>

        <DeviceProfile id="HueLight">
            <Group id="Light" idref="Light"/>
            <GroupList id="Lights" idref="Light"/>
        </DeviceProfile>

        <DeviceProfile id="HueBWLight">
            <Group id="Light" idref="BWLight"/>
            <GroupList id="Lights" idref="BWLight"/>
        </DeviceProfile>

    </DeviceProfiles>

    <ProtocolProfile>
        <Group id="PSP" idref="PSP"/>
        <Group id="Log" idref="Log"/>
        <GroupList id="Devices" idref="Device"/>
        <!--Group id="Update" idref="Update"/-->
    </ProtocolProfile>

</DeviceDescriptor>