全部產品
Search
文件中心

IoT Platform:網關接入物聯網平台

更新時間:Jun 30, 2024

本文介紹配置裝置端SDK實現網關裝置串連物聯網平台。

前提條件

您已完成以下操作:

配置網關裝置端SDK

本樣本Demo中,java/src/main/java/com/aliyun/iot/api/common/deviceApi目錄下的DeviceTopoManager檔案中包含網關接入物聯網平台的程式碼範例。

  1. 設定網關裝置的裝置認證資訊:GWproductKeyGWdeviceNameGWdeviceSecret

    您可在物聯網平台控制台的裝置詳情頁面查看。

        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();
        }
  2. 配置MQTT接入資訊channelHost,建立串連。

    MQTT裝置接入資訊的查看方法,請參見查看和配置執行個體終端節點資訊(Endpoint)

        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是否能串連物聯網平台。

  1. 運行程式檔案DeviceTopoManager.java
  2. 物聯網平台控制台對應執行個體下的左側導覽列中,選擇裝置管理 > 裝置
  3. 在裝置列表中,找到網關裝置,查看其狀態。如果狀態顯示為線上,說明網關裝置已串連物聯網平台。

後續步驟

子裝置接入物聯網平台