MQTT连接阿里云IoT(四)

Qt 同时被 2 个专栏收录
118 篇文章 25 订阅
8 篇文章 5 订阅

概述

前一篇文章我们介绍了设备密钥的认证方式,那么这里重点来看如何通过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了,接下来就可以通过这些信息去正式连接服务器。关于连接的部分已经在前面的文章中介绍过了,详情看这里

  • 1
    点赞
  • 4
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值