esp8266和dht11温湿度传感器 数据采集http入库

master
修改密码漏洞修复完成 4 months ago
parent 9531b6ede2
commit 62b870fbd5

@ -108,7 +108,7 @@ public class MqttRSAClient {
log.info("topic:"+s);
log.info("Qos:"+mqttMessage.getQos());
log.info("message RSA:"+strData);
temperatureService.saveTemperature(strData,s);
//temperatureService.saveTemperature(strData,s);
}
@Override

@ -59,15 +59,4 @@ public class TemperatureController {
private List<Temperature> queryFirst10ByDataDateAndLocationDesc(@RequestBody @Validated RequestTemperatureDto dto) {
return temperatureService.queryFirst10ByDataDateAndLocationDesc(dto.getDataDate(),dto.getLocationDesc());
}
/**
* APP
*/
@GetMapping("/save")
private String save(@Param("temperature")String temperature, @Param("humidity")String humidity) {
System.out.println(temperature);
System.out.println(humidity);
return "success";
}
}

@ -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() 返回此次查询的结果集
// ————————————————
}

@ -1,15 +1,14 @@
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
@ -25,49 +24,51 @@ import java.util.Date;
//创建组合索引,注意每个索引名都相同
//@Table(indexes = {@Index(name = "data_date_location_desc", columnList = "dataDate"),@Index(name = "data_date_location_desc", 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"),@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)
//@GeneratedValue(strategy = GenerationType.SEQUENCE)
@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 = "温度")
//@ApiModelProperty(value = "温度")
@Column(length=10)
private String temperature;
@ApiModelProperty(value = "湿度")
//@ApiModelProperty(value = "湿度")
@Column(length=10)
private String humidity;
@ApiModelProperty(value = "日期")
//@ApiModelProperty(value = "日期")
@Column(length=20)
private String dataDate;
@ApiModelProperty(value = "时")
//@ApiModelProperty(value = "时")
@Column(length=20)
private String dataHour;
@ApiModelProperty(value = "分")
//@ApiModelProperty(value = "分")
@Column(length=20)
private String dataMinute;
@ApiModelProperty(value = "主题")
//@ApiModelProperty(value = "主题")
@Column(length=60)
private String topic;
@ApiModelProperty(value = "位置描述")
//@ApiModelProperty(value = "位置描述")
@Column(length=80)
private String locationDesc;
//@CreatedDate
@ApiModelProperty(value = "创建时间")
//@ApiModelProperty(value = "创建时间")
@Temporal(TemporalType.TIMESTAMP)
private Date createDate;
@Column(length=10)
private String source;
}

@ -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);
}

@ -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 = "BF9D7939ND2N";
if(topic!=null){
temperatureEsp.setTopic(topic);
if(topic.equals("BF9D7939ND2N")){
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/BF9D7939ND2NBM8WVDK0SO5D/r")){
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);
}
}
Loading…
Cancel
Save