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

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

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

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

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

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

步骤

1.设备端固件升级

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

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

涉及到系统交互如下
IoT存量设备跨账号迁移,动态切换region节点,公共区到企业实例迁移方案

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的长连接建立,最终实现设备上云的目的。

上一篇:IoT物联网平台-规则引擎SQL数据格式详解


下一篇:在 Hibernate Search 5.5 中对搜索结果进行排序