本文介绍配置设备端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设备接入信息的查看方法,请参见查看实例终端节点

        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. 在设备列表中,找到网关设备,查看其状态。如果状态显示为在线,说明网关设备已连接物联网平台。

后续步骤

子设备接入物联网平台