全部產品
Search
文件中心

IoT Platform:接入樣本(一方認證)

更新時間:Jun 30, 2024

本文以使用Github開源工程為例,介紹使用GB/T 32960協議的車輛裝置,通過物聯網平台雲網關接入阿里雲物聯網平台進行通訊。

前提條件

  • 已購買尊享型企業版執行個體。

    本樣本購買華東2(上海)地區的尊享型執行個體。具體操作,請參見購買企業版執行個體

  • 自訂認證。

    本文樣本需自訂認證包含:根憑證root-ca.crt、服務端認證私密金鑰server.key和服務端認證server.crt

    您可以使用OpenSSL工具產生自訂認證,製作方法,請參見產生自訂認證

背景資訊

物聯網平台提供GB/T 32960協議雲網關功能,支援通過TCP(安全性低,不推薦)和TLS兩種方式接入裝置。採用TLS方式接入時,支援使用服務端單向認證、裝置端OCSP、裝置和服務端雙向安全接入等能力。

本文使用一方認證的TLS方式,介紹GB/T 32960協議裝置的接入樣本。

GB/T 32960協議雲網關裝置認證和通訊說明,請參見GB/T 32960協議雲網關概述

Github上已有GB/T 32960協議用戶端的開原始碼。具體內容,請參見Github的開源專案

準備環境

  • 本樣本使用Git命令下載開原始碼,並使用Patch命令進行補丁。因此,您的作業系統需安裝支援使用Git和Patch命令。

  • 本樣本使用Java語言開發裝置程式,準備Java開發環境如下:

下載開原始碼

本樣本對開源的Demo做了簡化,需要打上Patch檔案。具體操作如下:

  1. 執行以下命令,擷取到Demo檔案tsp

    git clone https://github.com/zhengyishan/tsp.git
    cd tsp
    git checkout 5ef2907b7160f74cf4948b641d75fccd50c5dd6a -b demo_branch
  2. 下載Patch檔案gb32960.patch,儲存在Demo檔案tsp目錄下。

  3. 繼續執行以下命令,完成Demo檔案tsp補丁。

    patch -p1 < gb32960.patch

建立雲網關產品和裝置

  1. 登入物聯網平台控制台

  2. 在控制台左上方,選擇物聯網平台所在地區。

  3. 執行個體概覽頁面,單擊目標尊享型執行個體。

  4. 在左側導覽列,選擇裝置管理>雲網關,單擊添加雲網關

  5. 在對話方塊中配置如下參數,如下圖所示,服務端認證私密金鑰server.key服務端認證server.crt

    參數詳細說明,請參見添加雲網關

    image..png

  6. 單擊確認

  7. 雲網關建立完成後,在雲網關列表,複製網關URL儲存。

    image..png

添加雲網關裝置

  1. 在左側導覽列選擇裝置管理>產品,找到已建立的雲網關產品,單擊右側操作列的管理裝置

  2. 裝置頁面,單擊大量新增

  3. 大量新增裝置對話方塊,單擊下載.csv模板下載表格模板。

    image..png

  4. 在模板中填寫VIN值(例如:device10000000001),然後儲存為.csv尾碼檔案。

    重要

    VIN為車輛識別代碼,支援英文字母和數字,長度限制為17個字元。

  5. 回到大量新增裝置對話方塊,單擊上傳檔案,將填好的檔案上傳至物聯網平台控制台,單擊確認

    image..png

    裝置身份匯入成功後,物聯網平台會以上傳的VIN值,作為裝置名稱建立對應裝置,裝置列表顯示已建立的裝置資訊。

    image..png

開發裝置端程式

