全部產品
Search
文件中心

IoT Platform:JT/T 808協議雲網關裝置接入樣本(一方認證)

更新時間:Aug 21, 2026

本文以JT/T 808協議雲網關一方認證的方式為例,介紹如何將JT/T 808協議裝置接入物聯網平台。

前提條件

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

背景資訊

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

準備工作

本文裝置端開發樣本使用開發環境:Ubuntu 22.04版本作業系統。

接入樣本(TLS,推薦)

自訂認證

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

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

建立雲網關產品

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

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

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

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

  5. 在對話方塊中配置如下參數,服務端認證私密金鑰為server.key和服務端認證為server.crt,然後單擊確認。

    配置參數的詳細說明,請參見建立雲網關產品(JT/T 808)。

    • 雲網關名稱:填寫JT808接入樣本TLS

    • 協議:選擇JT/T 808

    • 自訂連接埠號碼:填寫7999

    • 認證類型:選擇一方認證

    • 傳輸協議:選擇TLS

    • 是否開啟裝置X.509認證認證:選擇否

    • 是否開啟OCSP:選擇不開啟

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

    網關URL格式樣本為 iot-xxx.igw.iothub.aliyuncs.com,連接埠號碼為 7999。

添加雲網關裝置

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

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

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

    對話方塊中包含產品和批量上傳檔案兩個必要欄位,產品需選擇對應的雲網關產品,批量上傳檔案提供上傳檔案按鈕用於上傳填寫好的模板。

  4. 在模板中填寫Manufacturer ID、Terminal Model和Terminal ID,如下圖所示,然後儲存檔案。

    參數填寫說明,請參見建立雲網關裝置(JT/T 808)。

    image

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

    裝置身份匯入成功後,物聯網平台會以上傳的Manufacturer ID、Terminal Model和Terminal ID值,拼接成${Manufacturer ID}_${Terminal Model}_${Terminal ID}作為裝置名稱建立對應裝置,裝置列表顯示已建立的裝置資訊。

    此時裝置列表中顯示已建立的 4 台裝置,裝置狀態均為未啟用。

開發裝置端程式

