MQTT连接阿里云IoT(四)
概述
前一篇文章我们介绍了设备密钥的认证方式,那么这里重点来看如何通过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(四)相关推荐
- MQTT连接阿里云IOT
方法一.使用PubSubClient库连接 1.安装依赖库 PubSubClient 2.测试程序 #include <ESP8266WiFiMulti.h> #include <P ...
- MQTT连接阿里云IoT(一)
概述 上一篇文章我们介绍了MQTT连接的服务器,那么今天我们重点来看如何将MQTT连接到阿里云物联网(IoT)服务器,从而进行消息传递. 要连接阿里云物联网服务器,先必须在阿里云平台上创建产品和设备, ...
- 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)
[微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...
- 支付宝小程序使用MQTT over WebSocket连接阿里云IoT物联网平台
前言 之前写了一篇微信小程序使用MQTT over WebSocket连接阿里云IoT物联网平台,介绍了如何使用mqtt.js在微信小程序上连接mqtt服务器,文中顺带提了mqtt.js是支持支付宝小 ...
- 微信小程序使用MQTT.js连接阿里云IoT物联网平台
官方已经开源了一个SDK版本,也是基于mqtt.js,进行了各种封装: https://github.com/aliyun/alibabacloud-iot-device-sdk · 阅读以下内容需要 ...
- 中移4G模块-ML302-OpenCpu开发-(MQTT连接阿里云-订阅主题)
B站:https://space.bilibili.com/309103931 中移4G模块-ML302专栏:https://blog.csdn.net/qq_33259323/category_10 ...
- 基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+DHT12+ESP8266+MQTT连接阿里云 1.概述 2.实现步骤 2.1.MQTT.fx模拟器与阿里云通信 2.2.STM32与阿里云通信 3. 搭建云平台 3 ...
- NodeMCU 通过MQTT 连接阿里云物联网
NodeMCU 通过MQTT 连接阿里云物联网 前言: 这是第一个帖子,希望以后所有的东西都能记录在CSDN吧!自己在调试过程中也借鉴了很多人的帖子,这里总结出来,方便以后查阅,也方便他人! 1.No ...
- 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(三、STM32通过代码连接阿里云服务器)
要想实现通过代码实现STM32连入阿里云服务器,要首先实现使用AT指令通过串口连接阿里云,大家可以参考我之前的两篇文章,链接如下 链接: 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流 ...
最新文章
- java 显式锁_Java 实现一个自己的显式锁Lock(有超时功能)
- 页面加载完后立刻执行JS的两种方法
- OPPO沈义人官宣Reno首批配色:雾海绿、薄雾粉、极夜黑、星云紫
- hiho 第1周 最长回文子串
- excel 地级市名单_“excel随机抽取名单“谁有全国行政区划列表(EXCEL版且含省市县乡)?...
- 随机森林算法的扩展-深度森林(deep forest)
- qq飞车 ios android,《QQ飞车手游》ios和安卓数据互通吗 安卓苹果互通规则详解
- 网络对抗技术 实验五
- 行业思考 | 互联网对传统行业的降维打击
- 云计算学习1——OpenStack云计算安装部署步骤图文并茂(先电2.2)
- MapStruct Unknown property “xx“ in result type XXX. Did you mean “null“?
- H.266/VVC代码学习32:VTM5.0解码端最上层函数
- 软件产品与项目开发的区别
- 经济管理类的顶刊和核心整理
- html5保存到桌面,win8.1将IE浏览器网页内容保存到电脑桌面的两种方法
- latex中的三种字体格式
- 过滤器以及Severlet 的实例
- Java中利用循环计算出s = a+aa+aaa+aaaa....,其中a为数字1~9中的任意一个,例如:a=5,计算出5+55+555+5555+55555的和(不可以使用Math.pow())
- python卸载没卸载干净导致再次安装失败
- ASCH HTTP API文档