IPSO Object Reference Guide
Estimated reading time: 18 minutes
The Internet Protocol for Smart Objects (IPSO) defines an object model, based on the Open Mobile Alliance (OMA) standard for the Internet of Things (IoT), to achieve interoperability for data transmitted between devices and application software. A common set of object definitions enables software to interact with any device.
Use these sections as an overview of IPSO objects.
- DeviceHub OMA Binding - Bind objects in OT Link Platform to format the collected data according to the OMA standard so that it will have the structure required for further processing.
What are IPSO Objects?
Simply put, IPSO objects based on the OMA standard represent anything that can be measured.
IoT devices contain one or more of these components from which measurements can be collected:
- Sensor: A device sensor detects a condition/state and then converts one form of energy into another. When converted to electrical energy, sensor values can be read and the device can be managed.
- Actuator: An actuator takes electrical energy and converts it into an action, such as turning a device on or off.
Smart Object Standards
The smart object model has the following characteristics:
- Standard protocol-independent format.
- Objects define anything that provides data about a device. For example, a light sensor is one object while digital input is another object—each with its own unique object ID.
- An object represents a single measurement value (such as temperature), a control point (such as an on/off switch), or an actuator (such as a dimmer).
- Each object can have multiple resources, such as an on/off switch or the time a device was turned on. These resources can be accessed, read, and managed.
- Each object is defined with an Object ID and each of the object’s resources has a Resource ID that defines an object’s observable property, such as a temperature or humidity sensor, or an on/off switch or dimmer. An Instance ID is used to identify a specific object, when there are multiple occurrences of an object. Object Instances serve as containers for resources (observable properties or targets for actuation).
The URI (Uniform Resource Identifier) for an object follows this format:
Object_ID/Instance_ID/Resource_ID
Example of an Actuation Object
An IPSO object for remote actuation, such as turning a device on/off or dimming a light, can have a variety of resources.
- Actuation Object ID: 3306
- Resource ID for the on/off switch: 5850
- Resource ID for the dimmer: 5851
- Resource ID for the time the device has been turned on: 5852
- Resource ID for the state of multi-level output (such as a pilot wire): 5853
- Resource ID for the device’s application type (such as motion closure): 5750
- Instance ID: 0 (for a single occurrence of the object)
The JSON schema for an Actuation object:
{ "timestamp": 0, "values": [ { "objectId": 3306, "instanceId": 0, "resourceId": 5850, "datatype": "Boolean", "value": 1 } ] }
Example of a Temperature Sensor Object
- Temperature Sensor Object ID: 3303
- Resource ID for Sensor Value: 5700
- Resource ID for Minimum Measured Value: 5601
- Resource ID for Maximum Measured Value: 5602
- Resource ID for Minimum Value Possible for Sensor: 5603
- Resource ID for Maximum Value Possible for Sensor: 5604
- Resource ID for Resetting the Min/Max Values to Current Value: 5605
- Instance ID: 0 (for a single occurrence of the object)
JSON schema for a Temperature Sensor object:
{ "timestamp": 0, "values": [ { "objectId": 3303, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 12.12 } ] }
Objects Defined by the OMA Standard
Additional information can be found on the Open Mobile Alliance website.
LWM2M Objects |
||
---|---|---|
Object | Object ID | Minimum JSON (Resource for LWM2M Object Definitions: OMA LWM2M Objects) |
LWM2M Security | 0 |
{ "timestamp": 0, "values": [{ "objectId": 0, "instanceId": 0, "resourceId": 0, "datatype": "String", "value": ID in the format of coaps://host:port }, { "objectId": 0, "instanceId": 0, "resourceId": 1, "datatype": "Boolean", "value": 1 }, { "objectId": 0, "instanceId": 0, "resourceId": 2, "datatype": "Integer", "value": 0-3 }, { "objectId": 0, "instanceId": 0, "resourceId": 3, "datatype": "Opaque", "value": "" }, { "objectId": 0, "instanceId": 0, "resourceId": 4, "datatype": "Opaque", "value": "" }, { "objectId": 0, "instanceId": 0, "resourceId": 5, "datatype": "Opaque", "value": "" }, { "objectId": 0, "instanceId": 0, "resourceId": 6, "datatype": "Integer", "value": 0-255 }, { "objectId": 0, "instanceId": 0, "resourceId": 7, "datatype": "Opaque", "value": "" }, { "objectId": 0, "instanceId": 0, "resourceId": 8, "datatype": "Opaque", "value": "" }, { "objectId": 0, "instanceId": 0, "resourceId": 9, "datatype": "Integer", "value": "" }, { "objectId": 0, "instanceId": 0, "resourceId": 11, "datatype": "Integer", "value": "" }] } |
LWM2M Server | 1 |
{ "timestamp": 0, "values": [{ "objectId": 1, "instanceId": 0, "resourceId": 0, "datatype": "Integer", "value": 1 }, { "objectId": 1, "instanceId": 0, "resourceId": 1, "datatype": "Integer", "value": 1 }, { "objectId": 1, "instanceId": 0, "resourceId": 6, "datatype": "Boolean", "value": 1 }, { "objectId": 1, "instanceId": 0, "resourceId": 7, "datatype": "String", "value": possible values of Resource are listed in 5.2.1.1 }, { "objectId": 1, "instanceId": 0, "resourceId": 8, "datatype": "", "value": },] } |
Access Control | 2 |
{ "timestamp": 0, "values": [{ "objectId": 2, "instanceId": 0, "resourceId": 0, "datatype": "Integer", "value": 1-65534 }, { "objectId": 2, "instanceId": 0, "resourceId": 1, "datatype": "Integer", "value": 0-65535 }, { "objectId": 2, "instanceId": 0, "resourceId": 3, "datatype": "Integer", "value": 0-65535 }] } |
Device | 3 |
{ "timestamp": 0, "values": [{ "objectId": 3, "instanceId": 0, "resourceId": 4, "datatype": "", "value": "" }, { "objectId": 3, "instanceId": 0, "resourceId": 11, "datatype": "Integer", "value": 0 }, { "objectId": 3, "instanceId": 0, "resourceId": 16, "datatype": "String", "value": possible values of Resource are combination of \"U\" or \"UQ\" and \"S\" or \"SQ\" }] } |
Connectivity Monitoring | 4 |
{ "timestamp": 0, "values": [{ "objectId": 4, "instanceId": 0, "resourceId": 0, "datatype": "Integer", "value": network bearer used for the current LWM2M communication session }, { "objectId": 4, "instanceId": 0, "resourceId": 1, "datatype": "Integer", "value": value from the network bearer list }, { "objectId": 4, "instanceId": 0, "resourceId": 2, "datatype": "Integer", "value": average value of the received signal strength }, { "objectId": 4, "instanceId": 0, "resourceId": 4, "datatype": "String", "value": IP addresses assigned to the connectivity interface. (e.g. IPv4, IPv6) },] } |
Firmware | 5 |
{ "timestamp": 0, "values": [{ "objectId": 5, "instanceId": 0, "resourceId": 0, "datatype": "Opaque", "value": "" }, { "objectId": 5, "instanceId": 0, "resourceId": 1, "datatype": "String", "value": URI from where the device can download the firmware package by an alternative mechanism }, { "objectId": 5, "instanceId": 0, "resourceId": 2, "datatype": "", "value": "" }, { "objectId": 5, "instanceId": 0, "resourceId": 3, "datatype": "Integer", "value": "1" }, { "objectId": 5, "instanceId": 0, "resourceId": 5, "datatype": "Integer", "value": "0" }] } |
Location | 6 |
{ "timestamp": 0, "values": [{ "objectId": 6, "instanceId": 0, "resourceId": 0, "datatype": "String", "value": decimal notation of latitude }, { "objectId": 6, "instanceId": 0, "resourceId": 0, "datatype": "String", "value": decimal notation of longitude}, { "objectId": 6, "instanceId": 0, "resourceId": 5, "datatype": "time", "value": timestamp of measurement}] } |
Connectivity Statistics | 7 |
{ "timestamp": 0, "values": [{ "objectId": 7, "instanceId": 0, "resourceId": 6, "datatype": "", "value": "" }] } |
Lock and Wipe | 8 |
{ "timestamp": 0, "values": [{ "objectId": 8, "instanceId": 0, "resourceId": 0, "datatype": "Integer", "value": 0 }, { "objectId": 8, "instanceId": 0, "resourceId": 1, "datatype": "String", "value": specify one or several targets for the lock operation }] } |
Software Management | 9 |
{ "timestamp": 0, "values": [{ "objectId": 9, "instanceId": 0, "resourceId": 0, "datatype": "String", "value": name of the software package }, { "objectId": 9, "instanceId": 0, "resourceId": 1, "datatype": "String", "value": version of the software package }, { "objectId": 9, "instanceId": 0, "resourceId": 2, "datatype": "Opaque", "value": software package }, { "objectId": 9, "instanceId": 0, "resourceId": 3, "datatype": "String", "value": URI for software package download }, { "objectId": 9, "instanceId": 0, "resourceId": 4, "datatype": "", "value": "" }, { "objectId": 9, "instanceId": 0, "resourceId": 6, "datatype": "", "value": "" }, { "objectId": 9, "instanceId": 0, "resourceId": 7, "datatype": "Integer", "value": 1-5 }, { "objectId": 9, "instanceId": 0, "resourceId": 9, "datatype": "Integer", "value": 0-10 }, { "objectId": 9, "instanceId": 0, "resourceId": 10, "datatype": "", "value": "" }, { "objectId": 9, "instanceId": 0, "resourceId": 11, "datatype": "", "value": "" }, { "objectId": 9, "instanceId": 0, "resourceId": 12, "datatype": "Boolean", "value": 1 }] } |
Cellular Connectivity | 10 |
|
APN Connection Profile |
11 |
|
WLAN Connectivity | 12 | |
Bearer Selection | 13 | |
Software Component | 14 | |
DevCapMgmt | 15 | |
Portfolio | 16 | |
Communications Characteristics | 17 | |
Non-Access Stratum (NAS) Configuration | 18 | |
LWM2M AppData | 19 | |
IPSO Objects (See also, OMA Data Objects in Detail) |
||
Object | Object ID | MInimum JSON |
Digital Input |
3200 |
{ "timestamp": 0, "values": [{ "objectId": 3200, "instanceId": 0, "resourceId": 5500, "datatype": "Boolean", "value": 1 }] } |
Digital Output |
3201 |
{ "timestamp": 0, "values": [ { "objectId": 3201, "instanceId": 0, "resourceId": 5550, "datatype": "Boolean", "value": 1 } ] } |
Analogue Input |
3202 |
{ "timestamp": 0, "values": [ { "objectId": 3202, "instanceId": 0, "resourceId": 5600, "datatype": "Float", "value": 10.2 } ] } |
Analogue Output |
3203 |
{ "timestamp": 0, "values": [ { "objectId": 3203, "instanceId": 0, "resourceId": 5650, "datatype": "Float", "value": 10.2 } ] } |
Generic Sensor |
3300 |
{ "timestamp": 0, "values": [ { "objectId": 3300, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 10.2 } ] } |
Illuminance Sensor |
3301 |
{ "timestamp": 0, "values": [ { "objectId": 3301, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 10.2 } ] } |
Presence Sensor |
3302 |
{ "timestamp": 0, "values": [ { "objectId": 3302, "instanceId": 0, "resourceId": 5500, "datatype": "Boolean", "value": 0 } ] } |
Temperature Sensor |
3303 |
{ "timestamp": 0, "values": [ { "objectId": 3303, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 12.12 } ] } |
Humidity Sensor |
3304 |
{ "timestamp": 0, "values": [ { "objectId": 3304, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 12.12 } ] } |
Power Measurement |
3305 |
{ "timestamp": 0, "values": [ { "objectId": 3305, "instanceId": 0, "resourceId": 5800, "datatype": "Float", "value": 12.12 } ] } |
Actuation |
3306 |
{ "timestamp": 0, "values": [ { "objectId": 3306, "instanceId": 0, "resourceId": 5850, "datatype": "Boolean", "value": 1 } ] } |
Set Point |
3308 |
{ "timestamp": 0, "values": [ { "objectId": 3308, "instanceId": 0, "resourceId": 5900, "datatype": "float", "value": 11.3 } ] } |
Load Control |
3310 |
{ "timestamp": 0, "values": [ { "objectId": 3310, "instanceId": 0, "resourceId": 5823, "datatype": "String", "value": "Event identifier" }, { "objectId": 3310, "instanceId": 0, "resourceId": 5824, "datatype": "String", "value": "Start Time" }, { "objectId": 3310, "instanceId": 0, "resourceId": 5825, "datatype": "String", "value": "Duration in minimum" } ] } |
Light Control |
3311 |
{ "timestamp": 0, "values": [ { "objectId": 3311, "instanceId": 0, "resourceId": 5850, "datatype": "Boolean", "value": 1 } ] } |
Power Control |
3312 |
{ "timestamp": 0, "values": [ { "objectId": 3312, "instanceId": 0, "resourceId": 5850, "datatype": "Boolean", "value": 1 } ] } |
Accelerometer |
3313 |
{ "timestamp": 0, "values": [ { "objectId": 3313, "instanceId": 0, "resourceId": 5702, "datatype": "Float", "value": 11.2 }, { "objectId": 3313, "instanceId": 0, "resourceId": 5703, "datatype": "Float", "value": 11.2 }, { "objectId": 3313, "instanceId": 0, "resourceId": 5704, "datatype": "Float", "value": 11.2 } ] } |
Magnetometer |
3314 |
{ "timestamp": 0, "values": [ { "objectId": 3314, "instanceId": 0, "resourceId": 5702, "datatype": "Float", "value": 11.2 } ] } |
Barometer |
3315 |
{ "timestamp": 0, "values": [ { "objectId": 3315, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Voltage |
3316 |
{ "timestamp": 0, "values": [ { "objectId": 3316, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Current |
3317 |
{ "timestamp": 0, "values": [ { "objectId": 3317, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Frequency |
3318 |
{ "timestamp": 0, "values": [ { "objectId": 3318, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Depth |
3319 |
{ "timestamp": 0, "values": [ { "objectId": 3319, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Percentage |
3320 |
{ "timestamp": 0, "values": [ { "objectId": 3320, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Altitude |
3321 |
{ "timestamp": 0, "values": [ { "objectId": 3321, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Load |
3322 |
{ "timestamp": 0, "values": [ { "objectId": 3322, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Pressure |
3323 |
{ "timestamp": 0, "values": [ { "objectId": 3323, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Loudness |
3324 |
{ "timestamp": 0, "values": [ { "objectId": 3324, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Concentration |
3325 |
{ "timestamp": 0, "values": [ { "objectId": 3325, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Acidity |
3326 |
{ "timestamp": 0, "values": [ { "objectId": 3326, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Conductivity |
3327 |
{ "timestamp": 0, "values": [ { "objectId": 3327, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Power |
3328 |
{ "timestamp": 0, "values": [ { "objectId": 3328, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Power Factor |
3329 |
{ "timestamp": 0, "values": [ { "objectId": 3329, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Distance |
3330 |
{ "timestamp": 0, "values": [ { "objectId": 3330, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 11.2 } ] } |
Energy | 3331 |
{ "timestamp": 0, "values": [ { "objectId": 3331, "instanceId": 0, "resourceId": 5805, "datatype": "Float", "value": 11.2 } ] } |
Direction | 3332 |
{ "timestamp": 0, "values": [ { "objectId": 3332, "instanceId": 0, "resourceId": 5705, "datatype": "Float", "value": 11.2 } ] } |
Time | 3333 |
{ "timestamp": 0, "values": [ { "objectId": 3333, "instanceId": 0, "resourceId": 5506, "datatype": "Float", "value": 11.2 } ] } |
Gyrometer | 3334 |
{ "timestamp": 0, "values": [ { "objectId": 3334, "instanceId": 0, "resourceId": 5702, "datatype": "Float", "value": 12.3 }, { "objectId": 3334, "instanceId": 0, "resourceId": 5703, "datatype": "Float", "value": 123.4 }, { "objectId": 3334, "instanceId": 0, "resourceId": 5704, "datatype": "Float", "value": 45.2 } ] } |
Color | 3335 |
{ "timestamp": 0, "values": [ { "objectId": 3335, "instanceId": 0, "resourceId": 5706, "datatype": "String", "value": "RED" } ] } |
GPS Lodation | 3336 |
{ "timestamp": 0, "values": [ { "objectId": 3336, "instanceId": 0, "resourceId": 5514, "datatype": "String", "value": "Latitude" }, { "objectId": 3336, "instanceId": 0, "resourceId": 5515, "datatype": "String", "value": "Longitude" } ] } |
Positioner | 3337 |
{ "timestamp": 0, "values": [ { "objectId": 3337, "instanceId": 0, "resourceId": 5536, "datatype": "Float", "value": 12.3 }, { "objectId": 3336, "instanceId": 0, "resourceId": 5537, "datatype": "Float", "value": 2.234 } ] } |
Buzzer | 3338 |
{ "timestamp": 0, "values": [ { "objectId": 3338, "instanceId": 0, "resourceId": 5850, "datatype": "Boolean", "value": 1 } ] } |
Audio Clip | 3339 |
{ "timestamp": 0, "values": [ { "objectId": 3339, "instanceId": 0, "resourceId": 5522, "datatype": "Opaque", "value": "clip" } ] } |
Timer | 3340 |
{ "timestamp": 0, "values": [ { "objectId": 3340, "instanceId": 0, "resourceId": 5521, "datatype": "Float", "value": 10.23 } ] } |
Addressable Text Display | 3341 |
{ "timestamp": 0, "values": [ { "objectId": 3341, "instanceId": 0, "resourceId": 5527, "datatype": "String", "value": "Text" } ] } |
On/Off Switch | 3342 |
{ "timestamp": 0, "values": [ { "objectId": 3342, "instanceId": 0, "resourceId": 5500, "datatype": "Boolean", "value": 0 } ] } |
Lever Control | 3343 |
{ "timestamp": 0, "values": [ { "objectId": 3343, "instanceId": 0, "resourceId": 5851, "datatype": "Float", "value": 0.23 } ] } |
Up/Down Control | 3344 |
{ "timestamp": 0, "values": [ { "objectId": 3344, "instanceId": 0, "resourceId": 5532, "datatype": "Boolean", "value": 0 } ] } |
Multiple Axis Joystick | 3345 |
{ "timestamp": 0, "values": [ { "objectId": 3345, "instanceId": 0, "resourceId": 5500, "datatype": "Boolean", "value": 0 } ] } |
Rate | 3346 |
{ "timestamp": 0, "values": [ { "objectId": 3346, "instanceId": 0, "resourceId": 5700, "datatype": "Float", "value": 0.12 } ] } |
Push Button | 3347 |
{ "timestamp": 0, "values": [ { "objectId": 3347, "instanceId": 0, "resourceId": 5500, "datatype": "Boolean", "value": 0 } ] } |
Multistate Selector | 3348 |
{ "timestamp": 0, "values": [ { "objectId": 3348, "instanceId": 0, "resourceId": 5547, "datatype": "Integer", "value": 12 } ] } |