单元 2:将设备连接到 EnOS Cloud


此步骤使用 EnOS Java SDK 开发用于模拟电池设备以连接到 EnOS 的程序。

设置开发环境

EnOS Java SDK for MQTT 要求安装 Java SE 8 和 Maven 3。 按照以下步骤设置开发环境。

  1. 安装 JDK,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html.

  2. 安装 Maven,下载地址:http://maven.apache.org/download.cgi.

  3. 安装开发环境,如 IntelliJ IDEA,下载地址:https://www.jetbrains.com/idea/download/

本教程将以 IntelliJ IDEA 为例。

安装 EnOS Device SDK for MQTT for Java

EnOS 管理控制台 中的 SDK中心 列出了所有 EnOS SDK,以及指向 GitHub 和 Maven 存储库的链接。按照以下步骤安装 EnOS Device SDK for MQTT for Java。

  1. 打开 SDK 的 Maven 存储库:https://mvnrepository.com/artifact/com.envisioniot/enos-mqtt.

  2. 复制 SDK 的 Maven 依赖项信息。

  3. 打开 IntelliJ IDEA,在 pom.xml 中添加以下代码片段来包含Maven依赖项。

    <dependency>
        <groupId>com.envisioniot</groupId>
        <artifactId>enos-mqtt</artifactId>
        <version>2.1.2</version>
    </dependency>
    

或者,你可以从 GitHub 下载 EnOS Device SDK 的源代码,并将其安装在开发环境中。

设备连接编程

安装之后,根据以下步骤将电池设备连接到 EnOS Cloud (你也可以参考 <SDK_Path>\src\main\java\com\envisioniot\enos\iot_mqtt_sdk\sample 里的 SimpleSendReceive.java 代码示例)。

  1. 声明将在程序中使用的变量,请参见以下示例:

    public static final String uri = "tcp://{address}:{port}";
    public static final String productKey = "product_key";
    public static final String deviceKey = "customized_key";
    public static final String deviceSecret = "device_secret";
    private static MqttClient client;
    


    • 服务器的 addressport 随云区域和实例的不同而不同。对于私有云实例,请登录 EnOS 管理控制台 点击 帮助 > 环境信息 获取地址和端口信息。

    • productKeydeviceKeydeviceSecret 是在 单元 1 中注册设备时生成的。

  2. 声明主要函数 initWithCallback() 初始化设备连接。请参见以下示例:

    public static void main(String[] args) throws Exception {
        initWithCallback();
    }
    


  3. 使用 initWithCallback 函数将电池设备连接到 EnOS Cloud。

    public static void initWithCallback() {
        System.out.println("start connect with callback ... ");
    
        try {
            client = new MqttClient(uri, productKey, deviceKey, deviceSecret);
            client.getProfile().setConnectionTimeout(60).setAutoReconnect(false);
            client.connect(new IConnectCallback() {
                public void onConnectSuccess() {
                    SimpleSendReceive.subDeviceLogin();
                    System.out.println("connect success");
                }
    
                public void onConnectLost() {
                    System.out.println("onConnectLost");
                }
    
                public void onConnectFailed(int reasonCode) {
                    System.out.println("onConnectFailed : " + reasonCode);
                }
            });
        } catch (EnvisionException var1) {
        }
    
        System.out.println("connect result :" + client.isConnected());
    }
    


  4. 检查程序的运行结果。如果设备连接成功,程序将返回以下结果:

    start connect with callback ...
    connect result :true
    


  5. EnOS 管理控制台设备资产 中检查电池设备的状态更改。 设备的状态将从 未激活 更改为 在线

    ../../_images/device_state.png

下一单元

模拟设备测点数据