wwh vor 2 Jahren
Ursprung
Commit
2485ef2b94

+ 2 - 2
test02/src/main/java/com/huimv/subscribe/ConsumerMQTT2.java

@@ -37,7 +37,7 @@ public class ConsumerMQTT2 {
             //设置断开后重新连接
             options.setAutomaticReconnect(false);
             // 设置回调
-            client.setCallback(new PushCallback());
+            client.setCallback(new PushCallback2());
 //            MqttTopic topic = client.getTopic(TOPIC1);
             //setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。设置最终端口的通知消息
             //遗嘱
@@ -48,7 +48,7 @@ public class ConsumerMQTT2 {
 //            int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次
 //            String[] topic1 = {TOPIC1};
 //            client.subscribe(topic1, Qos);
-            client.subscribe("/LG210/D4AD204BAEE4/up",1);
+            client.subscribe("/LG210/D4AD204BAEE4/down",1);
 //huimv_up_867699060002277
 
         } catch (Exception e) {

+ 20 - 24
test02/src/main/java/com/huimv/subscribe/PushCallback.java

@@ -6,6 +6,7 @@ import com.huimv.entity.EnvElectricity;
 import com.huimv.entity.EnvWater;
 import com.huimv.service.IEnvElectricityService;
 import com.huimv.service.IEnvWaterService;
+import com.huimv.untils.MySQLDemo;
 import com.huimv.untils.SpringUtil;
 import org.eclipse.paho.client.mqttv3.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -60,53 +61,48 @@ class PushCallback implements MqttCallback {
             try {
                 System.out.println("开始处理电表数据!");
                 String substring = s.substring(6, 14);
-                System.out.println("截取字符串:"+substring);
 //                IEnvElectricityService electricityService = SpringUtil.getBean(IEnvElectricityService.class);
-                System.out.println("-------->1");
-
-                EnvElectricity envElectricity = new EnvElectricity();
+                MySQLDemo demo = new MySQLDemo();
                 int eleOrigValue = Integer.parseInt(substring, 16);
-                System.out.println("整形:"+eleOrigValue);
                 Float f =  Float.intBitsToFloat(eleOrigValue);
-                System.out.println("浮点:"+f);
                 BigDecimal bigDecimal = new BigDecimal(f);
-                envElectricity.setOriginalValue(bigDecimal);
-                envElectricity.setUpdateTime(new Date());
-                envElectricity.setFarmId(27);
-                envElectricityService.save(envElectricity);
+                java.util.Date date = new java.util.Date();
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                String format = simpleDateFormat.format(date);
+                demo.add(format, bigDecimal);
             } catch (Exception e) {
                 System.out.println("sssssssss"+ e);
             }
-
         }
         if (s.startsWith("3303")) {
             System.out.println("开始处理水表数据!");
             String substring = s.substring(6, 14);
-            IEnvWaterService waterService = SpringUtil.getBean(IEnvWaterService.class);
-            EnvWater water = new EnvWater();
             int eleOrigValue = Integer.parseInt(substring, 16);
             BigDecimal value = BigDecimal.valueOf(eleOrigValue * 0.01);
-            water.setOriginalValue(value);
-            water.setUpdateTime(new Date());
-            water.setFarmId(27);
-            waterService.save(water);
+            MySQLDemo demo = new MySQLDemo();
+            java.util.Date date = new java.util.Date();
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String format = simpleDateFormat.format(date);
+            demo.add2(format, value);
         }
         System.out.println("数据处理完成!");
     }
 
     public static void main(String[] args) {
-        String s = "1c0404405c0a3d2426";
-        String substring = s.substring(6, 14);
-        System.out.println(substring);
+//        String s = "1c0404405c0a3d2426";
+//        String substring = s.substring(6, 14);
+//        System.out.println(substring);
 
+        MySQLDemo mySQLDemo = new MySQLDemo();
+        mySQLDemo.select();
 //        int eleOrigValue = Integer.parseInt(substring, 16);
 //        BigDecimal value = BigDecimal.valueOf(eleOrigValue * 0.01);
 //        System.out.println(value);
 //
-    int eleOrigValue = Integer.parseInt(substring, 16);
-    Float f =  Float.intBitsToFloat(eleOrigValue);
-    BigDecimal bigDecimal = new BigDecimal(f);
-        System.out.println(bigDecimal);
+//    int eleOrigValue = Integer.parseInt(substring, 16);
+//    Float f =  Float.intBitsToFloat(eleOrigValue);
+//    BigDecimal bigDecimal = new BigDecimal(f);
+//        System.out.println(bigDecimal);
 //        Float f =  Float.intBitsToFloat(1079773757);
 //        System.out.println(f);
 ////                BigDecimal bigDecimal = new BigDecimal(f);

+ 103 - 0
test02/src/main/java/com/huimv/subscribe/PushCallback2.java

@@ -0,0 +1,103 @@
+package com.huimv.subscribe;
+
+import com.huimv.service.IEnvElectricityService;
+import com.huimv.untils.MySQLDemo;
+import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
+import org.eclipse.paho.client.mqttv3.MqttCallback;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+//接收消息回调
+class PushCallback2 implements MqttCallback {
+
+    @Autowired
+    private IEnvElectricityService envElectricityService;
+
+    private MqttClient client;
+    @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());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        System.out.println("接收消息的时间 :" + sdf.format(new Date()));
+//        System.out.println("siejgfskjgfsldjfhg"+message);
+//        System.out.println(message.getPayload());
+        byte[] payload = message.getPayload();
+        StringBuilder sb = new StringBuilder();
+        for (byte b : payload) {
+            sb.append(String.format("%02x", b));
+        }
+        String s = sb.toString();
+        System.out.println("接收消息内容 : " + s);
+        System.out.println("开始处理当前数据...");
+//        if (s.startsWith("1c04")){
+//            try {
+//                System.out.println("开始处理电表数据!");
+//                String substring = s.substring(6, 14);
+////                IEnvElectricityService electricityService = SpringUtil.getBean(IEnvElectricityService.class);
+//                MySQLDemo demo = new MySQLDemo();
+//                int eleOrigValue = Integer.parseInt(substring, 16);
+//                Float f =  Float.intBitsToFloat(eleOrigValue);
+//                BigDecimal bigDecimal = new BigDecimal(f);
+//                java.util.Date date = new java.util.Date();
+//                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//                String format = simpleDateFormat.format(date);
+//                demo.add(format, bigDecimal);
+//            } catch (Exception e) {
+//                System.out.println("sssssssss"+ e);
+//            }
+//        }
+//        if (s.startsWith("3303")) {
+//            System.out.println("开始处理水表数据!");
+//            String substring = s.substring(6, 14);
+//            int eleOrigValue = Integer.parseInt(substring, 16);
+//            BigDecimal value = BigDecimal.valueOf(eleOrigValue * 0.01);
+//            MySQLDemo demo = new MySQLDemo();
+//            java.util.Date date = new java.util.Date();
+//            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//            String format = simpleDateFormat.format(date);
+//            demo.add2(format, value);
+//        }
+        System.out.println("数据处理完成!");
+    }
+
+//    public static void main(String[] args) {
+//        String s = "1c0404405c0a3d2426";
+//        String substring = s.substring(6, 14);
+//        System.out.println(substring);
+//
+////        int eleOrigValue = Integer.parseInt(substring, 16);
+////        BigDecimal value = BigDecimal.valueOf(eleOrigValue * 0.01);
+////        System.out.println(value);
+////
+//    int eleOrigValue = Integer.parseInt(substring, 16);
+//    Float f =  Float.intBitsToFloat(eleOrigValue);
+//    BigDecimal bigDecimal = new BigDecimal(f);
+//        System.out.println(bigDecimal);
+////        Float f =  Float.intBitsToFloat(1079773757);
+////        System.out.println(f);
+//////                BigDecimal bigDecimal = new BigDecimal(f);
+////        // 1079773757
+//    }
+}
+

