開發實例

本demo主要以C語言為例,介紹在Linux平台下實現設備的接入。

准備條件

  • 請確定本地已正確安裝Linux環境,cmake項目構建工具(最低2.8版本)、gcc編譯工具,本示例使用Ubuntu 14.04.3。

  • 本Demo依賴以下第三方庫,請正確安裝,本示例預設安裝路徑為 /usr/local/:

  • 請確定已正確創建產品及設備。

    openssl-OpenSSL_1_0_2q,paho.mqtt.c-1.3.0(編譯paho時需打開PAHO_WITH_SSl選項)
    
  • 请确定已正确创建产品及设备。

操作步骤

  1. 登入Linux虛擬機器。

  2. 下載獲取demo工程

  3. 使用命令完成解壓,解壓後可以看到Linux本地新增OneNET-MQTT-demo-c資料夾。檔詳細信息如下:

    OneNET-MQTT-demo-c
    |- cert            #mqtts證書所在目錄
        |- certificate.pem
    |- CmakeLists.txt  #構建cmake工程    
    |- busi.h          #用戶具體業務迴圈函數宣告
    |- call-back.h     #用戶設定connection lost、下行數據回檔聲明
    |- mqtts-client.h  #mqtts-client標頭檔
    |- utils.h         #base64編解碼、hmac_sha1、url_encode函數宣告
    |- token.h         #計算鑒權token的函數宣告
    |- types.h         #topic及dp payload format聲明
    |- mqtts-sample.c  #主程序
    |- mqtts-client.c  #mqtts-client用戶端創建、銷毀、subscribe等函數實現
    |- token.c         #計算鑒權token的函數實現
    |- call-back.c     #connection lost、下行數據回檔實現
    |- busi.c          #用戶具體業務實現
    |- utils.c         #base64編解碼、hmac_sha1、url_encode函數實現
    |- types.c         #topic及dp payload format定義
    
  1. 在通過示例代碼與物聯網平台通信之前,需要將mqtts-samples.c中的設備參數修改為你已創建成功的設備信息,完成後保存退出。

    如下所示,在此處填入產品ID、設備名稱、設備key

    /*設備所屬產品*/   
    const char *pid = "你的產品ID";
    /*設備名稱*/
    const char *device_name = "你的設備名稱";
    /*設備級的access key*/
    const char *device_access_key ="你的設備Key";
    

    用戶可根據需要自訂token的訪問有效期(即過期時間),本示例默認為2019-12-31日。

    /*token过期时间,请按照实际具体需求计算token过期时间,本例中为从1970-1-1到2019-12-31的秒数*/
    int64_t expire_time = 1577721600;
    
  2. 修改完成後在示例代碼目錄,執行cmake命令,生成makefile文件。

    cmake .
    
  3. 通過make指令編譯示例程式。

    make clean
    make
    

    生成的示例程式mqtts-sample存放在目前的目錄下。

  4. 運行示例程式。 在控制台顯示裝置上線。 此時,設備與物聯網平台成功連接。

    ./mqtts-sample
    
    • 設備上線成功後,會自動向物聯網平台上載數據點。 在終端控制台返回信息:
    [datapoint] receive dp accepted response from OneNET...
    
    • 本示例預設上載的數據,你可以在設備列表-數據流展示進行查看,獲取具體內容。

    image

    image

  5. 在本示例中,除數據點上載外,也可以實現物聯網平台下發命令控制設備。你可以在設備清單中,選擇更多操作-下發命令完成設備命令的下發。

  6. image

    • 在命令成功下發後,在終端控制台返回信息,其中payload欄位為下發命令內容的16進制轉換結果。
    [cmd] receive cmd from OneNET
        cmduuid:59aba784-ee98-4620-84b0-b8744fd4ad74
        payload:54 68 69 73 69 73 61 74 65 73 74 6D 65 73 73 61 67 65 2E
    
    • 在命令成功下發至設備後,設備會返回成功接收信息至物聯網平台,平台會顯示返回結果。

    image

    • 在設備成功接收物聯網下發命令後,終端控制台會返回信息。
    [cmd] OneNET accept the cmd[59aba784-ee98-4620-84b0-b8744fd4ad74] response...
    

个搜索结果,搜索内容 “

    0 个搜索结果,搜索内容 “