Device Definition
The device definition is stored in two JSON configuration files such as master.json
and resource.json
in the directory of shared/res.
Master JSON File Descriptions
Master JSON file can represent device and configuration for thing agent.
-
devices[objectArray] : Define device type, name and so on.
- deviceType[string] : Device type of thing
- deviceName[string] : Human friendly name defined by the vendor (n of oic.wk.d)
- mnid[string] : Name of manufacturer (mnmn of oic.wk.p) (Manufacturer Identifier issued by DevWorkSpace)
- vid[string] : Vendor defined string for the platform (vid of oic.wk.p)
- nick[string] : (Optional) Nick name
-
configuration[object] : Define OTM, certificate type, and easy-setup information.
- otm[int] : Ownership Transfer Method: b0001 (Random PIN-based), b0010 (UserConfirm-based), b0100 (Preconfigured PIN)
The default value is 2. - crtType[int] : Certificate type
- 1(Test Certificate), 2(Artik Certificate), 3(Custom)
To use test certificate as described in Get Started, the value should be 1.
- 1(Test Certificate), 2(Artik Certificate), 3(Custom)
- easySetup[object] : Easy-setup information
- mode[string] : Easy-setup mode: 1(SoftAP), 2(Custom)
To use Soft AP as described in Get Started, the value should be 1. - setupId[string] : Setup Identifier. Onboarding ID registered in DevWorkSpace
- mode[string] : Easy-setup mode: 1(SoftAP), 2(Custom)
- otm[int] : Ownership Transfer Method: b0001 (Random PIN-based), b0010 (UserConfirm-based), b0100 (Preconfigured PIN)
Sample Master JSON File
{
"devices": [
{
"deviceType": "oic.d.xxxx",
"deviceName": "myname",
"mnid": "myid",
"vid": "myvid"
}
],
"configuration": {
"otm": 2,
"crtType" : 1,
"easySetup": {
"mode": 1,
"setupId": "001"
}
}
}
Resource JSON File Descriptions
Resource JSON file can represent resources which can be defined as resource URI, resource types and so on.
-
resources[object] : Define resources.
-
single[objectArray] : Define single resources
- device_no[int] : Device number for multi-device (It can be used only in case of multi-device.
The default value is 0) - uri[string] : URI of resource
- types[stringArray] : Resource types of resource
- interfaces[stringArray] : Interfaces of resource
- policy[int] : Policy (The default value is 7) : b0001 (Discoverable), b0010 (Observable), b0100 (Secure)
- device_no[int] : Device number for multi-device (It can be used only in case of multi-device.
-
collection[object] : Define collection resource
- device_no[int] : Device number for multi-device (It can be used only in case of multi-device. The default value is 0)
- uri[string] : URI of collection resource
- types[stringArray] : Resource types of collection resource
- interfaces[stringArray] : Interfaces of collection resource
- links[objectArray] : Collection child resources (Array of resource object, refer to ‘single’ resource definition and below sample JSON)
-
-
resourceTypes[objectArray] : Define types of resources.
-
type[string] : The name of a resource type
-
properties[objectArray] : Properties information of resource type
- key[string] : Property key name
- type[string] : Data type of a property key : boolean, integer, double, string, bytestring, object (In case of ‘bytestring’, it doesn’t support array type)
- isArray[bool] : Indicate whether data type is an array or not. (The default value is false.)
- readOnly[bool] : Indicate access authority of property. (The default value is false.)
- mandatory[bool] : Indicate whether the property is mandatory or not. (The default value is false.)
- description[string] : The description of the property key
- enumDescription[stringArray] : The possible strings for the property value
-
Sample Resource JSON File
{
"resources": {
"single": [
{
"uri": "/capability/switch/main/0",
"types": [
"x.com.st.powerswitch"
],
"interfaces": [
"oic.if.a",
"oic.if.baseline"
]
},
{
"uri": "/capability/audioVolume/main/0",
"types": [
"x.com.st.audiovolume"
],
"interfaces": [
"oic.if.a",
"oic.if.baseline"
]
}
],
"collection" :
{
"uri" : "/a/room",
"types" : ["core.room"],
"interfaces" : [
"oic.if.b",
"oic.if.baseline",
"oic.if.ll"
],
"links" :
[
{
"uri" : "/a/fan",
"types" : [
"core.fan"
],
"interfaces" : [
"oic.if.baseline"
]
},
{
"uri" : "/a/light",
"types" : [
"core.light"
],
"interfaces" : [
"oic.if.baseline"
]
}
]
}
},
"resourceTypes": [
{
"type": "x.com.st.powerswitch",
"properties": [
{
"key": "power",
"type": "string",
"isArray": false,
"readOnly": false,
"mandatory": true,
"description": "State of the power switch.",
"enumDescription": ["on", "off"]
}
]
},
{
"type": "x.com.st.audiovolume",
"properties": [
{
"key": "volume",
"type": "integer",
"mandatory": true,
"description": "Volume setting of an audio rendering device."
},
{
"key": "mute",
"type": "boolean",
"mandatory": true,
"description": "Mute setting of an audio rendering device"
},
{
"key": "command",
"type": "string",
"description": "Comand for controlling",
"enumDescription": ["increase", "decrease", "max", "min"]
}
]
},
{
"type" : "core.room",
"properties" : [
{
"key" : "name",
"type" : "string",
"mandatory" : true
}
]
},
{
"type" : "core.fan",
"properties" : [
{
"key" : "state",
"type" : "boolean",
"mandatory" : true
},
{
"key" : "speed",
"type" : "integer",
"mandatory" : true
}
]
},
{
"type" : "core.light",
"properties" : [
{
"key" : "state",
"type" : "boolean",
"mandatory" : true
},
{
"key" : "power",
"type" : "integer",
"mandatory" : true
}
]
}
]
}