建立裝置資訊後,需開發裝置端程式,將裝置接入物聯網平台。 物聯網平台提供JT/T 808協議的C語言SDK,本樣本以接入裝置AliyunIoT_TestModel_device1為例,使用 C SDK開發裝置串連物聯網平台。

  1. 下載JT/T 808協議的C語言SDK,然後解壓檔案出jt808-c-sdk。

  2. 在jt808-c-sdk/jt808_tls_demo.c檔案中,修改裝置接入和認證的資訊。

    說明

    jt808_tls_demo.c程式檔案用於開發TLS方式的裝置接入。

    ......
    /* TODO: 替換為真實的裝置資訊,省份,城市,廠家,型號,終端ID、顏色、車牌號 */
    static jt808_register_t info = {
        .province = 0x1234,
        .city = 0x4567,
        .manufacturer = "AliyunIoT",
        .model = "TestModel",
        .terminal = "device1",
        .colour = 1,
        .lisence = "浙C*****",
    };
    /* TODO: 綁定的手機號 */
    static char *moible_num = "1*********8";
    
    /* TODO: 替換為雲網關存取點網域名稱和連接埠 */
    static char *host = "iot-0******.igw.iothub.aliyuncs.com";
    static uint16_t port = 7999;
    
    /* 存取點自訂根憑證 */
    const char *jt808_ca_cert = \
    {
        \
        "-----BEGIN CERTIFICATE-----\r\n"
        "MIIDR*************************************************ZIhvcNAQEL\r\n"
        "BQAwM*************************************************ANBgNVBAMM\r\n"
        "BklvV*************************************************MxCzAJBgNV\r\n"
        "BAYTA*************************************************QgQ0EwggEi\r\n"
        "MA0GC*************************************************S8fWxBF+lw\r\n"
        "8GKH7*************************************************3Xco/COMjP\r\n"
        "Q69QH*************************************************wuYc0WMjlS\r\n"
        "cNO7G*************************************************BABPEIJeLR\r\n"
        "c6rJ7*************************************************F8nDOm0kUd\r\n"
        "kvAdK*************************************************t6BEh9AgMB\r\n"
        "AAGjU*************************************************NVHSMEGDAW\r\n"
        "gBT4S*************************************************0GCSqGSIb3\r\n"
        "DQEBC*************************************************+I42UNjbJa\r\n"
        "ZP9bn*************************************************G+S/Tv6BEn\r\n"
        "2v1/V*************************************************zNWlwapdvp\r\n"
        "DRMmf*************************************************Vh/FVBa7gn\r\n"
        "9DWlU*************************************************AGz0HkVQq6\r\n"
        "Ks4UI***************************Vzd+\r\n"
        "-----END CERTIFICATE-----\r\n" 
    };
    ......

    參數

    說明

    province

    裝置所在省域和城市,取值符合JT/T 808的2019版本協議要求。

    city

    manufacturer

    在物聯網平台添加的雲網關裝置的Manufacturer ID、Terminal Model和Terminal ID。

    model

    terminal

    colour

    車牌的顏色、車牌號,及裝置所屬使用者的手機號。車牌的顏色、車牌號取值符合JT/T 808的2019版本協議要求。

    lisence

    moible_num

    host

    JT/T 808協議雲網關的接入地址,即已建立雲網關產品的網關URL中網域名稱。

    port

    設定為自訂連接埠號碼,預設為7999。

    jt808_ca_cert

    設定為根憑證root-ca.crt的內容。

  3. 登入Ubuntu作業系統,然後上傳已經修改的jt808-c-sdk檔案。

    jt808-c-sdk 專案的目錄結構如下。

    jt808-c-sdk
    ├── core
    ├── demos
    ├── external
    ├── jt808
    ├── output
    ├── portfiles
    ├── LICENSE
    └── Makefile
  4. 在根目錄/jt808-c-sdk下,執行make命令,完成範例程式的編譯。

    make clean
    make

    產生的範例程式jt808-tls-demo存放在./output目錄下。

  5. 運行範例程式。

    ./output/jt808-tls-demo

    運行成功後,裝置線上,上報資料。

    運行成功後,終端輸出日誌樣本如下。其中關鍵節點為:首次 TLS 串連建立、JT808 註冊成功(擷取 token)、第二次 TLS 串連建立、JT808 認證成功,以及後續心跳響應。

    establish tcp connection with server(host='iot-xxx, xxx igw.iothub.aliyuncs.com', port=[7999])
    success to establish tcp, fd=5
    local port: 52448
    [1678871231.212][LK-1000] establish mbedtls connection with server(host='iot-xxx xxx igw.iothub.aliyuncs.com', port=[7999])
    [1678871231.641][LK-1000] success to establish mbedtls connection, (cost 39791 bytes in total, max used 42651 bytes)
    
    [LK-1100] < 7E xxx                          78 |  xxx               x
    [LK-1100] < 00 xxx                          56 |  xxx               V
    [LK-1100] < 30 xxx                          52 |  xxx               R
    [LK-1100] < 70 xxx                          41 |  xxx               A
    [LK-1100] < 31 xxx                          51 |  xxx               Q
    [LK-1100] < 31 xxx                          4E |  xxx               N
    [LK-1100] < 6A xxx                             | jMzY=.~
    
    [1678871231.687][LK-0000] aiot_jt808_register success
  6. 返回到物聯網平台控制台的對應執行個體下,在左側導覽列選擇裝置管理 > 裝置,找到目標裝置,查看裝置狀態。裝置狀態顯示為線上,則表示裝置與物聯網平台成功串連。

  7. 在左側導覽列選擇監控營運 > Log Service,選擇目標產品,查看裝置到雲訊息。

    在雲端作業記錄頁簽下,篩選 DeviceName 為 AliyunIoT_TestModel_device1,可看到多條業務類型為裝置到雲訊息的日誌記錄,狀態代碼均為200,表示訊息成功發布至 Topic $JT808/AliyunIoT/TestModel/device1/up(QoS=0)。

