基于开放API实现IoT平台设备动态注册方案
0.背景(设备无需烧录IoT三元组)
IoT场景需要每个设备有唯 一身份标识,
- 如果设备产线不具备针对设备烧录三元组能力。
- 已出货设备从自建平台,或三方平台(极光IoT,aws,华为云IoT,百度天工)迁移到阿里云IoT物联网平台
运行时动态注册方案允许设备固件可以无差别烧录,在设备售卖给消费者手上后,第一次使用时动态注册三元组,然后再与IoT平台建立网络连接。
步骤
1.设备端固件升级
- 固件烧录如下三元组获取逻辑
涉及到系统交互如下
1. 应用服务器API设计
企业业务服务器提供IotDeviceRegister 接口
入参:
字段
|
描
述————————————————————————————
|
deviceId
|
由设备唯 一标识根据规则生成的字符串。比如mac,序列号sn等
|
返回数据:
字段
|
描述——————
|
productKey
|
产品Id
|
deviceName
|
设备name
|
deviceSecret
|
设备秘钥
|
endpointURL
|
接入点域名
|
业务逻辑:
- 根据deviceId查询OTS表,如果查不到设备,返回设备非法
- 如果有设备,有三元组,直接返回三元组
- 如果有设备,无三元组,去IoT动态注册设备,存储三元组,并返回三元组和域名
2. 表格存储OTS库设计参考
字段列
|
描述————————
|
备注——
|
deviceId
|
由mac地址根据规则生成的字符串
|
主键
|
registerTime
|
设备注册时间
|
|
activateTime
|
设备激活时间
|
|
productKey
|
三元组productKey(设备所属产品)
|
|
deviceName
|
三元组deviceName
|
|
deviceSecret
|
三元组deviceSecret
|
|
endpointURL
|
接入点域名
|
.
|
3. IoT设备动态注册POP API
RegisterDevice API文档 https://help.aliyun.com/document_detail/69470.html
请求参数
名称
|
类型
|
是否必需————
|
描述
|
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,作为该设备的唯 一标识符。
|
这样我们设备激活时,先访问企业服务器业务API,获取IoT平台的三元组身份后,发起MQTT的长连接建立,最终实现设备上云的目的。
物联网平台产品介绍详情:
阿里云物联网平台客户交流群