Browse Source

mqtt接收数据11

wwh 2 years ago
parent
commit
0c4d43feb0

+ 20 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/controller/EnvTopicController.java

@@ -0,0 +1,20 @@
+package com.huimv.env.manage.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-19
+ */
+@RestController
+@RequestMapping("/env-topic")
+public class EnvTopicController {
+
+}

+ 46 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/entity/EnvTopic.java

@@ -0,0 +1,46 @@
+package com.huimv.env.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("env_topic")
+public class EnvTopic implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 成功标识符0为成功,1为失败
+     */
+    private Integer topic;
+
+    /**
+     * 插入时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date time;
+
+
+}

+ 16 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/mapper/EnvTopicMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.env.manage.mapper;
+
+import com.huimv.env.manage.entity.EnvTopic;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-19
+ */
+public interface EnvTopicMapper extends BaseMapper<EnvTopic> {
+
+}

+ 21 - 3
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/controller/EnvDeviceEquipmentController.java

@@ -1,13 +1,17 @@
 package com.huimv.env.manage.saas.controller;
 
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.env.manage.entity.EnvDeviceRegister;
+import com.huimv.env.manage.entity.EnvTopic;
 import com.huimv.env.manage.saas.dao.entity.EnvDeviceEquipment;
 import com.huimv.env.manage.saas.mqtt.publish.PublishMQTT;
+import com.huimv.env.manage.saas.mqtt.subscribe.ConsumerMQTT;
 import com.huimv.env.manage.saas.service.IEnvDeviceEquipmentService;
 import com.huimv.env.manage.service.IEnvDeviceRegisterService;
