本文以使用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; //是否使用TLS TODO:如果使用了TCP直連,需要將其設置為FALSE private boolean useSSL = Boolean.TRUE; //如果沒有使用TLS,請忽略;如果用到了,請設置根證書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中端口號。
useSSL
Boolean.TRUE
是否使用TLS方式接入。取值:
Boolean.TRUE
(默認):表示使用TLS。Boolean.FALSE
:表示使用TCP。
CA_PATH
dyy-gateway-tcu/src/main/resources/root-ca.crt
使用TLS方式接入時,需要設置根證書文件
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 |............. | +--------+-------------------------------------------------+----------------+
云端運行日志
在物聯網平臺控制臺實例下的監控運維 > 日志服務頁面,查看設備上報數據。
具體操作,請參見云端運行日志。