接入樣本(TCP,不推薦)

建立雲網關產品和裝置

  1. 建立雲網關產品(JT/T 808):在添加雲網關對話方塊中配置參數,單擊確認。

    • 雲網關名稱:輸入JT808接入樣本

    • 協議:選擇JT/T 808

    • 自訂連接埠號碼:輸入7999

    • 認證類型:選擇一方認證

    • 傳輸協議:選擇TCP

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

    網關URL格式樣本為 iot-xxx.igw.iothub.aliyuncs.com,連接埠號碼為 7999。

  3. 建立雲網關裝置(JT/T 808):添加裝置如下所示。

    image

開發裝置端程式

物聯網平台提供JT/T 808協議的C語言SDK,本樣本以接入裝置AliyunIoT_TestModel_device1為例,使用 C SDK開發裝置串連物聯網平台。

  1. 下載JT/T 808協議的C語言SDK,然後解壓檔案出jt808-c-sdk。

  2. 在jt808-c-sdk/jt808_basic_demo.c檔案中,修改裝置接入和認證的資訊。

    說明

    jt808_basic_demo.c程式檔案用於開發TCP方式的裝置接入。

    ......
    /* TODO: 替換為真實的裝置資訊,省份,城市,廠家,型號,終端ID、顏色、車牌號 */
    static jt808_register_t info = {
        .province = 0x1234,
        .city = 0x4567,
        .manufacturer = "AliyunIoT",
        .model = "TestModel",
        .terminal = "device1",
        .colour = 1,
        .lisence = "浙A*****",
    };
    /* TODO: 綁定的手機號 */
    static char *moible_num = "1**********";
    
    /* TODO: 替換為雲網關存取點網域名稱和連接埠 */
    static char *host = "iot-0******v-0****0.igw.iothub.aliyuncs.com";
    static uint16_t port = 7999;
    ......
  3. 登入Ubuntu作業系統,然後上傳已經修改的jt808-c-sdk檔案。

  4. 在根目錄/jt808-c-sdk下,執行make命令,完成範例程式的編譯。

    make clean
    make

    產生的範例程式jt808-basic-demo存放在./output目錄下。

  5. 運行範例程式。

    ./output/jt808-basic-demo

    運行成功後,裝置線上,上報資料。

    root@xxx cZ:/opt/jt808-c-sdk# ./output/jt808-basic-demo
    establish tcp connection with server(host='iot-xxx.igw.iothub.aliyuncs.com', port=[7999])
    success to establish tcp, fd=3
    local port: 51018
    
    [LK-1100] < 7xxx                    '8 | ~.            /x
    [LK-1100] < 0 xxx                   '8 | ..            ix
    [LK-1100] < 4xxx                    '6 | Kl            >F
    [LK-1100] < 7xxx                    \A | p)xxx         :J
    [LK-1100] < 6 xxx                   '6 | lNxxx         >F
    [LK-1100] < 6 xxx                   '9 | izxxx         NY
    [LK-1100] < 3                          | 0YTU=#~
    
    [1678694981.477][LK-0000] aiot_jt808_register success, token:dGFxxx
    auth_key: dGlxxx                                          TU=
    [1678694981.477][LK-1000] adapter_network_deinit
    establish tcp connection with server(host='iot-0xxx70.igw.iothub.aliyuncs.com', port=[7999])
    success to establish tcp, fd=3
    local port: 51024
    
    [LK-1100] < 7xxx                           xxx
    [LK-1100] < 0xxx                           xxx
    
    [1678694981.622][LK-0000] aiot_jt808_auth success
    
    [LK-1100] < 7lxxx                          xxx
    [LK-1100] < 0xxx                           xxx
    
    [COMMON_ACK], xxx
    
    [LK-1100] < 7lxxx                          xxx
    [LK-1100] < 0xxx                           xxx
    
    [COMMON_ACK], xxx

    您可返回到物聯網平台控制台的對應執行個體下,查看裝置狀態和通訊日誌。