基于开放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,作为该设备的唯一标识符。 |
{
"RequestId":"57b144cf-09fc-4916-a272-a62902d5b207",
"Success": true,
"Data": {
"DeviceName": "CqXL5h5ysRTA4NxjABjj",
"ProductKey": "a1ysRTA4N0",
"DeviceSecret": "tXHf4ezGEHcwdyMwoCDHGBmk9a"
}
}
这样我们设备激活时,先访问企业服务器业务API,获取IoT平台的三元组身份后,发起MQTT的长连接建立,最终实现设备上云的目的。
物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn

阿里云物联网平台客户交流群
文章介绍了在设备不预烧录IoT三元组的情况下,如何通过动态注册实现IoT平台的设备接入。设备首次使用时,通过固件升级获取deviceId,然后调用应用服务器API进行注册,从OTS表或动态注册获取三元组信息,最后利用MQTT建立与物联网平台的连接。

被折叠的 条评论
为什么被折叠?



