One of the first activities to perform when planning your device-naming schemes is the creation of thing types. AWS IoT service allows you to create and allocate the thing type to each thing that you onboard into their cloud.
We have covered naming conventions previously in this book, so here we focus on the data that can be associated with a device within the cloud environment. For Microsoft Azure, IoT device identity properties are configured per device, and can include the properties listed in the following table:
Identity Property |
Description |
deviceId |
Up to 128 ASCII characters in length |
generationId |
Azure-generated identifier |
etag |
An entity tag per RFC 7232 |
auth |
Contains authentication and security information |
auth.symKey |
Base64 encoded symmetric keys (two) |
status |
Enabled or disabled (disabled cannot connect to device-facing services, controlling device access) |
statusReason |
Optional reason for device status |
statusUpdateTime |
Date/time of last status update |
connectionState |
Connected or disconnected state |
connectionStateUpdateTime |
Date/time of last state change |
lastActivityTime |
Date/time of last activity |
Other CSPs provide similar properties. IBM Watson, for example, allows you to set the TypeID (model of your device), DeviceID (serial number), and ClientID (your unique organizational identifier), while also allowing administrators to set optional identifiers that include manufacturer, model, deviceClass, and description.
For Watson IoT, the combination of TypeID, DeviceID, and ClientID is unique across the IBM Watson IoT Cloud. Watson also allows administrators to set useful attributes that include:
- clientID for MQTT messaging
- gatewayID of the fronting gateway
- hwVersion, representing the hardware of the device
- fwVersion, representing the firmware of the device
- descriptiveLocation, representing the location of the device
- metadata, which is free-form
- auth.id, representing the ID that added the device
- dateTime, representing when the device was added
- diag.logs, which is a URI pointer to device logs