单元 2:将设备连接到 EnOS 云端¶
此单元使用 EnOS Java SDK 开发用于模拟电池设备以连接到 EnOS 的程序。
设置开发环境¶
EnOS Java SDK for MQTT 要求安装 Java SE 8 和 Maven 3。 按照以下步骤设置开发环境。
安装 JDK,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。
安装 Maven,下载地址:http://maven.apache.org/download.cgi。
安装开发环境,如 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。
打开 SDK 的 Maven 存储库:https://mvnrepository.com/artifact/com.envisioniot/enos-mqtt。
复制 SDK 的 Maven 依赖项信息。
打开 IntelliJ IDEA,在
pom.xml
中添加以下代码片段来包含 Maven 依赖项。<dependency> <groupId>com.envisioniot</groupId> <artifactId>enos-mqtt</artifactId> <version>2.2.16</version> </dependency>
或者,也可从 GitHub 下载 EnOS Device SDK 的源代码,并将其安装在开发环境中。
设备连接编程¶
安装之后,根据以下步骤将电池设备连接到 EnOS 云端(你也可以参考 https://github.com/EnvisionIot/enos-device-sdk-java/blob/master/enos-sdk-sample/src/main/java/mqtt/SimpleSendReceive.java 代码示例)。
声明将在程序中使用的变量,参见以下示例。
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;
服务器的
address
和port
随云区域和实例的不同而不同。对于私有云实例,请登录 EnOS 管理控制台点击 帮助 > 环境信息 获取 MQTT Broker 的地址和端口信息。productKey
,deviceKey
和deviceSecret
是在 单元 1 中注册设备时生成的。
声明主要函数
initWithCallback()
初始化设备连接。public static void main(String[] args) throws Exception { initWithCallback(); }
使用
initWithCallback
函数将电池设备连接到 EnOS 云端。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 ConnCallback() { public void connectComplete(boolean reconnect) { System.out.println("connect success"); } public void connectLost(Throwable cause) { System.out.println("onConnectLost"); } public void connectFailed(Throwable cause) { System.out.println("onConnectFailed : " + cause); } }); } catch (Throwable var1) { } System.out.println("connect result :" + client.isConnected()); }
检查程序的运行结果。如果设备连接成功,程序将返回以下结果。
start connect with callback ... connect result :true
在 EnOS 管理控制台的 设备资产 中检查电池设备的状态更改。 设备的状态将从
未激活
更改为在线
。