建立裝置資訊後,需開發裝置端程式,將裝置接入物聯網平台。本樣本以接入裝置device10000000001為例,使用Java SDK開發裝置串連物聯網平台。

  1. 開啟IntelliJ IDEA,匯入已擷取的Demo:tsp

  2. 在工程的/dyy-gateway-tcu/src/main/resources路徑下匯入根憑證檔案:root-ca.crt

  3. 開啟工程的/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/config/TcuProperties.java檔案,修改裝置接入的相關參數。

    以下參數必須修改為實際參數值,其他參數值根據實際需要自訂。

        //網關網域名稱 TODO:需要替換為您的雲網關執行個體的網域名稱
        private String gatewayHost = "iot-*******.igw.iothub.aliyuncs.com";
    
        //網關連接埠 TODO:需要替換為您的雲網關執行個體的連接埠號碼
        private Integer gatewayPort = 8999;
    
        //根憑證root-ca.crt的路徑位置
        private String CA_PATH = "dyy-gateway-tcu/src/main/resources/root-ca.crt";
    
        //車輛識別代碼. 長度為17個位元組。TODO: 需要替換為您車輛的vin號,並在控制台以此vin號建立裝置
        private String vin = "device10000000001";

    參數

    樣本

    說明

    gatewayHost

    iot-*******.igw.iothub.aliyuncs.com

    GB/T 32960協議雲網關的接入地址。

    即已建立雲網關產品的網關URL中網域名稱。

    gatewayPort

    8999

    雲網關接入地址的自訂連接埠號碼,預設為8999

    即已建立雲網關產品的網關URL中連接埠號碼。

    CA_PATH

    dyy-gateway-tcu/src/main/resources/root-ca.crt

    根憑證檔案root-ca.crt在工程下的絕對路徑。

    vin

    device10000000001

    車輛識別代碼,即已建立雲網關裝置的VIN

  4. 在工程的/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/handler/BusinessHandler.java檔案中,提供了車輛登入、上報心跳、上報即時資料、車輛登出的邏輯代碼。您可以修改此檔案,實現更多功能。

運行裝置程式

  1. 在IntelliJ IDEA中,選擇File>Project Structure

  2. 選擇Project SDK為1.8 版本,單擊Apply

    image.png

  3. 單擊OK

  4. 運行檔案TcuApplication.java的主程式。

    裝置與服務端進行雙向認證成功,裝置線上。

    image..png

查看作業記錄

裝置端作業記錄

裝置程式運行後,會列印裝置上下行報文的詳細資料:

  • 車輛登入(login)的請求報文,其中報文的第三、第四位元組01 fe表示車輛請求登入。

             +-------------------------------------------------+
             |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
    +--------+-------------------------------------------------+----------------+
    |00000000| 23 23 01 fe 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000|
    |00000010| 33 34 35 36 37 01 00 1e 17 05 06 10 23 19 00 01 |00001.......#...|
    |00000020| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 |1234567890123456|
    |00000030| 37 38 39 30 00 00 ee                            |7890...         |
    +--------+-------------------------------------------------+----------------+
  • 服務端對裝置login的回複報文,其中報文的第三、第四位元組01 01表示車輛登入成功。

             +-------------------------------------------------+
             |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
    +--------+-------------------------------------------------+----------------+
    |00000000| 23 23 01 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000|
    |00000010| 33 34 35 36 37 01 00 1e 17 05 06 10 23 19 00 01 |00001.......#...|
    |00000020| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 |1234567890123456|
    |00000030| 37 38 39 30 00 00 11                            |7890...         |
    +--------+-------------------------------------------------+----------------+
  • 裝置上報心跳的報文,其中報文的第三、第四位元組07 fe表示該報文為上行的心跳。

             +-------------------------------------------------+
             |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
    +--------+-------------------------------------------------+----------------+
    |00000000| 23 23 07 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000|
    |00000010| 33 34 35 36 37 01 00 00 36                      |00001...6       |
    +--------+-------------------------------------------------+----------------+
  • 服務端對心跳報文的回複,其中報文的第三、第四位元組07 01表示該報文為下行的心跳。

             +-------------------------------------------------+
             |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
    +--------+-------------------------------------------------+----------------+
    |00000000| 23 23 07 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000|
    |00000010| 33 34 35 36 37 01 00 00 36                      |00001...6       |
    +--------+-------------------------------------------------+----------------+
  • 裝置上報實際資料,其中報文的第三、第四位元組02 fe表示即時資料上報。

             +-------------------------------------------------+
             |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
    +--------+-------------------------------------------------+----------------+
    |00000000| 23 23 02 fe 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000|
    |00000010| 33 34 35 36 37 01 00 14 17 05 06 10 23 23 08 01 |00001.......##..|
    |00000020| 01 00 05 00 06 00 04 00 07 01 00 0a df          |.............   |
    +--------+-------------------------------------------------+----------------+

雲端作業記錄

物聯網平台控制台執行個體下的監控營運 > Log Service頁面,查看裝置上報資料。

具體操作,請參見雲端作業記錄

image..png