Device types
This document describes the types of devices nRF Cloud supports, and how they appear in API responses.
Devices
For information about adding devices to your team, see Onboarding to nRF Cloud.
MQTT team devices
An MQTT team device has MQTT permissions to subscribe to the message traffic of all devices associated with your team. It can also publish messages to any device on your team. You can use the certificate for this type of device to connect to the nRF Cloud MQTT broker and receive device traffic for debugging purposes. You can create multiple MQTT team devices associated with a team. For teams on the Developer billing plan, these devices count toward your team limits.
You can create MQTT team devices using the
CreateTeamDevice
endpoint. For a given MQTT team device, you can get or rotate its certificate,
and delete the device. See
MQTT Team Devices for the
complete list of endpoints. You can list these devices using the same
ListDevices
endpoint that returns information about a set of devices on your team, including
MQTT team devices.
MQTT team device topics
In addition to the MQTT topics listed for all devices, MQTT
team devices can access any topic path under the top-level {mqttTopicPrefix}
topic. In the following section, {mqttTopicPrefix} is the value of the
mqttTopicPrefix JSON field in the response to the
FetchAccountInfo
endpoint.
Attempts to subscribe to MQTT topic paths outside the {mqttTopicPrefix} topic,
other than topics allowed for all devices, will cause the MQTT broker to
disconnect the device.
You can substitute the MQTT wildcard + character for device IDs to subscribe
to events from all devices in the team. You can also use the MQTT wildcard #
character at the end of a topic to subscribe to any topic at that level or
below.
See the following table for examples.
| Topic | Purpose |
|---|---|
{mqttTopicPrefix}/# | Receive any message sent to or from all devices on the same team as the MQTT team device. |
{mqttTopicPrefix}/m/d/nrf-12345/# | Receive any message sent to or from the device nrf-12345. |
{mqttTopicPrefix}/m/d/nrf-12345/d2c | Receive any message sent by the device nrf-12345 to the d2c topic (but not to any subtopics). |
{mqttTopicPrefix}/m/d/nrf-12345/d2c/# | Receive any message sent by the device nrf-12345 to the d2c topic or any subtopic, such as d2c/bulk. |
{mqttTopicPrefix}/m/d/+/d2c | Receive any message sent by any device on their d2c topic only. |
{mqttTopicPrefix}/nrf-12345/shadow/# | Receive any message regarding shadow requests and responses sent to or from the device nrf-12345. |
{mqttTopicPrefix}/+/shadow/# | Receive any message regarding shadow requests and responses sent to or from all devices. |
{mqttTopicPrefix}/+/jobs/# | Receive any message regarding FOTA jobs sent to or from all devices. |
You can also use MQTT team devices to publish messages to any device on the same
team. For example, publishing to {mqttTopicPrefix}/m/d/nrf-12345/c2d/r will
send the message to the device nrf-12345. Wildcards are not supported for
publishing messages.
Software devices
A software device is a software application that runs a client capable of communication with nRF Cloud APIs. An example of this is the nRF Device Simulator, which uses MQTT to simulate device data and behavior.
You can run IoT devices on any type of hardware that supports an MQTT client, such as the Raspberry Pi. The type depends on your implementation for the device type.
Custom devices
nRF Cloud supports custom devices built using Nordic Semiconductor chips and is not limited to development kits.