# 白蚁终端检测设备的接入
# 介绍
罗万智联平台将数据传给平台对接应用,应用通过在应用中引入OpenAPI-SDK完成设备数据的接入
# 软件架构
JDK1.8 + Maven
# 安装教程
下载lowaniot提供mqtt jar包,添加到本地依赖。
使用maven构建项目,添加对alibaba Fastjson的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
# 客户端初始化
导入jar包以后,使用mqtt订阅消息前需要先对mqttClient进行初始化配置,我们可以通过罗万智联平台获取到相应的username和password。
代码如下:
public class MqttClient {
private String broker = "tcp://mqtt.lowaniot.com:1883";
private String username = "${username}";
private String password = "${password}";
public MqttClient() {
// 设置连接mqtt所需参数
MqttConnOpts.setParams(broker,username,password);
}
}
# 开始订阅
客户端初始化后,我们就可以开始订阅消息了。
想要通过Mqtt订阅消息,首先我们要知道订阅那些Topic,lowaniot智联平台为我们提供了topic规则
订阅topic规则 /lowaniot/租户编码/应用标识/产品编码
知道了订阅规则,我们可以通过罗万智联平台很轻易的获取到我们想要的Topic
有了topic以后 ,我们只需要简单的编写java代码,便能实现与罗万智联平台数据的对接
public class MqttSubscribe {
@PostConstruct
public void init() {
// 初始化客户端
new MqttClient();
}
public void subscribe() {
/**
* 订阅topic规则 /lowaniot/租户编码/应用标识/产品编码
*/
String topic = "/lowaniot/${tenantCode}/${appId}/${productCode}";
new Thread(new Runnable() {
@Override
public void run() {
new LowanMqttClient(topic, new LowanMqttCallback() {
@Override
public void onMessageArrived(String topic, byte[] payload) {
// 接收到消息后的业务处理 TODO
String message = new String(payload);
System.out.println("订阅主题topic :" + topic + "; 订阅消息message :" + message);
DeviceBaiyi deviceBaiyi = JSON.parseObject(message, DeviceBaiyi.class);
JSONObject data = deviceBaiyi.getData();
System.out.println("透传数据:" + data);
}
}).run();
}
}).start();
}
public static void main(String[] args) {
// 启动线程 开始订阅
MqttSubscribe mqttSubscribe = new MqttSubscribe();
mqttSubscribe.subscribe();
}
}
# 数据处理
我们开启订阅消息的线程以后,只需要等待Mqtt订阅到消息,接下来对订阅到的消息进行处理即可。
白蚁终端检测设备数据演示
{
"deviceId":"bd6e03q4ijnk",
"messageType":"DIRECT",
"timestamp":1645582808236,
"data":{
"rawData":"c3693a2f"
}
}
我们接收到白蚁终端检测设备传递上来的数据以后,可以通过FastJson将相应的JSON转化为Java中的实体类,然后对其进行业务操作。
@Data
public class DeviceBaiyi {
/**
* 透传数据 标准的JSON格式
*/
private JSONObject data;
/**
* 设备标识
*/
private String deviceId;
/**
* 消息标识
*/
private String messageId;
/**
* 消息类型 白蚁终端接入为:DIRECT
*/
private String messageType;
/**
* 时间戳
*/
private Long timestamp;
}