1. 应用服务器API设计

1.1 厂商批量初始化自己设备库

IotDeviceDynamicRegistration/IotDeviceRegist
入参:
字段
描述
deviceId
由mac地址根据规则生成的字符串
productKey
三元组productKey
业务逻辑:
  1. 根据deviceId查询OTS表,如果查到,返回异常,设备已存在
  2. 如果查不到设备,添加设备并初始化registerTime设备注册时间,

1.2 激活并获取三元组API

IotDeviceDynamicRegistration/IotDeviceActivate
入参:
字段
描述
deviceId
由mac地址根据规则生成的字符串
返回数据:
字段列
描述
productKey
三元组productKey
deviceName
三元组deviceName
deviceSecret
三元组deviceSecret
业务逻辑:
  1. 根据deviceId查询OTS表,如果查不到设备,返回设备非法
  2. 如果有设备,有三元组,直接返回三元组
  3. 如果有设备,无三元组,去IoT动态注册设备,存储三元组,并返回三元组

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

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"
    }
}

IoT物联网技术