×
Community Blog How to Implement Dynamic Registration of IoT Devices Using Alibaba Cloud Function Compute

How to Implement Dynamic Registration of IoT Devices Using Alibaba Cloud Function Compute

In this short tutorial, we will look at how we can easily implement dynamic IoT device registration using Function Compute and IoT Platform.

In this article, we will discuss how we can implement dynamic registration of Internet of Things (IoT) devices the serverless way using Alibaba Cloud Function Compute.

1

The figure above only demonstrates the core process of dynamically registering devices through the API, but the production environment must add security verification logic based on the enterprise situation to ensure the identity security of the devices.

Technical Implementation

  1. The device is activated and carries the deviceId (device unique identifier) to initiate the HTTPS request to FC
  2. FC calls the RegåisterDevice interface of the IoT Platform and passes the productKey and deviceId
    1. If it succeeds, return the device trituples
    2. If it fails, call the QueryDeviceDetail interface of the IoT Platform, pass the productKey and deviceId, and obtain the device trituples
    3. After obtaining the trituples, the device connects the Alibaba Cloud IoT Platform through MQTT.

This involves the use of the RegisterDevice and QueryDeviceDetail APIs.

RegisterDevice https://www.alibabacloud.com/help/doc-detail/69470.htm

QueryDeviceDetail https://www.alibabacloud.com/help/doc-detail/69594.htm

https://help.aliyun.com/document_detail/69594.html

Implementation on Function Compute

Node.js

const getRawBody = require('raw-body');
const co = require('co');
const RPCClient = require('@alicloud/pop-core'). RPCClient;

const options = {
    accessKey: "AK of the cloud account",
    accessKeySecret: "AK Secret of the cloud account",
};
//1. Create a client
const iotClient = new RPCClient({
    accessKeyId: options.accessKey,
    secretAccessKey: options.accessKeySecret,
    endpoint: options.endpoint || 'https://iot.cn-shanghai.aliyuncs.com',
    apiVersion: options.apiVersion || '2018-01-20'
});

const productKey = 'productKey of the product';

module.exports.handler = function(req, resp, context) {
    
    getRawBody(req, function(err, body) {

        body = JSON.parse(decodeURIComponent(body.toString()));
        const deviceId = body.deviceId;

        co(function* () {

            try {
                //Create a device
                const registerResponse = yield iotClient.request('RegisterDevice', {
                    productKey: productKey,
                    deviceName: deviceId
                });

                resp.send(JSON.stringify({ success: true, data: registerResponse.Data }));
            } catch (err) {
                //The device already exists; check the device details
                const queryResponse = yield iotClient.request('QueryDeviceDetail', {
                    productKey: productKey,
                    deviceName: deviceId
                });
                const returnJson = { success: true }
                returnJson.data = {
                    DeviceName: queryResponse.Data.DeviceName,
                    ProductKey: queryResponse.Data.ProductKey,
                    DeviceSecret: queryResponse.Data.DeviceSecret,
                    IotId: queryResponse.Data.IotId
                }
                resp.send(JSON.stringify(returnJson));
            }

        });

    });

};

Triggering Function Compute from the Device

The device obtains the trituples by triggering Function Compute through HTTP POST Json

2

To learn more about Alibaba Cloud's Internet of Things (IoT) Platform, visit https://www.alibabacloud.com/product/iot

1 1 1
Share on

GXIC

16 posts | 3 followers

You may also like

Comments

Raja_KT March 15, 2019 at 11:59 am

It reminds me of LoraWAN devices set up.

GXIC

16 posts | 3 followers

Related Products

  • IoT Platform

    Provides secure and reliable communication between devices and the IoT Platform which allows you to manage a large number of devices on a single IoT Platform.

    Learn More
  • Function Compute

    Alibaba Cloud Function Compute is a fully-managed event-driven compute service. It allows you to focus on writing and uploading code without the need to manage infrastructure such as servers.

    Learn More
  • Batch Compute

    Resource management and task scheduling for large-scale batch processing

    Learn More
  • ECS(Elastic Compute Service)

    An online computing service that offers elastic and secure virtual cloud servers to cater all your cloud hosting needs.

    Learn More