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了,接下來就可以通過這些信息去正式連接服務器。關於連接的部分已經在前面的文章中介紹過了,詳情看這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章