本文以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工具產生自訂認證,製作方法,請參見產生自訂認證。
建立雲網關產品
登入物聯網平台控制台。
在控制台左上方,選擇物聯網平台所在地區。
在執行個體概覽頁面,單擊目標尊享型執行個體。
在左側導覽列,選擇裝置管理>雲網關,單擊添加雲網關。
在對話方塊中配置如下參數,如下圖所示,服務端認證私密金鑰為
server.key
和服務端認證為server.crt
,然後單擊確認。配置參數的詳細說明,請參見建立雲網關產品(JT/T 808)。
雲網關建立完成後,在雲網關列表,複製網關URL儲存。
添加雲網關裝置
在左側導覽列選擇裝置管理>產品,找到已建立的雲網關產品,單擊右側操作列的管理裝置。
在裝置頁面,單擊大量新增。
在大量新增裝置對話方塊,單擊下載.csv模板下載表格模板。
在模板中填寫Manufacturer ID、Terminal Model和Terminal ID,如下圖所示,然後儲存檔案。
參數填寫說明,請參見建立雲網關裝置(JT/T 808)。
回到大量新增裝置對話方塊,單擊上傳檔案,將填好的檔案上傳至物聯網平台控制台,單擊確認。
裝置身份匯入成功後,物聯網平台會以上傳的Manufacturer ID、Terminal Model和Terminal ID值,拼接成
${Manufacturer ID}_${Terminal Model}_${Terminal ID}
作為裝置名稱建立對應裝置,裝置列表顯示已建立的裝置資訊。
開發裝置端程式
建立裝置資訊後,需開發裝置端程式,將裝置接入物聯網平台。 物聯網平台提供JT/T 808協議的C語言SDK,本樣本以接入裝置AliyunIoT_TestModel_device1為例,使用 C SDK開發裝置串連物聯網平台。
下載JT/T 808協議的C語言SDK,然後解壓檔案出
jt808-c-sdk
。在
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
的內容。登入Ubuntu作業系統,然後上傳已經修改的
jt808-c-sdk
檔案。在根目錄
/jt808-c-sdk
下,執行make
命令,完成範例程式的編譯。make clean make
產生的範例程式
jt808-tls-demo
存放在./output
目錄下。運行範例程式。
./output/jt808-tls-demo
運行成功後,裝置線上,上報資料,如下圖所示:
返回到物聯網平台控制台的對應執行個體下,在左側導覽列選擇裝置管理 > 裝置,找到目標裝置,查看裝置狀態。裝置狀態顯示為線上,則表示裝置與物聯網平台成功串連。
在左側導覽列選擇監控營運 > Log Service,選擇目標產品,查看裝置到雲訊息。
接入樣本(TCP,不推薦)
建立雲網關產品和裝置
建立雲網關產品(JT/T 808):配置如下圖所示。
雲網關建立完成後,在雲網關列表,複製網關URL儲存。
建立雲網關裝置(JT/T 808):添加裝置如下所示。
開發裝置端程式
物聯網平台提供JT/T 808協議的C語言SDK,本樣本以接入裝置AliyunIoT_TestModel_device1為例,使用 C SDK開發裝置串連物聯網平台。
下載JT/T 808協議的C語言SDK,然後解壓檔案出
jt808-c-sdk
。在
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; ......
登入Ubuntu作業系統,然後上傳已經修改的
jt808-c-sdk
檔案。在根目錄
/jt808-c-sdk
下,執行make
命令,完成範例程式的編譯。make clean make
產生的範例程式
jt808-basic-demo
存放在./output
目錄下。運行範例程式。
./output/jt808-basic-demo
運行成功後,裝置線上,上報資料,如下圖所示:
您可返回到物聯網平台控制台的對應執行個體下,查看裝置狀態和通訊日誌。