Compare commits

..

10 Commits

Author SHA1 Message Date
hwf453 2db668569e ADD MQTT02 4 months ago
修改密码漏洞修复完成 eaddd51d9f esp8266和dht11温湿度传感器 数据采集mqtt入库完成 4 months ago
修改密码漏洞修复完成 607666f395 esp8266和dht11温湿度传感器 数据采集mqtt入库完成 4 months ago
修改密码漏洞修复完成 62b870fbd5 esp8266和dht11温湿度传感器 数据采集http入库 4 months ago
修改密码漏洞修复完成 9531b6ede2 add esp 4 months ago
修改密码漏洞修复完成 e430106ff5 dfd 5 months ago
修改密码漏洞修复完成 ef4832b3bc db change 5 months ago
修改密码漏洞修复完成 c2aa0169bf log change 5 months ago
修改密码漏洞修复完成 c6bf63ebb2 db change 5 months ago
修改密码漏洞修复完成 979b84d004 db change 5 months ago

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<webroots />
</configuration>
</facet>
<facet type="jpa" name="JPA">
<configuration>
<setting name="validation-enabled" value="true" />
<setting name="provider-name" value="Hibernate" />
<datasource-mapping>
<factory-entry name="entityManagerFactory" />
</datasource-mapping>
<naming-strategy-map />
</configuration>
</facet>
<facet type="Spring" name="Spring">
<configuration />
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-jpa:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.3" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.9" level="project" />
<orderEntry type="library" name="Maven: jakarta.transaction:jakarta.transaction-api:1.3.3" level="project" />
<orderEntry type="library" name="Maven: jakarta.persistence:jakarta.persistence-api:2.2.3" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.4.32.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.2.Final" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.27.0-GA" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.22" level="project" />
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
<orderEntry type="library" name="Maven: org.jboss:jandex:2.2.3.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.1.2.Final" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-runtime:2.3.4" level="project" />
<orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jaxb:txw2:2.3.4" level="project" />
<orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:3.0.12" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.activation:jakarta.activation:1.2.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-orm:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.32" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aspects:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.5.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.4" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.50" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.50" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.50" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.4" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.32" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.9" level="project" />
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.4" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.6" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.26" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.2.24" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:2.0.53" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.53" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.53" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.6.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.11.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.9" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:19.0.0" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.36" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
<orderEntry type="library" name="Maven: com.oracle:ojdbc6:11.2.0.1.0" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.60" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.60" level="project" />
<orderEntry type="library" name="Maven: com.microsoft.sqlserver:mssql-jdbc:11.2.0.jre8" level="project" />
<orderEntry type="library" name="Maven: com.kingbase8:kingbase8:8.6.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.postgresql:postgresql:42.2.23" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.8.37" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-crypto:5.8.37" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-core:5.8.37" level="project" />
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:3.0.2" level="project" />
</component>
</module>

@ -9,3 +9,5 @@ mvn install:install-file -Dfile=/Users/admin/ojdbc6.jar -DgroupId=com.oracle -Da
mvn install:install-file -Dfile=C:\Users\Administrator\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar mvn install:install-file -Dfile=C:\Users\Administrator\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar
maven查看依赖树命令
mvn dependency:tree

@ -25,6 +25,16 @@
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>org.mybatis.spring.boot</groupId>
@ -47,11 +57,6 @@
<version>1.2.24</version> <version>1.2.24</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.eclipse.paho</groupId> <groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
@ -145,11 +150,11 @@
<artifactId>hutool-crypto</artifactId> <artifactId>hutool-crypto</artifactId>
<version>5.8.37</version> <version>5.8.37</version>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>org.springframework.boot</groupId> <!-- <groupId>org.springframework.boot</groupId>-->
<artifactId>spring-boot-starter-log4j2</artifactId> <!-- <artifactId>spring-boot-starter-log4j2</artifactId>-->
<version>2.1.6.RELEASE</version> <!-- <version>2.1.6.RELEASE</version>-->
</dependency> <!-- </dependency>-->
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>commons-net</groupId>--> <!-- <groupId>commons-net</groupId>-->
<!-- <artifactId>commons-net</artifactId>--> <!-- <artifactId>commons-net</artifactId>-->

