IoT存量设备跨账号迁移,动态切换region节点,公共区到企业实例迁移方案——实践类

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

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

IoT场景需要每个设备有唯 一身份标识,

  • 如果设备产线不具备针对设备烧录三元组能力。
  • 已出货设备从自建平台,或三方平台(极光IoT,aws,华为云IoT,百度天工)迁移到阿里云IoT物联网平台

运行时动态注册方案允许设备固件可以无差别烧录,在设备售卖给消费者手上后,第一次使用时动态注册三元组,然后再与IoT平台建立网络连接。

步骤

1.设备端固件升级

  1. 固件烧录如下三元组获取逻辑

涉及到系统交互如下

1. 应用服务器API设计

企业业务服务器提供IotDeviceRegister 接口

入参:

字段

————————————————————————————

deviceId

由设备唯 一标识根据规则生成的字符串。比如mac,序列号sn等

返回数据:

字段

描述——————

productKey

产品Id

deviceName

设备name

deviceSecret

设备秘钥

endpointURL

接入点域名

业务逻辑:

  1. 根据deviceId查询OTS表,如果查不到设备,返回设备非法
  2. 如果有设备,有三元组,直接返回三元组
  3. 如果有设备,无三元组,去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的长连接建立,最终实现设备上云的目的。


物联网平台产品介绍详情:

阿里云物联网平台客户交流群


请使用浏览器的分享功能分享到微信等