協議閘道服務項目(以下簡稱閘道)使用Java語言開發,使用Spring Boot 2和Netty 4搭建開發框架,使用Maven構建項目和管理依賴,使用Lombok簡化代碼。
建議用戶使用Intellij IDEA進行二次開發,將/src/main/resource資料夾標記為Resources Root,項目中以Sample開頭的Java類檔為實例代碼。
項目啟動主類為/src/main/java/com/cmiot/gateway/ProtocolGatewayService.java
閘道配置預設使用設定檔方式。 默認從Java工程預設資源檔路徑(預設位置為/src/main/resource/config)下的gateway.conf中讀取閘道設定檔。同時,閘道項目支援配置自訂,只需實現閘道配置信息讀取介面(介面預設位置為/src/main/java/com/cmiot/gateway/config),並將其注解為Spring Bean。
閘道使用typesafe.config解析設定檔,閘道設定檔參數說明如下表
參數 | 是否必須 | 說明 |
---|---|---|
connectionHost | No | OneNET平台MQTT接入服務地址,預設為”tcp://183.230.40.96:1883”,需要注意的是此地址需和tlsSupport參數匹配。 |
serviceId | Yes | 協議閘道服務ID。 |
instanceName | Yes | 協議閘道服務實例名稱,serviceId和instanceName二元組共同標識了實例的唯一性,當二元組重複時,僅會在最新啟動的實例上建立閘道控制連接。 |
instanceKey | Yes | 協議閘道服務實例,用於鑒權。 |
transports | No | 協議閘道服務協議中心,格式為”transport:port, transport:port”,如”tcp:10086”,目前閘道僅支援TCP協議,預設開啟埠為10086。 |
tlsSupport | No | 與OneNET平台MQTT接入服務之間的連接是否使用TLS加密,默認為false,即不使用TLS加密。 |
自訂協議編解碼的作用是實現設備數據和協議內部數據之間的相互轉換,需用戶自主實現。其中,協議內部數據用於與OneNET平台MQTT接入服務之間的通信。
默認位置為/src/main/java/com/cmiot/gateway/custom。
自訂解碼器是將自訂協議數據(二進位數字組)解碼為閘道內部數據(ProtocolMessage)。閘道根據ProtocolMessage中MessageType的不同進行不同的動作,如:LOGIN-設備登入、LOGOUT-設備登出,等等,詳情請見MessageType小節。
自訂解碼器是將閘道內部數據(ProtocolMessage)編碼為自訂協議數據(二進位數字組)。用戶可以根據內部數據MessageType的不同對內部數據實現不同的編碼,然後推送給設備或者進行下一步處理。
閘道根據閘道內部數據中MessageType對數據進行不同的處理,MessageType可分為數據上行和下行兩類,其中上行數據用於設備到OneNET平台MQTT接入服務的數據上行,如設備主動登入登出、數據點上載等,下行數據用於MQTT接入服務對上行數據的回應以及數據的主動下發。 MessageType詳解如下表:
MessageType | 上行/ 下行 | 說明 |
---|---|---|
LOGIN | 上行 | 代理設備主動登入 |
LOGOUT | 上行 | 代理設備主動登出 |
DP | 上行 | 數據點上載 |
CMD_REPLY | 上行 | 命令回復 |
IMAGE_UPDATE | 上行 | 設備鏡像更新 |
IMAGE_GET | 下行 | 設備鏡像獲取 |
LOGIN_ACCEPTED_RESPONSE | 下行 | 代理設備主動登入成功回應 |
LOGIN_REJECTED_RESPONSE | 下行 | 代理設備主動登入失敗響應 |
LOGOUT_ACCEPTED_RESPONSE | 下行 | 代理設備主動登出成功回應 |
LOGOUT_NOTIFY_RESPONSE | 下行 | 代理設備被平台主動登出響應 |
DP_ACCEPTED_RESPONSE | 下行 | 代理設備上載數據點成功回應 |
DP_REJECTED_RESPONSE | 下行 | 代理設備上載數據點失敗回應 |
DOWN_LINK_CMD | 下行 | 代理設備收到平台下發命令 |
CMD_REPLY_ACCEPTED_RESPONSE | 下行 | 代理設備回復命令成功的平台回應 |
CMD_REPLY_REJECTED_RESPONSE | 下行 | 代理設備回復命令失敗的平台回應 |
IMAGE_UPDATE_ACCEPTED_RESPONSE | 下行 | 代理設備更新鏡像成功回應 |
IMAGE_UPDATE_REJECTED_RESPONSE | 下行 | 代理設備更新鏡像失敗回應 |
IMAGE_GET_ACCEPTED_RESPONSE | 下行 | 代理設備獲取鏡像成功回應 |
IMAGE_GET_REJECTED_RESPONSE | 下行 | 代理設備獲取鏡像失敗回應 |
IMAGE_DELTA | 下行 | 代理設備收到平台下發的鏡像delta消息 |
UNKNOWN | \ | 未知類型型 |