@ -1,7 +1,9 @@
package com.rehome.mqttclienttemperature; package com.rehome.mqttclienttemperature;
import com.rehome.mqttclienttemperature.service.TemperatureEspService;
import com.rehome.mqttclienttemperature.service.TemperatureService; import com.rehome.mqttclienttemperature.service.TemperatureService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
@ -16,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Map; import java.util.Map;
@Slf4j
@EnableJpaAuditing @EnableJpaAuditing
@EnableScheduling @EnableScheduling
@EnableAsync @EnableAsync
@ -32,6 +35,13 @@ public class AdminClientTemperatureApplication implements CommandLineRunner, App
@Resource @Resource
private TemperatureService temperatureService; private TemperatureService temperatureService;
/**
*/
@Resource
private TemperatureEspService temperatureEspService;
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(AdminClientTemperatureApplication.class, args); SpringApplication.run(AdminClientTemperatureApplication.class, args);
} }
@ -45,17 +55,25 @@ public class AdminClientTemperatureApplication implements CommandLineRunner, App
//在这里可以调用applicationContext了 //在这里可以调用applicationContext了
Map<String, Object> controllers = applicationContext.getBeansWithAnnotation(RequestMapping.class); Map<String, Object> controllers = applicationContext.getBeansWithAnnotation(RequestMapping.class);
for (Map.Entry<String, Object> entry : controllers.entrySet()) { for (Map.Entry<String, Object> entry : controllers.entrySet()) {
System.out.println("------------------------"); log.info("------------------------");
System.out.println(entry.getKey());//demo1Controller log.info(entry.getKey());//demo1Controller
} }
try { try {
if (temperatureService != null) { if (temperatureService != null) {
System.out.println("------------------------"); log.info("------------------------");
System.out.println("TemperatureController is not empty"); log.info("TemperatureController is not empty");
MqttRSAClient client = new MqttRSAClient(); MqttRSAClient client = new MqttRSAClient();
client.start(temperatureService); client.start(temperatureService);
}else { }else {
System.out.println("temperatureService is empty"); log.info("temperatureService is empty");
}
if (temperatureEspService != null) {
log.info("------------------------");
log.info("temperatureEspService is not empty");
MqttDianDengTechClient client = new MqttDianDengTechClient();
client.start(temperatureEspService);
}else {
log.info("temperatureEspService is empty");
} }
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();

@ -0,0 +1,159 @@
package com.rehome.mqttclienttemperature;
import com.rehome.mqttclienttemperature.service.TemperatureEspService;
import com.rehome.mqttclienttemperature.service.TemperatureService;
import com.rehome.mqttclienttemperature.utils.MqttSSLSocketFactory;
import com.rehome.mqttclienttemperature.utils.UUIDUtil;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import javax.net.ssl.SSLSocketFactory;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
@Slf4j
public class MqttDianDengTechClient {
/**
* ip
*/
public static final String MQTT_BROKER_HOST = "ssl://47.242.184.139:8883";
/**
*
*/
public static String MQTT_CLIENT_ID = "AppServer_temperature_APP_server_02";
/**
*
*/
public static String USERNAME = "admin";
/**
*
*/
public static String PASSWORD = "publish452131wW452131wW$";
/**
*
*/
public static String TOPIC_FILTER = "/device/esp8266/001";
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
//定时器
private Timer timer;
public MqttDianDengTechClient(){
try {
MQTT_CLIENT_ID = UUIDUtil.getUUID();
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
// 配置参数信息
options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录
// 这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(false);
// 设置用户名
options.setUserName(USERNAME);
// 设置密码
options.setPassword(PASSWORD.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//断线重连
options.setAutomaticReconnect(true);
//mqtt服务器端单双向加密
// InputStream caCrtFile = this.getClass().getResourceAsStream("/ssl/my_root_ca.crt");
// InputStream crtFile = this.getClass().getResourceAsStream("/ssl/client.crt");
// InputStream keyFile = this.getClass().getResourceAsStream("/ssl/client.key");
// String password = "";
InputStream caCrtFile = this.getClass().getResourceAsStream("/ssl/my_root_ca.crt");
InputStream crtFile = this.getClass().getResourceAsStream("/ssl/client.crt");
InputStream keyFile = this.getClass().getResourceAsStream("/ssl/client.key");
String password = "";
SSLSocketFactory socketFactory = MqttSSLSocketFactory.getTwoDirSocketFactory(caCrtFile,crtFile,keyFile,password);
options.setSocketFactory(socketFactory);
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(TemperatureEspService temperatureEspService) {
try {
// 连接
mqttClient.connect(options);
// 订阅
mqttClient.subscribe(TOPIC_FILTER,qos);
// 设置回调
mqttClient.setCallback(new MqttCallbackExtended(){
@Override
public void connectionLost(Throwable throwable) {
log.info("connectionLost");
try {
mqttClient.reconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
String strData = new String(mqttMessage.getPayload());
log.info("topic:"+s);
log.info("Qos:"+mqttMessage.getQos());
log.info("message RSA:"+strData);
if(strData!=null&&strData.length()>=11){
String[] strDataTemperature = strData.split(" ");
temperatureEspService.saveTemperature(strDataTemperature[0],strDataTemperature[1],s);
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
log.info("deliveryComplete---------"+ iMqttDeliveryToken.isComplete());
}
@Override
public void connectComplete(boolean b, String s) {
//连接成功后调用
try {
mqttClient.subscribe(TOPIC_FILTER,qos);//具体订阅代码
} catch (MqttException e) {
e.printStackTrace();
}
}
});
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
log.info("-------设定要指定任务--------");
try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) {
log.info("***** 没有连接到服务器 *****");
log.info("***** client to connect *****");
// 重新连接
mqttClient.connect(options);
}
if (mqttClient.isConnected()) {//连接成功,跳出连接
log.info("***** connect success *****");
}
} catch (MqttException e1) {
e1.printStackTrace();
}
}
}, 10000,10000);
// 设定指定的时间time,此处为10000毫秒
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -4,9 +4,9 @@ package com.rehome.mqttclienttemperature;
import com.rehome.mqttclienttemperature.service.TemperatureService; import com.rehome.mqttclienttemperature.service.TemperatureService;
import com.rehome.mqttclienttemperature.utils.MqttSSLSocketFactory; import com.rehome.mqttclienttemperature.utils.MqttSSLSocketFactory;
import com.rehome.mqttclienttemperature.utils.UUIDUtil; import com.rehome.mqttclienttemperature.utils.UUIDUtil;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.SSLSocketFactory;
import java.io.InputStream; import java.io.InputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -14,7 +14,8 @@ import java.util.Date;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
// Xiaomi_8B2C
@Slf4j
public class MqttRSAClient { public class MqttRSAClient {
/** /**
* ip * ip
@ -93,7 +94,7 @@ public class MqttRSAClient {
@Override @Override
public void connectionLost(Throwable throwable) { public void connectionLost(Throwable throwable) {
System.out.println("connectionLost"); log.info("connectionLost");
try { try {
mqttClient.reconnect(); mqttClient.reconnect();
} catch (MqttException e) { } catch (MqttException e) {
@ -104,15 +105,15 @@ public class MqttRSAClient {
@Override @Override
public void messageArrived(String s, MqttMessage mqttMessage) { public void messageArrived(String s, MqttMessage mqttMessage) {
String strData = new String(mqttMessage.getPayload()); String strData = new String(mqttMessage.getPayload());
System.out.println("topic:"+s); log.info("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos()); log.info("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+strData); log.info("message RSA:"+strData);
temperatureService.saveTemperature(strData,s); //temperatureService.saveTemperature(strData,s);
} }
@Override @Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("deliveryComplete---------"+ iMqttDeliveryToken.isComplete()); log.info("deliveryComplete---------"+ iMqttDeliveryToken.isComplete());
} }
@Override @Override
@ -128,17 +129,17 @@ public class MqttRSAClient {
timer = new Timer(); timer = new Timer();
timer.schedule(new TimerTask() { timer.schedule(new TimerTask() {
public void run() { public void run() {
System.out.println("-------设定要指定任务--------"); log.info("-------设定要指定任务--------");
try { try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的 //判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) { if (!mqttClient.isConnected()) {
System.out.println("***** 没有连接到服务器 *****"); log.info("***** 没有连接到服务器 *****");
System.out.println("***** client to connect *****"); log.info("***** client to connect *****");
// 重新连接 // 重新连接
mqttClient.connect(options); mqttClient.connect(options);
} }
if (mqttClient.isConnected()) {//连接成功,跳出连接 if (mqttClient.isConnected()) {//连接成功,跳出连接
System.out.println("***** connect success *****"); log.info("***** connect success *****");
} }
} catch (MqttException e1) { } catch (MqttException e1) {
e1.printStackTrace(); e1.printStackTrace();

@ -12,7 +12,6 @@ import com.rehome.mqttclienttemperature.utils.JdbcUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

@ -6,6 +6,7 @@ import com.rehome.mqttclienttemperature.dto.RequestTemperatureDto;
import com.rehome.mqttclienttemperature.entity.Temperature; import com.rehome.mqttclienttemperature.entity.Temperature;
import com.rehome.mqttclienttemperature.response.Result; import com.rehome.mqttclienttemperature.response.Result;
import com.rehome.mqttclienttemperature.service.TemperatureService; import com.rehome.mqttclienttemperature.service.TemperatureService;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError; import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -58,6 +59,4 @@ public class TemperatureController {
private List<Temperature> queryFirst10ByDataDateAndLocationDesc(@RequestBody @Validated RequestTemperatureDto dto) { private List<Temperature> queryFirst10ByDataDateAndLocationDesc(@RequestBody @Validated RequestTemperatureDto dto) {
return temperatureService.queryFirst10ByDataDateAndLocationDesc(dto.getDataDate(),dto.getLocationDesc()); return temperatureService.queryFirst10ByDataDateAndLocationDesc(dto.getDataDate(),dto.getLocationDesc());
} }
} }

@ -0,0 +1,44 @@
package com.rehome.mqttclienttemperature.controller;
import com.rehome.mqttclienttemperature.dto.RequestNowTemperatureDto;
import com.rehome.mqttclienttemperature.dto.RequestTemperatureDto;
import com.rehome.mqttclienttemperature.entity.Temperature;
import com.rehome.mqttclienttemperature.response.Result;
import com.rehome.mqttclienttemperature.service.TemperatureEspService;
import com.rehome.mqttclienttemperature.service.TemperatureService;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @author HuangWenfei
* App
* 2024-10-16 11:11
*/
@Slf4j
@RestController
@CrossOrigin
@RequestMapping("/web/temperature/esp")
public class TemperatureEspController {
@Resource
private TemperatureEspService temperatureEspService;
/**
* APP
*/
@GetMapping("/saveEspTemperature")
private String save(@Param("temperature")String temperature, @Param("humidity")String humidity) {
log.info(temperature);
log.info(humidity);
this.temperatureEspService.saveTemperature(temperature,humidity);
return "success";
}
}

@ -0,0 +1,108 @@
package com.rehome.mqttclienttemperature.dao;
import com.rehome.mqttclienttemperature.entity.TemperatureEsp;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* Esp8266 DHT湿
* T :
* ID :OID
*
*/
public interface TemperatureEspRepository extends JpaRepository<TemperatureEsp,Long> {
//方法名称必须要遵循驼峰式命名规则findBy关键字+属性名称(首字母大写)+查询条件(首字母大写)
TemperatureEsp findByDataDate(String dataDate);
TemperatureEsp findByDataHour(String dataHour);
TemperatureEsp findByDataMinute(String dataMinute);
@Query(value = "select * from temperature t where t.data_date=?1 and t.location_desc=?2", nativeQuery = true)
List<TemperatureEsp> findByDataDateAndLocationDesc(String dataDate,String locationDesc);
List<TemperatureEsp> findFirst10ByDataDateAndLocationDesc(String dataDate,String locationDesc, Sort sort);
Page<TemperatureEsp> queryFirst10ByDataDateAndLocationDesc(String dataDate,String locationDesc, Pageable pageable);
TemperatureEsp findFirstByOrderByDataDateDesc();
// 五、分页查询
//
// Page<User> findALL(Pageable pageable);
// Page<User> findByUserName(String userName,Pageable pageable);
//
// 在查询的方法中需要传入参数Pageable ,
// 当查询中有多个参数的时候Pageable建议做为最后一个参数传入 。
// Pageable 是 Spring 封装的分页实现类,使用的时候需要传入页数、每页条数和排序规则。
//
// int page=1,size=10;
// Sort sort = new Sort(Direction.DESC, "id");
// Pageable pageable = new PageRequest(page, size, sort);
// userRepository.findALL(pageable);
// userRepository.findByUserName("testName", pageable);
//
//
// 六、限制查询
//
// 查询前 N 个元素
//
// User findFirstByOrderByLastnameAsc();
// User findTopByOrderByAgeDesc();
// Page<User> queryFirst10ByLastname(String lastname, Pageable pageable);
// List<User> findFirst10ByLastname(String lastname, Sort sort);
// List<User> findTop10ByLastname(String lastname, Pageable pageable);
//
// 使用Spring JPA中Page、Pageable接口和Sort类完成分页排序【专题】
//
// 首先来说一下分页和排序所用到的Page、Pageable接口和Sort类都是什么
//
// JpaRepository提供了两个和分页和排序有关的查询
//
// List findAllSort sort 返回所有实体,按照指定顺序排序返回
//
// List findAllPageable pageable 返回实体列表实体的offest和limit通过pageable来指定
//
// Sort对象用来指示排序最简单的Sort对象构造可以传入一个属性名列表不是数据库列名是属性名默认采用升序排序。例
//
// Sort sort = new Sort("id")
// //或 Sort sort = new Sort(Direction.ASC,"id");
// return userDao.findAll(sort);
// 程序将查询所有user并按照id进行生序排序。Sort还包括其他一些构造方法在这里就不一一赘述。
//
// Pageable接口用于构造翻页查询PageRequest是其实现类可以通过提供的工厂方法创建PageRequest
//
// public static PageRequest of(int page, int size)
// 也可以在PageRequest中加入排序
//
// public static PageRequest of(int page, int size, Sort sort)
// 方法中的参数page总是从0开始表示查询页size指每页的期望行数。
//
// Page接口可以获得当前页面的记录、总页数、总记录数、是否有上一页或下一页等。Spring Data翻页查询总是返回Page对象Page对象提供了以下常用的方法
//
// int getTotalPages() 总的页数
// long getTotalElements() 返回总数
// List getContent() 返回此次查询的结果集
// ————————————————
}

@ -0,0 +1,74 @@
package com.rehome.mqttclienttemperature.entity;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
//普通索引,不指定索引名,表自动创建索引名
//@Table(indexes = {@Index(columnList = "dataDate"),@Index(columnList = "locationDesc")})
//普通索引,指定索引名,创建单个索引
//在这个例子中Temperature实体类通过@Table注解的indexes属性定义了一个名为idx_dataDate的索引它覆盖了dataDate字段。这意味着在数据库层面针对dataDate字段的查询将会利用这个索引从而提高查询效率。
//@Table(indexes = {@Index(name = "idx_dataDate", columnList = "dataDate")})
//同时创建多个普通索引,注意每个索引名都不同
//@Table(indexes = {@Index(name = "idx_dataDate", columnList = "dataDate"),@Index(name = "idx_locationDesc", columnList = "locationDesc")})
//@Table(indexes = {@Index(name = "idx_dataDate", columnList = "dataDate"),@Index(name = "idx_locationDesc", columnList = "locationDesc"),@Index(name = "idx_dataHour", columnList = "dataHour"),@Index(name = "idx_dataMinute", columnList = "dataMinute")})
//创建组合索引,注意每个索引名都相同
//@Table(indexes = {@Index(name = "data_date_location_desc", columnList = "dataDate"),@Index(name = "data_date_location_desc", columnList = "locationDesc")})
//同时创建普通索引和组合索引,注意普通索引每个索引名都不同,注意组合索引每个索引名都相同
@Table(indexes = {@Index(name = "idx_dataDateEsp", columnList = "dataDate"),@Index(name = "idx_locationDescEsp", columnList = "locationDesc"),@Index(name = "idx_dataHourEsp", columnList = "dataHour"),@Index(name = "idx_dataMinuteEsp", columnList = "dataMinute"),@Index(name = "data_date_location_desc_esp", columnList = "dataDate"),@Index(name = "data_date_location_desc_esp", columnList = "locationDesc")})
public class TemperatureEsp implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
//@ApiModelProperty(value = "主键")
// @Id
// @ApiModelProperty(value = "主键")
// @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="temperature_seq")
// @SequenceGenerator(name="temperature_seq", sequenceName="temperature_seq_appserver",initialValue = 1,allocationSize = 1)
private Long id;
//@ApiModelProperty(value = "温度")
@Column(length=10)
private String temperature;
//@ApiModelProperty(value = "湿度")
@Column(length=10)
private String humidity;
//@ApiModelProperty(value = "日期")
@Column(length=20)
private String dataDate;
//@ApiModelProperty(value = "时")
@Column(length=20)
private String dataHour;
//@ApiModelProperty(value = "分")
@Column(length=20)
private String dataMinute;
//@ApiModelProperty(value = "主题")
@Column(length=60)
private String topic;
//@ApiModelProperty(value = "位置描述")
@Column(length=80)
private String locationDesc;
//@CreatedDate
//@ApiModelProperty(value = "创建时间")
@Temporal(TemporalType.TIMESTAMP)
private Date createDate;
@Column(length=10)
private String source;
}

@ -0,0 +1,44 @@
package com.rehome.mqttclienttemperature.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
public class WebServiceProvince implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "洲、国内外省份")
@Column(length = 100)
private String provinceName;
@ApiModelProperty(value = "日期")
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
private Date createDate;
@ApiModelProperty(value = "时")
@Column(length = 20)
private String dataHour;
@ApiModelProperty(value = "分")
@Column(length = 20)
private String dataMinute;
@ApiModelProperty(value = "秒")
@Column(length = 20)
private String dataSecond;
}

@ -0,0 +1,154 @@
package com.rehome.mqttclienttemperature.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.Date;
/**
* theCityName = ()()
* 58367使( getSupportCity getSupportDataSet )
* String(22)23
* String(0) String(4)
* String(5) String(11) ()
* ()
* String(12) String(16)
* String(17) String(21)
* String(22)
*/
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
//@Table(indexes = {@Index(name = "idx_cityName", columnList = "cityName"), @Index(name = "idx_cityCode", columnList = "cityCode"), @Index(name = "idx_createDate", columnList = "createDate"), @Index(name = "idx_dataHour", columnList = "dataHour"), @Index(name = "idx_dataMinute", columnList = "dataMinute"), @Index(name = "idx_dataSecond", columnList = "dataSecond"),
// @Index(name = "data_create_date_city_code", columnList = "cityCode"), @Index(name = "data_create_date_city_code", columnList = "createDate"),
// @Index(name = "data_create_date_city_name", columnList = "cityName"), @Index(name = "data_create_date_city_name", columnList = "createDate")})
public class WebServiceWeatherInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "主键")
private Long id;
@Column(length = 100)
@ApiModelProperty(value = "洲、国内外省份名称")
private String provinceName;
@Column(length = 100)
@ApiModelProperty(value = "国内外城市中文名称")
private String cityName;
@Column(length = 30)
@ApiModelProperty(value = "城市编号")
private String cityCode;
@Column(length = 30)
@ApiModelProperty(value = "城市图片名称")
private String cityPhoto;
@Column(length = 30)
@ApiModelProperty(value = "天气最后更新时间")
private String weatherLastUpdate;
@Column(length = 20)
@ApiModelProperty(value = "当天的 气温")
private String weatherNow;
@ApiModelProperty(value = "概况")
private String weatherShortDesc;
@Column(length = 30)
@ApiModelProperty(value = "风向和风力")
private String windDesc;
@Column(length = 30)
@ApiModelProperty(value = "天气趋势开始图片名称(以下称:图标一)")
private String weatherTrendStart;
@Column(length = 30)
@ApiModelProperty(value = "天气趋势结束图片名称(以下称:图标二)")
private String weatherTrendEnd;
//存放长文本
//@Lob
//@Basic(fetch = FetchType.LAZY)
@ApiModelProperty(value = "现在的天气实况")
@Column(columnDefinition = "text")
private String weatherRealStatus;
//存放长文本
//@Lob
//@Basic(fetch = FetchType.LAZY)
@ApiModelProperty(value = "天气和生活指数")
@Column(columnDefinition = "text")
private String weatherLiveIndex;
@Column(length = 20)
@ApiModelProperty(value = "第二天的 气温")
private String nextDateTemperature;
@Column(length = 30)
@ApiModelProperty(value = "第二天的 概况")
private String nextDateWeatherShortDesc;
@Column(length = 30)
@ApiModelProperty(value = "第二天的 风向和风力")
private String nextDateWindDesc;
@Column(length = 30)
@ApiModelProperty(value = "第二天的 图标一")
private String nextDateWeatherTrendStart;
@Column(length = 30)
@ApiModelProperty(value = "第二天的 图标二")
private String nextDateWeatherTrendEnd;
@Column(length = 20)
@ApiModelProperty(value = "第三天的 气温")
private String threeDayTemperature;
@Column(length = 30)
@ApiModelProperty(value = "第三天的 概况")
private String threeWeatherShortDesc;
@Column(length = 30)
@ApiModelProperty(value = "第三天的 风向和风力")
private String threeDayWindDesc;
@Column(length = 30)
@ApiModelProperty(value = "第三天的 图标一")
private String threeDayWeatherTrendStart;
@Column(length = 30)
@ApiModelProperty(value = "第三天的 图标二")
private String threeDayWeatherTrendEnd;
@ApiModelProperty(value = "被查询的城市或地区的介绍")
//存放长文本
// @Lob
// @Basic(fetch = FetchType.LAZY)
@Column(columnDefinition = "text")
private String cityIntroduce;
@ApiModelProperty(value = "日期")
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
private Date createDate;
@ApiModelProperty(value = "时")
@Column(length = 20)
private String dataHour;
@ApiModelProperty(value = "分")
@Column(length = 20)
private String dataMinute;
@ApiModelProperty(value = "秒")
@Column(length = 20)
private String dataSecond;
}

@ -5,6 +5,7 @@ package com.rehome.mqttclienttemperature.service;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.rehome.mqttclienttemperature.controller.JdbcDemoController; import com.rehome.mqttclienttemperature.controller.JdbcDemoController;
import com.rehome.mqttclienttemperature.dto.ResponseDto; import com.rehome.mqttclienttemperature.dto.ResponseDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -17,6 +18,7 @@ import javax.annotation.Resource;
* Created DateTime 2021-04-26 14:35 * Created DateTime 2021-04-26 14:35
* @description: * @description:
*/ */
@Component @Component
public class ScheduledService { public class ScheduledService {

@ -0,0 +1,12 @@
package com.rehome.mqttclienttemperature.service;
import com.rehome.mqttclienttemperature.entity.Temperature;
import com.rehome.mqttclienttemperature.entity.TemperatureEsp;
//Esp8266 DHT温湿度传感器服务
public interface TemperatureEspService {
//保存 Esp8266通过DHT传感器获取到的温湿度数据
void saveTemperature(String temperatureValue,String humidityValue);
void saveTemperature(String temperatureValue,String humidityValue,String topic);
void saveTemperature(TemperatureEsp temperatureEsp);
}

@ -20,14 +20,13 @@ import java.util.concurrent.Executors;
@Slf4j @Slf4j
@Service @Service
public class MysqlTemperatureServiceImpl implements MysqlTemperatureService { public class MysqlTemperatureServiceImpl implements MysqlTemperatureService {
public static DataSource ds = new DataSource(); public static DataSource ds = new DataSource();
static { static {
//配置数据源 //配置数据源
ds.setId("3306"); ds.setId("3306");
ds.setName("mysql"); ds.setName("mysql");
ds.setUrl("jdbc:mysql://192.168.3.9:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true"); ds.setUrl("jdbc:mysql://192.168.3.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true");
ds.setUsername("root"); ds.setUsername("root");
ds.setPassword("Skyinno251,"); ds.setPassword("Skyinno251,");
ds.setDriver("com.mysql.cj.jdbc.Driver"); ds.setDriver("com.mysql.cj.jdbc.Driver");

@ -0,0 +1,114 @@
package com.rehome.mqttclienttemperature.service.impl;
import com.rehome.mqttclienttemperature.dao.TemperatureEspRepository;
import com.rehome.mqttclienttemperature.dao.TemperatureRepository;
import com.rehome.mqttclienttemperature.entity.Temperature;
import com.rehome.mqttclienttemperature.entity.TemperatureEsp;
import com.rehome.mqttclienttemperature.service.TemperatureEspService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
@Slf4j
@Service
public class TemperatureEspServiceImpl implements TemperatureEspService {
@Resource
private TemperatureEspRepository temperatureEspRepository;
@Override
public void saveTemperature(String temperatureValue, String humidityValue) {
try {
if(temperatureValue!=null&&temperatureValue.length()>0&&humidityValue!=null&&humidityValue.length()>0){
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdfHour = new SimpleDateFormat("yyyy-MM-dd HH");
SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm");
SimpleDateFormat sdfSecond = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowDate = sdf.format(now);
String nowHour = sdfHour.format(now);
String dataMinute = sdfMinute.format(now);
String dataSecond = sdfSecond.format(now);
TemperatureEsp temperatureEsp = new TemperatureEsp();
temperatureEsp.setCreateDate(now);
temperatureEsp.setDataDate(nowDate);
temperatureEsp.setDataHour(nowHour);
temperatureEsp.setDataMinute(dataMinute);
temperatureEsp.setSource("http");
String topic = "/device/esp8266/001";
if(topic!=null){
temperatureEsp.setTopic(topic);
if(topic.equals("/device/esp8266/001")){
temperatureEsp.setLocationDesc("广东省珠海市高新区唐家湾镇南方软件园B2栋4楼珠海瑞洪智能系统工程有限公司");
}
if(topic.equals("WifiSHT/7C87CE9F5CBF/SHT20")){
temperatureEsp.setLocationDesc("广东省珠海市金湾区三灶镇百川路1号1栋1单元1508房");
}
if(topic.equals("WifiSHT/4CEBD686B6AA/SHT20")){
temperatureEsp.setLocationDesc("广西壮族自治区崇左市天等县天等镇荣华村弄在屯113号");
}
}
temperatureEsp.setHumidity(humidityValue);
temperatureEsp.setTemperature(temperatureValue);
//mysql
this.temperatureEspRepository.save(temperatureEsp);
}
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void saveTemperature(String temperatureValue, String humidityValue, String topic) {
try {
if(temperatureValue!=null&&temperatureValue.length()>0&&humidityValue!=null&&humidityValue.length()>0){
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdfHour = new SimpleDateFormat("yyyy-MM-dd HH");
SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm");
SimpleDateFormat sdfSecond = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowDate = sdf.format(now);
String nowHour = sdfHour.format(now);
String dataMinute = sdfMinute.format(now);
String dataSecond = sdfSecond.format(now);
TemperatureEsp temperatureEsp = new TemperatureEsp();
temperatureEsp.setCreateDate(now);
temperatureEsp.setDataDate(nowDate);
temperatureEsp.setDataHour(nowHour);
temperatureEsp.setDataMinute(dataMinute);
temperatureEsp.setSource("mqtt");
if(topic!=null){
temperatureEsp.setTopic(topic);
if(topic.equals("/device/esp8266/001")){
temperatureEsp.setLocationDesc("广东省珠海市高新区唐家湾镇南方软件园B2栋4楼珠海瑞洪智能系统工程有限公司");
}
if(topic.equals("WifiSHT/7C87CE9F5CBF/SHT20")){
temperatureEsp.setLocationDesc("广东省珠海市金湾区三灶镇百川路1号1栋1单元1508房");
}
if(topic.equals("WifiSHT/4CEBD686B6AA/SHT20")){
temperatureEsp.setLocationDesc("广西壮族自治区崇左市天等县天等镇荣华村弄在屯113号");
}
}
temperatureEsp.setHumidity(humidityValue);
temperatureEsp.setTemperature(temperatureValue);
//mysql
this.temperatureEspRepository.save(temperatureEsp);
}
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void saveTemperature(TemperatureEsp temperatureEsp) {
this.temperatureEspRepository.save(temperatureEsp);
}
}

@ -40,6 +40,7 @@ public class TemperatureServiceImpl implements TemperatureService {
@Override @Override
public void saveTemperature(String temperatureAndHumidityData,String topic) { public void saveTemperature(String temperatureAndHumidityData,String topic) {
try {
if(temperatureAndHumidityData!=null&&temperatureAndHumidityData.length()>0){ if(temperatureAndHumidityData!=null&&temperatureAndHumidityData.length()>0){
String[] strDataTemperature = temperatureAndHumidityData.split(" "); String[] strDataTemperature = temperatureAndHumidityData.split(" ");
Date now = new Date(); Date now = new Date();
@ -72,21 +73,26 @@ public class TemperatureServiceImpl implements TemperatureService {
temperature.setHumidity(strDataTemperature[0]); temperature.setHumidity(strDataTemperature[0]);
temperature.setTemperature(strDataTemperature[1]); temperature.setTemperature(strDataTemperature[1]);
//postgresql and mysql
this.temperatureRepository.save(temperature); this.temperatureRepository.save(temperature);
mysqlTemperatureService.saveTemperature(temperature); //mysqlTemperatureService.saveTemperature(temperature);
// ResponseDto responseDtoSPg = this.postgresSqlTemperatureService.saveTemperature(temperature);
ResponseDto responseDtoOracle = this.oracleTemperatureService.saveTemperature(temperature); // log.info(new Gson().toJson(responseDtoSPg));
log.info(new Gson().toJson(responseDtoOracle));
ResponseDto responseDtoSqlserver = this.sqlServerTemperatureService.saveTemperature(temperature); //oracle and sqlserver
log.info(new Gson().toJson(responseDtoSqlserver)); // ResponseDto responseDtoOracle = this.oracleTemperatureService.saveTemperature(temperature);
// log.info(new Gson().toJson(responseDtoOracle));
// ResponseDto responseDtoSqlserver = this.sqlServerTemperatureService.saveTemperature(temperature);
// log.info(new Gson().toJson(responseDtoSqlserver));
ResponseDto responseDtoKingBase = this.kingbaseTemperatureService.saveTemperature(temperature); //人大金仓,不开启,太占内存
log.info(new Gson().toJson(responseDtoKingBase)); // ResponseDto responseDtoKingBase = this.kingbaseTemperatureService.saveTemperature(temperature);
// log.info(new Gson().toJson(responseDtoKingBase));
// ResponseDto responseDtoSPg = this.postgresSqlTemperatureService.saveTemperature(temperature);
// log.info(new Gson().toJson(responseDtoSPg));
}
}catch (Exception e){
e.printStackTrace();
} }
} }

@ -2,10 +2,15 @@ server:
port: 8873 port: 8873
shutdown: graceful #开启优雅关闭 shutdown: graceful #开启优雅关闭
jvm-options: "-Xms128m -Xmx1024m"
# 日志配置 # 日志配置
logging: logging:
level: level:
root: INFO root: INFO
file:
path: /root/temperature
# path: /Users/edao/temperature
spring: spring:
datasource: datasource:
@ -24,7 +29,7 @@ spring:
#url: jdbc:mysql://192.168.3.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://192.168.3.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://192.168.1.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://192.168.1.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://47.242.184.139:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://47.242.184.139:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
url: jdbc:mysql://192.168.3.25:3307/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true url: jdbc:mysql://192.168.3.9:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver
username: root username: root

@ -1,13 +0,0 @@
package com.rehome.mqttclienttemperature;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class AdminClientAppmqttserverYfApplicationTests {
@Test
void contextLoads() {
}
}
Loading…
Cancel
Save