本文以使用Github開源工程為例,介紹使用GB/T 32960協議的車輛裝置,通過物聯網平台雲網關接入阿里雲物聯網平台進行通訊。
前提條件
背景資訊
物聯網平台提供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開發環境如下:
JDK版本:JDK8
整合式開發環境:IntelliJ IDEA社區版
下載開原始碼
本樣本對開源的Demo做了簡化,需要打上Patch檔案。具體操作如下:
執行以下命令,擷取到Demo檔案
tsp
。git clone https://github.com/zhengyishan/tsp.git cd tsp git checkout 5ef2907b7160f74cf4948b641d75fccd50c5dd6a -b demo_branch
下載Patch檔案:
gb32960.patch
,儲存在Demo檔案tsp
目錄下。繼續執行以下命令,完成Demo檔案
tsp
補丁。patch -p1 < gb32960.patch
建立雲網關產品和裝置
添加雲網關裝置
在左側導覽列選擇裝置管理>產品,找到已建立的雲網關產品,單擊右側操作列的管理裝置。
在裝置頁面,單擊大量新增。
在大量新增裝置對話方塊,單擊下載.csv模板下載表格模板。
在模板中填寫VIN值(例如:device10000000001),然後儲存為
.csv
尾碼檔案。重要VIN為車輛識別代碼,支援英文字母和數字,長度限制為17個字元。
回到大量新增裝置對話方塊,單擊上傳檔案,將填好的檔案上傳至物聯網平台控制台,單擊確認。
裝置身份匯入成功後,物聯網平台會以上傳的VIN值,作為裝置名稱建立對應裝置,裝置列表顯示已建立的裝置資訊。
開發裝置端程式
建立裝置資訊後,需開發裝置端程式,將裝置接入物聯網平台。本樣本以接入裝置device10000000001為例,使用Java SDK開發裝置串連物聯網平台。
開啟IntelliJ IDEA,匯入已擷取的Demo:tsp。
在工程的
/dyy-gateway-tcu/src/main/resources
路徑下匯入根憑證檔案:root-ca.crt
。開啟工程的
/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。
在工程的
/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/handler/BusinessHandler.java
檔案中,提供了車輛登入、上報心跳、上報即時資料、車輛登出的邏輯代碼。您可以修改此檔案,實現更多功能。
運行裝置程式
在IntelliJ IDEA中,選擇File>Project Structure。
選擇Project SDK為1.8 版本,單擊Apply。
單擊OK。
運行檔案
TcuApplication.java
的主程式。裝置與服務端進行雙向認證成功,裝置線上。
查看作業記錄
裝置端作業記錄
裝置程式運行後,會列印裝置上下行報文的詳細資料:
車輛登入(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頁面,查看裝置上報資料。
具體操作,請參見雲端作業記錄。