IoT(Dynreg)-阿里云IoT平台设备动态注册组件

更新时间: 2023-04-04 13:42:41

本文介绍登云梯JS开发框架中连接阿里云IoT平台设备动态注册组件所提供的相关方法说明,支持的硬件平台列表以及参考示例代码。

说明
  • 该组件依赖网络,请使用NetWork组件,保证网络连接正常。

  • 使用动态注册需要在阿里云物联网平台产品详情页面,打开动态注册开关。具体操作,请参见一型一密

硬件平台

产品型号

是否支持

硬件类型

固件版本号

HaaS600Kit

开发板

4.0.1

HaaS510

DTU

4.0.1

HaaS520

DTU

4.0.1

HaaS530

DTU

4.0.1

HaaS531

DTU

4.0.1

HaaS632-LT32V

模组

4.0.1

HaaS600-EC600S

模组

4.0.1

HaaS600-EC600N

模组

4.0.1

HaaS600-EC600U

模组

4.0.1

HaaS600-N715

模组

4.0.1

dynreg(Object option, Function callback)

设备或网关动态注册。

入参

Object类型,其属性有:

属性

类型

是否必填

描述

productKey

String

设备的ProdctKey

deviceName

String

设备的DeviceName。

productSecret

String

设备的ProductSecret

mode

String

动态注册方式,默认whiteList(白名单模式)。

region

String

阿里云Region,默认值cn-shanghai

阿里云Region详细说明,请参见阿里云物联网平台 - 地域和可用区

说明

如果是企业实例,此处填写企业实例ID。

Function回调异步返回Object,其属性值如下:

属性

类型

备注

描述

deviceSecret

String

mode:whiteList

设备的DeviceSecret

clientId

String

mode:noWhiteList

设备的ClientId

userName

String

mode:noWhiteList

设备的UserName

passWord

String

mode:noWhiteList

设备的PassWord

返回

Number类型。

  • 0:表示成功。

  • 其他:表示失败。

说明

阿里云物联网平台设备动态注册分为两种模式。更多信息,请参见一型一密

  • 一型一密预注册 :需要预先在物联网平台注册设备,使用ProdctKeyDeviceNameProductSecret动态注册获取DeviceSecret,然后连接物联网平台。

  • 一型一密免预注册:无需在物联网平台预注册设备,使用ProdctKeyDeviceNameProductSecret动态注册获取ClientIdUserNamePassWord,然后连接物联网平台。

示例代码

import * as iot from 'iot';
import * as network from 'network';
import * as kv from 'kv';

var net = network.openNetWorkClient();
var device;

var clientIdKey = 'mqttclientid';
var userNameKey = 'mqttusername';
var passWordKey = 'mqttpassword';
var deviceSecretKey = 'deviceSecretKey';

var productKey = '';      /* your productKey */
var deviceName = '';      /* your deviceName */
var productSecret = '';   /* your deviceSecret */

function dynRegWithWhitelist() {
    var deviceSecretValue = kv.getStorageSync(deviceSecretKey);
    if (deviceSecretValue == undefined) {
        iot.dynreg({
            productKey: productKey,
            deviceName: deviceName,
            productSecret: productSecret
        }, (deviceSecret) => {
            console.log('receive deviceSecret is ' + deviceSecret);
            kv.setStorageSync(deviceSecretKey, deviceSecret);
        });
    }
}

function dynRegWithoutWhitelist() {
    var clientIdValue = kv.getStorageSync(clientIdKey);
    var userNameValue = kv.getStorageSync(userNameKey);
    var passWordValue = kv.getStorageSync(passWordKey);

    if (clientIdValue == undefined || userNameValue == undefined || passWordValue == undefined) {
        iot.dynreg({
            productKey: productKey,
            deviceName: deviceName,
            productSecret: productSecret,
            mode: 'noWhiteList'
        }, (res) => {
            console.log('receive mqtt clientId is ' + res.clientId);
            console.log('receive mqtt userName is ' + res.userName);

            kv.setStorageSync(clientIdKey, res.clientId);
            kv.setStorageSync(userNameKey, res.userName);
            kv.setStorageSync(passWordKey, res.passWord);
        });
    }
}

function dynreg_test() {
    /* register with whitelist */
    // dynRegWithWhitelist();

    /* register without whitelist */
    dynRegWithoutWhitelist();
}

var status = net.getStatus();

if (status == 'connect') {
    dynreg_test();
} else {
    net.on('connect', function () {
        dynreg_test();
    });
}