概述

前一篇文章我们介绍了设备密钥的认证方式,那么这里重点来看如何通过Qt的HTTP接口来实现一型一密动态注册的流程。

一型一密动态注册

【官网介绍】
直连设备使用一型一密动态注册的流程:

  • 在物联网平台预注册设备,并获取产品证书(ProductKey和ProductSecret)。预注册设备时,可以使用设备的MAC地址或SN序列号等作为DeviceName。
  • 在控制台开启设备所属产品的动态注册开关。
  • 将产品证书烧录至固件。
  • 设备向云端发起身份认证。云端认证成功后,下发DeviceSecret。
  • 设备使用设备证书与云端建立连接。

直连设备动态注册,通过HTTP发送请求。 需先在控制台上,开通该产品的一型一密动态注册功能,如下,这个开关要打开:

URL模板: https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device
HTTP方法: POST

请求数据格式:

POST /auth/register/device  HTTP/1.1
Host: iot-auth.cn-shanghai.aliyuncs.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 123
productKey=1234556554&deviceName=deviceName1234&random=567345&sign=adfv123hdfdh&signMethod=HmacMD5

响应数据格式:

{"code": 200,"data": {"productKey": "1234556554","deviceName": "deviceName1234","deviceSecret": "adsfweafdsf"},"message": "success"
}

参数说明:

根据官网的接口说明,我们使用Qt接口来请求。

Qt Http post请求动态注册设备

 QString productKey = "xxxxx";QString productSecret = "xxxxx";QString deviceName = "xxxxx";QString message = "deviceNameXXXXXXproductKeyXXXXXXXrandom123222";QUrlQuery params;QString sign = QMessageAuthenticationCode::hash(message.toLocal8Bit(),productSecret.toLocal8Bit(),QCryptographicHash::Sha1).toHex();params.addQueryItem("productKey",productKey);params.addQueryItem("deviceName",deviceName);params.addQueryItem("random","123222");params.addQueryItem("sign",sign);params.addQueryItem("signMethod","HmacSHA1");QNetworkRequest request;QString data = params.toString();request.setUrl(QString("https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device"));request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded;");request.setHeader(QNetworkRequest::ContentLengthHeader, data.size());m_pNetWorkManager->post(request,data.toUtf8() );

注意,虽然是动态注册设备,但前提要现在阿里云IOT上创建好设备。上面代码中的xxxx换成自己的响应信息。

在正式项目中,也可以选择批量添加设备。

请求完成就会收到服务器下发的数据啦:

"{\"code\":200,\"data\":{\"deviceName\":\"xxxxxxxxx\",\"deviceSecret\":\"xxxxxxxxxxxx\",\"productKey\":\"xxxxxxxx\"},\"message\":\"success\"}"

ok,这时候就请求到设备的deviceSecret了,接下来就可以通过这些信息去正式连接服务器。关于连接的部分已经在前面的文章中介绍过了,详情看这里。

MQTT连接阿里云IoT(四)相关推荐

  1. MQTT连接阿里云IOT

    方法一.使用PubSubClient库连接 1.安装依赖库 PubSubClient 2.测试程序 #include <ESP8266WiFiMulti.h> #include <P ...

  2. MQTT连接阿里云IoT(一)

    概述 上一篇文章我们介绍了MQTT连接的服务器,那么今天我们重点来看如何将MQTT连接到阿里云物联网(IoT)服务器,从而进行消息传递. 要连接阿里云物联网服务器,先必须在阿里云平台上创建产品和设备, ...

  3. 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  4. 支付宝小程序使用MQTT over WebSocket连接阿里云IoT物联网平台

    前言 之前写了一篇微信小程序使用MQTT over WebSocket连接阿里云IoT物联网平台,介绍了如何使用mqtt.js在微信小程序上连接mqtt服务器,文中顺带提了mqtt.js是支持支付宝小 ...

  5. 微信小程序使用MQTT.js连接阿里云IoT物联网平台

    官方已经开源了一个SDK版本,也是基于mqtt.js,进行了各种封装: https://github.com/aliyun/alibabacloud-iot-device-sdk · 阅读以下内容需要 ...

  6. 中移4G模块-ML302-OpenCpu开发-(MQTT连接阿里云-订阅主题)

    B站:https://space.bilibili.com/309103931 中移4G模块-ML302专栏:https://blog.csdn.net/qq_33259323/category_10 ...

  7. 基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

    基于STM32+FreeRtos+DHT12+ESP8266+MQTT连接阿里云 1.概述 2.实现步骤 2.1.MQTT.fx模拟器与阿里云通信 2.2.STM32与阿里云通信 3. 搭建云平台 3 ...

  8. NodeMCU 通过MQTT 连接阿里云物联网

    NodeMCU 通过MQTT 连接阿里云物联网 前言: 这是第一个帖子,希望以后所有的东西都能记录在CSDN吧!自己在调试过程中也借鉴了很多人的帖子,这里总结出来,方便以后查阅,也方便他人! 1.No ...

  9. 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(三、STM32通过代码连接阿里云服务器)

    要想实现通过代码实现STM32连入阿里云服务器,要首先实现使用AT指令通过串口连接阿里云,大家可以参考我之前的两篇文章,链接如下 链接: 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流 ...

最新文章

  1. java 显式锁_Java 实现一个自己的显式锁Lock(有超时功能)
  2. 页面加载完后立刻执行JS的两种方法
  3. OPPO沈义人官宣Reno首批配色:雾海绿、薄雾粉、极夜黑、星云紫
  4. hiho 第1周 最长回文子串
  5. excel 地级市名单_“excel随机抽取名单“谁有全国行政区划列表(EXCEL版且含省市县乡)?...
  6. 随机森林算法的扩展-深度森林(deep forest)
  7. qq飞车 ios android,《QQ飞车手游》ios和安卓数据互通吗 安卓苹果互通规则详解
  8. 网络对抗技术 实验五
  9. 行业思考 | 互联网对传统行业的降维打击
  10. 云计算学习1——OpenStack云计算安装部署步骤图文并茂(先电2.2)
  11. MapStruct Unknown property “xx“ in result type XXX. Did you mean “null“?
  12. H.266/VVC代码学习32:VTM5.0解码端最上层函数
  13. 软件产品与项目开发的区别
  14. 经济管理类的顶刊和核心整理
  15. html5保存到桌面,win8.1将IE浏览器网页内容保存到电脑桌面的两种方法
  16. latex中的三种字体格式
  17. 过滤器以及Severlet 的实例
  18. Java中利用循环计算出s = a+aa+aaa+aaaa....,其中a为数字1~9中的任意一个,例如:a=5,计算出5+55+555+5555+55555的和(不可以使用Math.pow())
  19. python卸载没卸载干净导致再次安装失败
  20. ASCH HTTP API文档

热门文章

  1. Android 截屏监听(截图分享功能实现)
  2. 收留我接入云信,打造陌生人旅行社交
  3. Python入门第三章--第一节:条件判断语句
  4. 一周学习总结PPT-学会VLOOKUP函数,1分钟搞定数据汇总
  5. Tomcat发布网页的方法记录
  6. Phalcon7 1.2.3 发布,高性能 PHP 7 框架
  7. dwarf调试信息格式入门
  8. Mongodb基本操作之.net
  9. 你认为是宽渠道好还是窄渠道好?请做具体分析
  10. 控件onkeyup事件,使验证控件不能即时验证