设备出厂无三元组,固件升级OTA后,或用户激活设备时,动态获取三元组身份-阿里云开发者社区

开发者社区> 阿里云物联网> 正文

设备出厂无三元组,固件升级OTA后,或用户激活设备时,动态获取三元组身份

简介: 基于开放API实现IoT平台设备运行时动态注册方案,设备免烧录三元组,运行时动态注册身份

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

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

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

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

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

涉及到系统交互如下

1. 应用服务器API设计

[]()1.1 厂商批量初始化自己设备库

IotDeviceRegist 入参:

字段 描述
deviceId 由设备唯一标识根据规则生成的字符串 比如mac,序列号sn
productKey 三元组productKey

业务逻辑:

  1. 根据deviceId查询OTS表,如果查到,返回异常,设备已存在
  2. 如果查不到设备,添加设备并初始化registerTime设备注册时间,

1.2 激活并获取三元组API

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

这样我们设备激活时,先访问企业服务器业务API,获取IoT平台的三元组身份后,发起MQTT的长连接建立,最终实现设备上云的目的。

4.基于FC的无服务器架构的实现参考

参考这里 https://www.yuque.com/cloud-dev/iot-tech/um3y4u

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云物联网
使用钉钉扫一扫加入圈子
+ 订阅

致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。

官方博客
物联网相关产品售前咨询
开发者交流群