+ 181 - 0
test02/src/main/java/com/huimv/untils/MySQLDemo.java

@@ -0,0 +1,181 @@
+package com.huimv.untils;
+
+import java.math.BigDecimal;
+import java.sql.*;
+
+import com.alibaba.fastjson.JSONObject;
+
+public class MySQLDemo {
+
+    // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
+    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
+    static final String DB_URL = "jdbc:mysql://139.9.172.209:3309/huimv-farm-env?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai";
+
+    // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
+    //static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
+    //static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&serverTimezone=UTC";
+
+
+    // 数据库的用户名与密码,需要根据自己的设置
+    static final String USER = "eartag";
+    static final String PASS = "eartag@2022";
+
+
+    public BigDecimal select() {
+        BigDecimal name = null;
+          Connection conn = null;
+          Statement stmt = null;
+          try{
+              // 注册 JDBC 驱动
+              Class.forName(JDBC_DRIVER);
+
+              // 打开链接
+              System.out.println("连接数据库...");
+              conn = DriverManager.getConnection(DB_URL,USER,PASS);
+
+
+              // 执行查询
+              System.out.println(" 实例化Statement对象...");
+              stmt = conn.createStatement();
+              String sql;
+              sql = "SELECT id,IFNULL(handle_value,0.00) AS hand_value FROM env_water ORDER BY id DESC LIMIT 1";
+              ResultSet rs = stmt.executeQuery(sql);
+
+              // 展开结果集数据库
+              while(rs.next()){
+                  // 通过字段检索
+                  int id  = rs.getInt("id");
+                  name = rs.getBigDecimal("hand_value");
+
+                  // 输出数据
+//                  System.out.print("ID: " + id);
+//                  System.out.print(", 站点名称: " + name);
+                  BigDecimal da = name;
+              }
+              // 完成后关闭
+              rs.close();
+              stmt.close();
+              conn.close();
+              return name;
+          }catch(SQLException se){
+              // 处理 JDBC 错误
+              se.printStackTrace();
+          }catch(Exception e){
+              // 处理 Class.forName 错误
+              e.printStackTrace();
+          }finally{
+              // 关闭资源
+              try{
+                  if(stmt!=null) {
+                      stmt.close();
+                  }
+              }catch(SQLException se2){
+              }// 什么都不做
+              try{
+                  if(conn!=null) {
+                      conn.close();
+                  }
+              }catch(SQLException se){
+                  se.printStackTrace();
+              }
+              return name;
+          }
+
+
+    }
+
+    public void add(String date, BigDecimal humidity) {
+
+
+        Connection conn = null;
+        Statement stmt = null;
+        try{
+            // 注册 JDBC 驱动
+            Class.forName(JDBC_DRIVER);
+
+            // 打开链接
+            conn = DriverManager.getConnection(DB_URL,USER,PASS);
+
+
+            // 执行查询
+            stmt = conn.createStatement();
+            String sql = "INSERT INTO env_electricity (original_value,update_time,farm_id)\r\n" +
+                    "VALUES('"+humidity+"','"+date+"','"+27+"')";//传感器
+            int rs = stmt.executeUpdate(sql);
+            if (rs>0) {
+                 System.out.println("true"+rs);
+            }else {
+                 System.out.println("flase"+rs);
+            }
+
+
+
+            stmt.close();
+            conn.close();
+        }catch(SQLException se){
+            // 处理 JDBC 错误
+            se.printStackTrace();
+        }catch(Exception e){
+            // 处理 Class.forName 错误
+            e.printStackTrace();
+        }finally{
+            // 关闭资源
+            try{
+                if(stmt!=null) stmt.close();
+            }catch(SQLException se2){
+            }// 什么都不做
+            try{
+                if(conn!=null) conn.close();
+            }catch(SQLException se){
+                se.printStackTrace();
+            }
+        }
+    }
+    public void add2(String date, BigDecimal humidity) {
+
+
+        Connection conn = null;
+        Statement stmt = null;
+        try{
+            // 注册 JDBC 驱动
+            Class.forName(JDBC_DRIVER);
+
+            // 打开链接
+            conn = DriverManager.getConnection(DB_URL,USER,PASS);
+
+
+            // 执行查询
+            stmt = conn.createStatement();
+            String sql = "INSERT INTO env_water (original_value,update_time,farm_id)\r\n" +
+                    "VALUES('"+humidity+"','"+date+"','"+27+"')";//传感器
+            int rs = stmt.executeUpdate(sql);
+            if (rs>0) {
+                System.out.println("true"+rs);
+            }else {
+                System.out.println("flase"+rs);
+            }
+
+
+
+            stmt.close();
+            conn.close();
+        }catch(SQLException se){
+            // 处理 JDBC 错误
+            se.printStackTrace();
+        }catch(Exception e){
+            // 处理 Class.forName 错误
+            e.printStackTrace();
+        }finally{
+            // 关闭资源
+            try{
+                if(stmt!=null) stmt.close();
+            }catch(SQLException se2){
+            }// 什么都不做
+            try{
+                if(conn!=null) conn.close();
+            }catch(SQLException se){
+                se.printStackTrace();
+            }
+        }
+    }
+}

BIN
test02/target/classes/com/huimv/subscribe/ConsumerMQTT2.class


BIN
test02/target/classes/com/huimv/subscribe/PushCallback.class


BIN
test02/target/classes/com/huimv/subscribe/PushCallback2.class


BIN
test02/target/classes/com/huimv/untils/MySQLDemo.class