本文介紹配置設備端SDK實現網關設備連接物聯網平臺。
配置網關設備端SDK
本示例Demo中,java/src/main/java/com/aliyun/iot/api/common/deviceApi目錄下的DeviceTopoManager文件中包含網關接入物聯網平臺的代碼示例。
- 設置網關設備的設備證書信息:GWproductKey、GWdeviceName和GWdeviceSecret。
您可在物聯網平臺控制臺的設備詳情頁面查看。
private static String regionId = "cn-shanghai"; private static final String TAG = "TOPO"; //網關設備 private static String GWproductKey = "a1Bxp*********"; private static String GWdeviceName = "XMtrv3y*************"; private static String GWdeviceSecret = "19xJNybifnmgc*************"; public static void main(String[] args) { /** * mqtt連接信息 */ DeviceTopoManager manager = new DeviceTopoManager(); /** * 服務器端的java http 客戶端使用TSLv1.2。 */ System.setProperty("https.protocols", "TLSv2"); manager.init(); }
- 配置MQTT接入信息channelHost,建立連接。
MQTT設備接入信息的查看方法,請參見查看實例終端節點。
public void init() { LinkKitInitParams params = new LinkKitInitParams(); /** * 設置 Mqtt 初始化參數 */ IoTMqttClientConfig config = new IoTMqttClientConfig(); config.productKey = GWproductKey; config.deviceName = GWdeviceName; config.deviceSecret = GWdeviceSecret; config.channelHost = GWproductKey + ".iot-as-mqtt." + regionId + ".aliyuncs.com:1883"; /** * 是否接受離線消息 * 對應 mqtt 的 cleanSession 字段 */ config.receiveOfflineMsg = false; params.mqttClientConfig = config; ALog.setLevel(LEVEL_DEBUG); ALog.i(TAG, "mqtt connetcion info=" + params); /** * 設置初始化,傳入設備證書信息 */ DeviceInfo deviceInfo = new DeviceInfo(); deviceInfo.productKey = GWproductKey; deviceInfo.deviceName = GWdeviceName; deviceInfo.deviceSecret = GWdeviceSecret; params.deviceInfo = deviceInfo; /**建立鏈接**/ LinkKit.getInstance().init(params, new ILinkKitConnectListener() { public void onError(AError aError) { ALog.e(TAG, "Init Error error=" + aError); } public void onInitDone(InitResult initResult) { ALog.i(TAG, "onInitDone result=" + initResult); //獲取網關下topo關系,查詢網關與自設備是否已經存在topo關系 //如果已經存在,則直接上線子設備 getGWDeviceTopo(); //子設備動態注冊獲取設備deviceSecret,如果設備已知設備證書則忽略此步,直接添加topo關系 //預注冊設備時,可以使用設備的MAC地址或SN序列號等作為DeviceName gatewaySubDevicRegister(); //待添加拓撲關系,子設備信息 gatewayAddSubDevice(); } }); }
測試
在設備端SDK中,配置完網關設備信息后,測試SDK是否能連接物聯網平臺。
- 運行程序文件DeviceTopoManager.java。
- 在物聯網平臺控制臺對應實例下的左側導航欄中,選擇 。
- 在設備列表中,找到網關設備,查看其狀態。如果狀態顯示為在線,說明網關設備已連接物聯網平臺。