+import com.huimv.env.manage.service.IEnvTopicService;
 import com.huimv.env.manage.utils.Result;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +40,8 @@ public class EnvDeviceEquipmentController {
 
     @Autowired
     IEnvDeviceEquipmentService envDeviceEquipmentService;
+    @Autowired
+    IEnvTopicService topicService;
 
     @PostMapping("/listByUnit")
     public Result listByUnit(@RequestBody Map<String, String> map, HttpServletRequest request){
@@ -69,9 +75,21 @@ public class EnvDeviceEquipmentController {
             JSONObject jsonObject  =new JSONObject();
             jsonObject.put("dev_ctrl",i);
             log.info("消息配置完成开始发送:"+jsonObject.toJSONString());
-            publishMQTT.start("tcp://115.238.57.190:1883",chipId,"admin","admin","huimv_down_"+chipId,jsonObject.toJSONString());
-
-            return new Result(10000,"修改成功",true);
+            publishMQTT.start("tcp://115.238.57.190:1883","test"+chipId,"admin","admin","huimv_down_"+chipId,jsonObject.toJSONString());
+            ConsumerMQTT consumerMQTT = new ConsumerMQTT();
+            consumerMQTT.start("tcp://115.238.57.190:1883","controller","admin","admin","huimv_up_"+chipId);
+
+            QueryWrapper<EnvTopic> topicQueryWrapper = new QueryWrapper<>();
+            topicQueryWrapper.orderByDesc("time").last(" limit 1");
+            EnvTopic topic = topicService.getOne(topicQueryWrapper);
+            if (ObjectUtil.isEmpty(topic)) {
+                return new Result(10000, "操作成功", true);
+            }
+            if (topic.getTopic() == 0) {
+                return new Result(10000, "操作成功", true);
+            } else {
+                return new Result(10001, "操作失败,请重新操作", false);
+            }
         }catch (Exception e){
             System.out.println("22222222222"+e);
             return new Result(10001,"修改失败",false);

+ 6 - 10
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/mqtt/subscribe/ConsumerMQTT.java

@@ -6,15 +6,10 @@ import org.springframework.context.annotation.Configuration;
 
 @Configuration
 public class ConsumerMQTT {
-    public static final String HOST = "tcp://115.238.57.190:1883";
-    private static final String clientid = "test001";
-    private MqttClient client;
-    private MqttConnectOptions options;
 
-    private String userName = "admin";    //非必须
-    private String passWord = "admin";  //非必须
-
-    public void start() {
+    MqttConnectOptions options;
+    MqttClient client;
+    public void start(String HOST,String clientid,String userName,String passWord,String topic) {
         try {
             // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
             client = new MqttClient(HOST, clientid, new MemoryPersistence());
@@ -33,14 +28,15 @@ public class ConsumerMQTT {
             //设置断开后重新连接
             options.setAutomaticReconnect(true);
             // 设置回调
-            client.setCallback(new PushCallback());
+            client.setCallback(new PushCallbackTest());
 
             client.connect(options);
 
             //订阅消息
 //            int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次
-            client.subscribe("huimv_up_867699060002277",2);
+            client.subscribe(topic,2);
 
+            client.disconnect();
 
         } catch (Exception e) {
             e.printStackTrace();

+ 69 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/mqtt/subscribe/PushCallbackTest.java

@@ -0,0 +1,69 @@
+package com.huimv.env.manage.saas.mqtt.subscribe;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.env.common.entity.BaseThreshold;
+import com.huimv.env.common.service.IBaseThresholdService;
+import com.huimv.env.manage.entity.*;
+import com.huimv.env.manage.saas.dao.entity.EnvDeviceEquipment;
+import com.huimv.env.manage.saas.mqtt.publish.PublishMQTT;
+import com.huimv.env.manage.saas.mqtt.utils.SpringUtil;
+import com.huimv.env.manage.saas.service.IEnvDeviceEquipmentService;
+import com.huimv.env.manage.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
+import org.eclipse.paho.client.mqttv3.MqttCallback;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.time.ZonedDateTime;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Component
+//接收消息回调
+@Slf4j
+public class PushCallbackTest implements MqttCallback {
+
+
+    @Override
+    public void connectionLost(Throwable cause) {
+        // 连接丢失后,一般在这里面进行重连
+        System.out.println("连接断开,可以做重连");
+    }
+
+    @Override
+    public void deliveryComplete(IMqttDeliveryToken token) {
+        System.out.println("deliveryComplete---------" + token.isComplete());
+    }
+
+    @Override
+    public void messageArrived(String topic, MqttMessage message) throws Exception {
+        // subscribe后得到的消息会执行到这里面
+        System.out.println("接收消息主题 : " + topic);
+        System.out.println("接收消息Qos : " + message.getQos());
+        System.out.println("接收消息内容 : " + new String(message.getPayload()));
+        System.out.println("开始处理当前数据...");
+
+        String s = new String(message.getPayload());
+        IEnvTopicService envTopicService = SpringUtil.getBean(IEnvTopicService.class);
+        Date date = new Date();
+        EnvTopic envTopic = new EnvTopic();
+        envTopic.setTime(date);
+        if ("sync_time".equals(s)) {
+            envTopic.setTopic(0);
+            System.out.println("收到控制响应");
+            System.out.println("数据处理完成!");
+        } else {
+            envTopic.setTopic(1);
+            System.out.println("操作失败");
+        }
+        envTopicService.save(envTopic);
+    }
+}

+ 16 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/service/IEnvTopicService.java

@@ -0,0 +1,16 @@
+package com.huimv.env.manage.service;
+
+import com.huimv.env.manage.entity.EnvTopic;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-19
+ */
+public interface IEnvTopicService extends IService<EnvTopic> {
+
+}

+ 20 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/service/impl/EnvTopicServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.env.manage.service.impl;
+
+import com.huimv.env.manage.entity.EnvTopic;
+import com.huimv.env.manage.mapper.EnvTopicMapper;
+import com.huimv.env.manage.service.IEnvTopicService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-19
+ */
+@Service
+public class EnvTopicServiceImpl extends ServiceImpl<EnvTopicMapper, EnvTopic> implements IEnvTopicService {
+
+}

+ 5 - 0
huimv-env-platform/huimv-env-manage/src/main/resources/com/huimv/env/manage/mapper/EnvTopicMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.env.manage.mapper.EnvTopicMapper">
+
+</mapper>