開發與維運

基于开放API实现IoT平台设备运行时动态注册方案

基于开放API实现IoT平台设备动态注册方案

0.背景(设备无需烧录IoT三元组)

IoT场景需要每个设备有唯一身份标识,但设备产线一般不具备针对设备烧录三元组能力。
运行时动态注册方案允许设备固件可以无差别烧录,在设备售卖给消费者手上后,第一次使用时动态注册三元组,然后再与IoT平台建立网络连接。


涉及到系统交互如下

1. 应用服务器API设计

[](#7h3wuy)1.1 厂商批量初始化自己设备库

IotDeviceDynamicRegistration/IotDeviceRegist
入参:

字段 描述
deviceId 由mac地址根据规则生成的字符串
productKey 三元组productKey

业务逻辑:

  1. 根据deviceId查询OTS表,如果查到,返回异常,设备已存在
  2. 如果查不到设备,添加设备并初始化registerTime设备注册时间,

[](#rt2usy)1.2 激活并获取三元组API

IotDeviceDynamicRegistration/IotDeviceActivate
入参:

字段 描述
deviceId 由mac地址根据规则生成的字符串

返回数据:

字段列 描述
productKey 三元组productKey
deviceName 三元组deviceName
deviceSecret 三元组deviceSecret

业务逻辑:

  1. 根据deviceId查询OTS表,如果查不到设备,返回设备非法
  2. 如果有设备,有三元组,直接返回三元组
  3. 如果有设备,无三元组,去IoT动态注册设备,存储三元组,并返回三元组

[](#5fs1zc)2. 表格存储OTS库设计

华东2 实例:IoTDevicesTable
公网endpoint https://IoTDevicesTable.cn-shanghai.ots.aliyuncs.com

数据表名称:device_table
数据生命周期:-1
最大数据版本:1
数据有效版本偏差:86400
主键: deviceId (STRING) (分片键)
字段列 描述
deviceId 由mac地址根据规则生成的字符串 主键
registerTime 设备注册时间
activateTime 设备激活时间
productKey 三元组productKey(设备所属产品)
deviceName 三元组deviceName
deviceSecret 三元组deviceSecret
IotId IoT平台为该设备颁发的设备ID

[](#q990to)3. IoT设备动态注册POP API

RegisterDevice API文档 https://help.aliyun.com/document_detail/69470.html

Java调用阿里云POP API示例 https://yuque.com/wongxming/iot-tech/upqoog

请求参数

名称 类型 是否必需 描述
Action String 要执行的操作,取值:RegisterDevice。
ProductKey String 指定要为其注册设备的产品的Key。
DeviceName String 为要注册的设备命名。设备名称应包含4-32个字符

返回参数

名称 类型 描述
RequestId String 阿里云为该请求生成的唯一标识符。
Success Boolean 是否调用成功。ture表示调用成功,false表示调用失败。
ErrorMessage String 调用失败时,返回的出错信息。
Data DeviceInfo 调用成功时,返回注册的设备信息。详情参见DeviceInfo
DeviceInfo 名称 类型 描述
ProductKey String 设备隶属的产品Key。
DeviceName String 设备名称。
DeviceSecret String 设备密钥。
IotId String IoT平台为该设备颁发的设备ID,作为该设备的唯一标识符。
{
    "RequestId":"57b144cf-09fc-4916-a272-a62902d5b207",
    "Success": true,
    "Data": {
        "DeviceName": "CqXL5h5ysRTA4NxjABjj",
        "ProductKey": "a1ysRTA4N0",
        "DeviceSecret": "tXHf4ezGEHcwdyMwoCDHGBmk9a",
        "IotId": "CqXL5h5ysRTA4NxjABjj0010fa"
    }
}

这样我们设备激活时,先访问企业服务器业务API,获取IoT平台的三元组身份后,发起MQTT的长连接建立,最终实现设备上云的目的。

4.无服务器架构的实现

参考这里 https://www.yuque.com/cloud-dev/iot-tech/um3y4u

Leave a Reply

Your email address will not be published. Required fields are marked *