# 白蚁终端检测设备的接入

# 介绍

罗万智联平台将数据传给平台对接应用,应用通过在应用中引入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;
    
}

点击查看SDK (opens new window)