MQTT Flex ZTP

For mass provisioning of MQTT Flex things you can use our zero touch provisioning (ZTP) feature which provides the ability to pre-define device profiles to be provisioned when a device bootstraps.

When you create a device profile, you have the option to determine the following:

  • Auto Activate Devices - After provisioning, should the new MQTT Flex Thing be left in an allocated state or automatically activated for immediate use

  • Select a Plan - Set the MQTT Flex price plan which Flex Things using this profile should use. This is mandatory if you have selected to auto activate devices.

  • Mandatory Hardware Code - When a device calls the provisioning API on bootstrap there is an option for it to provide an additional unique hardware code e.g. IMEI for additional security. There is also the option to use a whitelist to ensure only devices with a known hardware code can be provisioned. If you chose to make the hardware code mandatory, you have the option on what action to take if a device tries to call the provisioning API with an existing hardware code, either return an error, or return the existing device credentials.

Once the profile is created, you'll find the endpoint URL and the provisioning token to be used on all devices that will use the profile on the Thing Details page. When devices call the endpoint with the provisioning token, an MQTT Flex Thing will be created and the credentials required for the MQTT client are returned so that the device can configure itself to connect.

The swagger docs for the API can be found here, and an example of the cURL command is below:


curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{

\"tags\": [

\"FlexDevicesGroupA\"

],

\"token\": \"<token for your device profile>\",

\"givenName\": \"ZTP1\",

\"hardwareId\": \"AXFGDSS1\"

}" https://api.thingstream.io/ztp/mqttflex/credentials