diff --git a/xiuosiot-backend/pom.xml b/xiuosiot-backend/pom.xml index dd2e03c..8993e6e 100644 --- a/xiuosiot-backend/pom.xml +++ b/xiuosiot-backend/pom.xml @@ -94,6 +94,12 @@ spring-boot-configuration-processor true + + + org.springframework.boot + spring-boot-starter-data-redis + 1.5.7.RELEASE + org.springframework.boot @@ -102,6 +108,13 @@ + + org.springframework.boot + spring-boot-starter-mail + + + + diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/EmailUtil.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/EmailUtil.java index c24f6bb..348cebf 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/EmailUtil.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/EmailUtil.java @@ -1,4 +1,100 @@ package com.aiit.xiuos.Utils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Component; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import java.io.File; +@Component public class EmailUtil { + + + + @Autowired + private JavaMailSender mailSender; + + private String from ="419034340@qq.com"; + + /** + * 发送纯文本邮件信息 + * + * @param to 接收方 + * @param subject 邮件主题 + * @param content 邮件内容(发送内容) + */ + public void sendMessage(String to, String subject, String content) { + // 创建一个邮件对象 + SimpleMailMessage msg = new SimpleMailMessage(); + msg.setFrom(from); // 设置发送发 + msg.setTo(to); // 设置接收方 + msg.setSubject(subject); // 设置邮件主题 + msg.setText(content); // 设置邮件内容 + // 发送邮件 + mailSender.send(msg); + } + + /** + * 发送带附件的邮件信息 + * + * @param to 接收方 + * @param subject 邮件主题 + * @param content 邮件内容(发送内容) + * @param files 文件数组 // 可发送多个附件 + */ + public void sendMessageCarryFiles(String to, String subject, String content, File[] files) { + MimeMessage mimeMessage = mailSender.createMimeMessage(); + try { + MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); + helper.setFrom(from); // 设置发送发 + helper.setTo(to); // 设置接收方 + helper.setSubject(subject); // 设置邮件主题 + helper.setText(content); // 设置邮件内容 + if (files != null && files.length > 0) { // 添加附件(多个) + for (File file : files) { + helper.addAttachment(file.getName(), file); + } + } + } catch (MessagingException e) { + e.printStackTrace(); + } + // 发送邮件 + mailSender.send(mimeMessage); + } + /** + * 发送带附件的邮件信息 + * + * @param to 接收方 + * @param subject 邮件主题 + * @param content 邮件内容(发送内容) + * @param file 单个文件 + */ + public void sendMessageCarryFile(String to, String subject, String content, File file) { + MimeMessage mimeMessage = mailSender.createMimeMessage(); + try { + MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); + helper.setFrom(from); // 设置发送发 + helper.setTo(to); // 设置接收方 + helper.setSubject(subject); // 设置邮件主题 + helper.setText(content); // 设置邮件内容 + helper.addAttachment(file.getName(), file); // 单个附件 + } catch (MessagingException e) { + e.printStackTrace(); + } + // 发送邮件 + mailSender.send(mimeMessage); + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } } + diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/TDengineJDBCUtil.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/TDengineJDBCUtil.java deleted file mode 100644 index 83adecf..0000000 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/TDengineJDBCUtil.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.aiit.xiuos.Utils; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.taosdata.jdbc.TSDBDriver; -import lombok.extern.slf4j.Slf4j; - -import java.sql.*; -import java.util.ArrayList; -import java.util.Properties; -@Slf4j -public class TDengineJDBCUtil { - public static Connection getConn() throws Exception{ - Class.forName("com.taosdata.jdbc.TSDBDriver"); - String jdbcUrl = "jdbc:TAOS://xiuosiot.taosnode1:6030/xiuosiot?user=root&password=taosdata"; - Properties connProps = new Properties(); - connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); - connProps.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); - connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); - connProps.setProperty("debugFlag", "135"); - connProps.setProperty("maxSQLLength", "1048576"); - Connection conn = DriverManager.getConnection(jdbcUrl, connProps); - return conn; - } - - public static Connection getRestConn() throws Exception{ - Class.forName("com.taosdata.jdbc.rs.RestfulDriver"); - String jdbcUrl = "jdbc:TAOS-RS://10.0.30.23:6041/test?user=root&password=taosdata"; - Properties connProps = new Properties(); - connProps.setProperty(TSDBDriver.PROPERTY_KEY_BATCH_LOAD, "true"); - Connection conn = DriverManager.getConnection(jdbcUrl, connProps); - return conn; - } - - - public static boolean createTable(String deviceno, String type, String org, String productname){ - Connection connection = null; - try { - connection = TDengineJDBCUtil.getConn(); - Statement stmt = connection.createStatement(); - String devicetype=TDengineJDBCUtil.changeType(type); - if(devicetype==null){ - return false; - } - // create table - String sql ="create table if not exists " + deviceno + " using "+devicetype+" tags("+"\""+org+"\","+"\"" + productname+"\")"; - stmt.executeUpdate(sql); - return true; - } catch (Exception e) { - e.printStackTrace(); - }finally { - try { - if(connection!=null){ - connection.close(); - } - - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - } - return false; - - } - - public static String changeType(String type){ - if(type.equals("M168-LoRa-FM100")) return "M168type"; - if(type.equals("RV400-NPU16T-5G-AR100")) return "RV400ARtype"; - if(type.equals("RV400-NPU4T-5G-SR100")) return "RV400SRtype"; - if(type.equals("M528-A800-5G-HM100")) return "M528type"; - if(type.equals("RV400-4G-FR100")) return "RV400FRtype"; - return null; - } - - public static ArrayList executeSql(String sql) throws Exception { - Connection connection = null; - ArrayList arrayList =new ArrayList<>(); - try { - connection = TDengineJDBCUtil.getConn(); - Statement stmt = connection.createStatement(); - ResultSet resultSet =stmt.executeQuery(sql); - log.info("tdengine executeQuery:"+sql); - - ResultSetMetaData metaData = resultSet.getMetaData(); - while (resultSet.next()) { - StringBuilder sb=new StringBuilder(); - for (int i = 1; i <= metaData.getColumnCount(); i++) { - String columnLabel = metaData.getColumnLabel(i); - String value = resultSet.getString(i); - sb.append(columnLabel+":"+value+" "); - } - arrayList.add(sb.toString()); - System.out.println(sb.toString()); - } - return arrayList; - } catch (SQLException e) { - System.out.println("ERROR Message: " + e.getMessage()); - System.out.println("ERROR Code: " + e.getErrorCode()); - e.printStackTrace(); - }finally { - try { - if(connection!=null){ - connection.close(); - } - - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - } - return null; - - } - - public static int getCount(String sql) throws Exception { - Connection connection = null; - int count =-1; - try { - connection = TDengineJDBCUtil.getConn(); - Statement stmt = connection.createStatement(); - ResultSet resultSet =stmt.executeQuery(sql); - log.info("tdengine executeQuery:"+sql); - ResultSetMetaData metaData = resultSet.getMetaData(); - if (resultSet.next()) { - count = resultSet.getInt(1); - } - return count; - } catch (SQLException e) { - System.out.println("ERROR Message: " + e.getMessage()); - System.out.println("ERROR Code: " + e.getErrorCode()); - e.printStackTrace(); - }finally { - try { - if(connection!=null){ - connection.close(); - } - - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - - } - return count; - - } - - - -} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/AlarmInfoController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/AlarmInfoController.java index 3210fb3..d612a21 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/AlarmInfoController.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/AlarmInfoController.java @@ -45,6 +45,16 @@ public class AlarmInfoController { return new ResultRespons(Constant.ERROR_CODE,"更新告警信息失败!"); } + + @PostMapping("/add") + public ResultRespons addAlarmInfo(@RequestBody AlarmInfo alarmInfo){ + int res =alarmInfoService.addAlarmInfo(alarmInfo); + if(res==1){ + return new ResultRespons(Constant.SUCCESS_CODE,"新增告警信息成功!"); + } + return new ResultRespons(Constant.ERROR_CODE,"新增告警信息失败!"); + } + @GetMapping("/getAlarmLevelCount") public ResultRespons getAlarmLevelCount(HttpServletRequest request){ UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user"); diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/AlarmRuleController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/AlarmRuleController.java index 28e8d81..7a8890c 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/AlarmRuleController.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/AlarmRuleController.java @@ -63,12 +63,5 @@ public class AlarmRuleController { return new ResultRespons(Constant.ERROR_CODE,"删除告警规则失败"); } - @GetMapping("/executeAlarmTask") - public void executeTask(){ - try { - taskScheduled.ExecuteRule(); - } catch (Exception e) { - e.printStackTrace(); - } - } + } diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DataForwardController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DataForwardController.java index d603593..a561692 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DataForwardController.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DataForwardController.java @@ -1,4 +1,99 @@ package com.aiit.xiuos.controller; +import com.aiit.xiuos.Utils.*; +import com.aiit.xiuos.model.DataForwarding; +import com.aiit.xiuos.model.UserInfo; +import com.aiit.xiuos.service.DataForwardService; +import com.aiit.xiuos.tdengine.TDengineJDBCUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/dataForward") +@Slf4j public class DataForwardController { + @Autowired + DataForwardService dataForwardService; + @Autowired + EmailUtil emailUtil; + + @PostMapping("/addRecord") + public ResultRespons addRecord(@RequestBody Map jsonMap) { + boolean flag =false; + List dataList =(List) jsonMap.get("datalist"); + DataForwarding dataForwarding =new DataForwarding(); + dataForwarding.setAddress((String)jsonMap.get("address")); + dataForwarding.setContent((String)jsonMap.get("content")); + dataForwarding.setOrg((String)jsonMap.get("org")); + dataForwarding.setSql((String)jsonMap.get("sql")); + dataForwarding.setTopic((String)jsonMap.get("topic")); + dataForwarding.setType((String)jsonMap.get("type")); + dataForwarding.setTime(MyUtils.getDateTime()); + try { + BufferedWriter bufferedWriter = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream("/home/aiitadmin/email/data.txt"), "UTF-8")); + for (String s : dataList) { + bufferedWriter.write(s); + bufferedWriter.newLine(); + bufferedWriter.flush(); + } + emailUtil.sendMessageCarryFile(dataForwarding.getAddress(),dataForwarding.getTopic(),dataForwarding.getContent(),new File("/home/aiitadmin/email/data.txt")); + flag =true; + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }catch (Exception e){ + e.printStackTrace(); + log.info("邮件发送失败"); + } + + if(flag){ + int res = dataForwardService.addRecord(dataForwarding); + if(res==1){ + return new ResultRespons(Constant.SUCCESS_CODE,"邮件发送成功,记录已保存"); + }else { + return new ResultRespons(Constant.ERROR_CODE, "邮件发送成功,记录保存失败"); + } + }else { + return new ResultRespons(Constant.ERROR_CODE,"邮件发送失败"); + } + + + } + + @GetMapping("/executeSql") + public ResultRespons executeSql(@RequestParam String sql){ + ArrayList resultData = null; + try { + resultData = TDengineJDBCUtil.executeSql(sql); + } catch (Exception e) { + e.printStackTrace(); + } + if(resultData!=null){ + return new ResultRespons(Constant.SUCCESS_CODE,"数据查询成功",resultData); + } + return new ResultRespons(Constant.ERROR_CODE,"数据查询失败,请检查查询语句"); + + } + + @GetMapping("/getRecord") + public ResultRespons getRecord(HttpServletRequest request){ + UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user"); + List lists = dataForwardService.selectRecord(userInfo.getOrg()); + if(lists != null && lists.size()>=0){ + return new ResultRespons(Constant.SUCCESS_CODE,"数据查询成功",lists); + } + return new ResultRespons(Constant.ERROR_CODE,"数据查询失败,请检查查询语句"); + + } } diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceDataController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceDataController.java index 0f664b9..f935b58 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceDataController.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceDataController.java @@ -3,23 +3,25 @@ package com.aiit.xiuos.controller; import com.aiit.xiuos.Utils.Constant; import com.aiit.xiuos.Utils.HttpClientUtil; import com.aiit.xiuos.Utils.ResultRespons; -import com.aiit.xiuos.dao.mappers.AvgDayDataMapper; import com.aiit.xiuos.model.AvgDayData; +import com.aiit.xiuos.mqtt.MqttConfiguration; +import com.aiit.xiuos.mqtt.MyMqttClient; import com.aiit.xiuos.service.AvgDayDataService; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/data") public class DeviceDataController { @Autowired AvgDayDataService avgDayDataService; + @Autowired + private MyMqttClient myMqttClient; @GetMapping("/getAll") public ResultRespons getAllDataFromDSD(HttpServletRequest request){ @@ -38,4 +40,14 @@ public class DeviceDataController { return new ResultRespons(Constant.ERROR_CODE,"查询数据失败"); } + @PostMapping("/publishData") + public ResultRespons publishData(@RequestBody Map jsonMap){ + if(myMqttClient==null){ + myMqttClient=new MqttConfiguration().getMqttPushClient(); + } + myMqttClient.publish("xiuosiot/"+jsonMap.get("deviceno"), JSONObject.toJSONString(jsonMap)); + return new ResultRespons(Constant.ERROR_CODE,"数据发送成功"); + } + + } diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/DataForwardingMapper.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/DataForwardingMapper.java index ff84833..27f627c 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/DataForwardingMapper.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/DataForwardingMapper.java @@ -1,7 +1,13 @@ package com.aiit.xiuos.dao.mappers; import com.aiit.xiuos.model.DataForwarding; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; +import java.util.List; + +@Repository public interface DataForwardingMapper { int deleteByPrimaryKey(Integer id); @@ -14,4 +20,7 @@ public interface DataForwardingMapper { int updateByPrimaryKeySelective(DataForwarding record); int updateByPrimaryKey(DataForwarding record); + + @Select("select * from data_forwarding where org = #{org}") + List selectAll(@Param("org") String org); } \ No newline at end of file diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/DataForwarding.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/DataForwarding.java index e08ee25..eb441f6 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/DataForwarding.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/DataForwarding.java @@ -1,6 +1,8 @@ package com.aiit.xiuos.model; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Builder; import lombok.Data; @@ -14,7 +16,7 @@ public class DataForwarding { private String content; private String type; - + @JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date time; private String address; diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/scheduled/TaskScheduled.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/scheduled/TaskScheduled.java index 33d71e3..f56ae5e 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/scheduled/TaskScheduled.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/scheduled/TaskScheduled.java @@ -2,17 +2,13 @@ package com.aiit.xiuos.scheduled; import com.aiit.xiuos.Utils.EmailUtil; import com.aiit.xiuos.Utils.MyUtils; -import com.aiit.xiuos.Utils.TDengineJDBCUtil; +import com.aiit.xiuos.tdengine.TDengineJDBCUtil; import com.aiit.xiuos.model.*; import com.aiit.xiuos.service.*; -import com.aiit.xiuos.service.impl.AvgDayDataServiceImpl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; -import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -134,16 +130,10 @@ public class TaskScheduled { //保存告警信息。告警级别高的插入,低的因主键冲突可自动排除。 try{ alarmInfoService.addAlarmInfo(alarmInfo); - }catch (Exception e){ - e.printStackTrace(); - } - //发送邮件 - try{ emailUtil.sendMessage(alarmRule.getNoticeAddress(),"设备告警",alarmRule.getNoticeContent()); log.info("邮件发送成功"); - }catch (Exception e) { - log.error("邮件发送失败"); - e.printStackTrace(); + }catch (Exception e){ + log.info(e.getMessage()); } } diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/DataForwardService.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/DataForwardService.java index b28c7c6..4050837 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/DataForwardService.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/DataForwardService.java @@ -1,4 +1,11 @@ package com.aiit.xiuos.service; -public interface DataForward { +import com.aiit.xiuos.model.DataForwarding; + +import java.util.List; + +public interface DataForwardService { + int addRecord(DataForwarding dataForwarding); + List selectRecord(String org); + } diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/DataForwardServiceImpl.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/DataForwardServiceImpl.java index 14789f4..fb0c71e 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/DataForwardServiceImpl.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/DataForwardServiceImpl.java @@ -1,4 +1,23 @@ package com.aiit.xiuos.service.impl; -public class DataForwardServiceImpl { +import com.aiit.xiuos.dao.mappers.DataForwardingMapper; +import com.aiit.xiuos.model.DataForwarding; +import com.aiit.xiuos.service.DataForwardService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +@Service +public class DataForwardServiceImpl implements DataForwardService { + @Autowired + DataForwardingMapper dataForwardingMapper; + @Override + public int addRecord(DataForwarding dataForwarding) { + return dataForwardingMapper.insertSelective(dataForwarding); + } + + @Override + public List selectRecord(String org) { + return dataForwardingMapper.selectAll(org); + } } diff --git a/xiuosiot-backend/src/main/resources/application-local.yml b/xiuosiot-backend/src/main/resources/application-local.yml index d8002f8..e34b40f 100644 --- a/xiuosiot-backend/src/main/resources/application-local.yml +++ b/xiuosiot-backend/src/main/resources/application-local.yml @@ -76,6 +76,9 @@ mqtt: #默认主题 default-topic: xiuosiot/# +tdengine: + url: jdbc:TAOS://taosnode1:6030/xiuosiot?user=root&password=taosdata + logging: file: name: xiuosiot.log diff --git a/xiuosiot-backend/src/main/resources/application-prod.yml b/xiuosiot-backend/src/main/resources/application-prod.yml index 83fddab..1c5e4c7 100644 --- a/xiuosiot-backend/src/main/resources/application-prod.yml +++ b/xiuosiot-backend/src/main/resources/application-prod.yml @@ -69,7 +69,8 @@ mqtt: keepalive: 100 #默认主题 default-topic: xiuosiot/# - +tdengine: + url: jdbc:TAOS://xiuosiot.taosnode1:6030/xiuosiot?user=root&password=taosdata logging: file: name: xiuosiot.log diff --git a/xiuosiot-backend/src/test/java/com/aiit/xiuos/MqttTest.java b/xiuosiot-backend/src/test/java/com/aiit/xiuos/MqttTest.java new file mode 100644 index 0000000..c224718 --- /dev/null +++ b/xiuosiot-backend/src/test/java/com/aiit/xiuos/MqttTest.java @@ -0,0 +1,36 @@ +package com.aiit.xiuos; + + +import com.aiit.xiuos.mqtt.MyMqttClient; +import com.alibaba.fastjson.JSONObject; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.Random; + +@SpringBootTest(classes = XiuosApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class MqttTest { + @Autowired + private MyMqttClient myMqttClient; + + @Test + void pushlish() { + Random random =new Random(); + for (int i = 0; i < 1; i++) { + JSONObject jsonObject =new JSONObject(); + jsonObject.put("co2",19); + jsonObject.put("so2",19); + jsonObject.put("temperature",30); + jsonObject.put("humidity",28); + jsonObject.put("deviceno","a000001"); + myMqttClient.publish("xiuosiot/A000001", jsonObject.toJSONString()); + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + +} \ No newline at end of file