IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于MQTT通道的设备动态注册 -> 正文阅读

[嵌入式]基于MQTT通道的设备动态注册

在这里插入图片描述

?

在物联网平台为产品开启动态注册功能后,直连设备可使用一型一密安全认证方式完成动态注册,通过MQTT通信协议连接物联网平台。设备先基于TLS建立与物联网平台的连接,获取MQTT连接所需的设备密钥,再断开连接,然后重新建立MQTT连接进行通信。本文介绍动态注册流程。

前提条件

已完成一型一密文档中的以下步骤:

注意?目前仅华东2(上海)地域支持设备进行一型一密免预注册认证。

  1. 创建产品。
  2. 开启动态注册。
  3. 添加设备。
  4. 产线烧录。

动态注册流程

流程

  1. 设备发送CONNECT报文,报文中包含动态注册参数,请求建立连接。

    说明?目前,动态注册只支持使用TLS建立连接,不支持TCP直连。动态注册时,物联网平台不会校验MQTT连接的Keep Alive(保活时间),因此可以不用设置Keep Alive时间。

    • MQTT连接域名说明:公共实例和企业版实例中,MQTT的接入域名,请参见查看实例终端节点
    • CONNECT报文的动态注册参数:
      • 当设备属于企业版实例,且使用一型一密免预注册认证方式时,动态注册参数如下:
        mqttClientId:?clientId+"|securemode=-2,authType=xxxx,random=xxxx,signmethod=xxxx,instanceId=xxxx|"
        mqttUserName: deviceName+"&"+productKey
        mqttPassword:?sign_hmac(productSecret,content)?
      • 当设备属于公共实例,或使用一型一密预注册认证方式时,动态注册参数如下:
        mqttClientId:?clientId+"|securemode=2,authType=xxxx,random=xxxx,signmethod=xxxx|"
        mqttUserName: deviceName+"&"+productKey
        mqttPassword:?sign_hmac(productSecret,content)?

      参数说明:

      • mqttClientId

        参数取值中包含的详细参数如下表所示。

        参数说明
        clientId客户端ID,可自定义,长度在64个字符内。建议使用设备的MAC地址或SN码,方便您识别区分不同的客户端。
        securemode安全模式。
        authType一型一密认证方式,不同类型将返回不同的认证参数:
        • register:一型一密预注册认证方式,返回DeviceSecret。
        • regnwl:一型一密免预注册认证方式,返回DeviceToken、ClientID。
        random随机数。您自定义随机数。
        signMethod签名算法。目前支持hmacmd5、hmacsha1、hmacsha256。
        instanceId实例ID。请登录物联网平台控制台,在实例概览页面查看。
      • mqttUserName

        组成结构:deviceName+"&"+productKey

        示例:device1&al123456789

      • mqttPassword

        计算方法:sign_hmac(productSecret,content)

        其中,content的值是提交给服务器的必需参数和值(deviceName、productKey、random)按照字母顺序排序、拼接(无拼接符号)的字符串。然后,将content的值通过mqttClientId中的signMethod指定的算法,使用产品的ProductSecret进行签名计算。

        示例:hmac_sha1(h1nQFYPZS0mW****, deviceNamedevice1productKeyal123456789random123)

  2. 物联网平台返回CONNECT ACK。
    • 返回0,表示设备动态注册成功。
    • 返回其他值,表示设备动态注册失败。请根据返回的错误码,确定错误原因。

    设备发送连接请求后,物联网平台返回的结果状态码和说明如下表。

    结果码消息说明
    0CONNECTION_ACCEPTED动态注册成功。
    2IDENTIFIER_REJECTED参数错误。原因可能是:
    • 必填参数缺失或格式错误。
    • 您使用了TCP直连注册。动态注册只能使用TLS通道。
    3SERVER_UNAVAILABLE云端错误。请稍后再试。
    4BAD_USERNAME_OR_PASSWORD动态注册失败,鉴权未通过。

    请检查传入的mqttUserName和mqttPassword取值是否正确。

  3. 建立连接后,物联网平台通过推送证书的Topic,根据CONNECT报文中的authType,返回不同的认证参数。

    说明?设备无需订阅推送证书的Topic。

    • 一型一密预注册认证方式:Topic为/ext/register,authType取值为register,返回DeviceSecret。

      物联网平台推送的消息Payload格式如下:

      {
        "productKey" : "***",
        "deviceName" : "***",
        "deviceSecret" : "***"
      }
    • 一型一密免预注册认证方式:Topic为/ext/regnwl,authType取值为regnwl,返回ClientID、DeviceToken。

      物联网平台推送的消息Payload格式如下:

      {
        "productKey" : "***",
        "deviceName" : "***",
        "clientId" : "***",
        "deviceToken" : "***"
      }
  4. 设备收到并保存DeviceSecret,或ClientID和DeviceToken的组合,断开当前MQTT连接。

    设备可以通过发送DISCONNECT报文或直接断开TCP连接,断开当前连接。

    如果设备未断开此连接,15秒之后,物联网平台会主动断开连接。

    如果您使用Eclipse Paho MQTT客户端,需设置MqttConnectOptions.setAutomaticReconnect(false)关闭自动重连。否则,注册成功且TCP断连后,重连逻辑会发起新的动态注册请求。

  5. 设备使用DeviceSecret,或使用ClientID和DeviceToken的组合,再次发起MQTT连接请求,建立设备与物联网平台的连接,进行消息通信。具体操作,请参见MQTT-TCP连接通信

操作样例

直连设备的动态注册示例,请参见一型一密动态注册(MQTT通道)

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:31:43  更:2021-11-23 12:32:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:19:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码