bh add mqtt

master
hwf452 10 months ago
parent c31e4b6210
commit 42902276e9

@ -1,9 +1,6 @@
package com.rehome.adminclientappmqttserver;
import com.rehome.adminclientappmqttserver.controller.UserController;
import com.rehome.adminclientappmqttserver.controller.UserDywController;
import com.rehome.adminclientappmqttserver.controller.UseryfController;
import com.rehome.adminclientappmqttserver.controller.UserzyController;
import com.rehome.adminclientappmqttserver.controller.*;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
@ -52,6 +49,11 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
*/
@Resource
private UserDywController userDywController;
/**
*/
@Resource
private UserbhController userbhController;
public static void main(String[] args) {
SpringApplication.run(AdminClientAppmqttserverApplication.class, args);
@ -112,6 +114,15 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
} else {
System.out.println("UserDywController is empty");
}
//博贺电厂 mqtt
if (userbhController != null) {
System.out.println("------------------------");
System.out.println("UserDywController is not empty");
MqttRSAClientBhAPP client_bh = new MqttRSAClientBhAPP();
client_bh.start(userbhController);
} else {
System.out.println("UserDywController is empty");
}
} catch (Exception ex) {
ex.printStackTrace();
}

@ -0,0 +1,153 @@
package com.rehome.adminclientappmqttserver;
import com.google.gson.Gson;
import com.rehome.adminclientappmqttserver.controller.UserbhController;
import com.rehome.adminclientappmqttserver.entity.Userbh;
import com.rehome.adminclientappmqttserver.utils.UUIDUtil;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import java.util.Timer;
import java.util.TimerTask;
public class MqttRSAClientBhAPP {
/**
* ip
*/
public static final String MQTT_BROKER_HOST = "tcp://47.242.184.139:1883";
/**
*
*/
public static String MQTT_CLIENT_ID = "AppServer_BH_APP_server_04";
/**
*
*/
public static final String USERNAME = "admin";
/**
*
*/
public static final String PASSWORD = "publish452131wW452131wW$";
/**
*
*/
public static final String TOPIC_FILTER = "app_push_bh";
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
//定时器
private Timer timer;
public MqttRSAClientBhAPP(){
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(true);
// 设置用户名
options.setUserName(USERNAME);
// 设置密码
options.setPassword(PASSWORD.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//断线重连
options.setAutomaticReconnect(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(UserbhController userController) {
try {
// 连接
mqttClient.connect(options);
// 订阅
mqttClient.subscribe(TOPIC_FILTER,qos);
// 设置回调
mqttClient.setCallback(new MqttCallbackExtended(){
@Override
public void connectionLost(Throwable throwable) {
System.out.println("connectionLost");
try {
mqttClient.reconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
System.out.println("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+new String(mqttMessage.getPayload()));
System.out.println("博贺电厂收到mqtt消息");
try {
String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey);
System.out.println("message content:"+messageDe);
Gson gson = new Gson();
Userbh userInfo = gson.fromJson(messageDe, Userbh.class);
System.out.println(userInfo.getUsername());
System.out.println(userInfo.getPassword());
System.out.println(userInfo.getDate());
System.out.println(userInfo.getNfc());
System.out.println(userInfo.getName());
userController.saveUserBh(userInfo);
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("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() {
System.out.println("-------设定要指定任务--------");
try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) {
System.out.println("***** 没有连接到服务器 *****");
System.out.println("***** client to connect *****");
// 重新连接
mqttClient.connect(options);
}
if (mqttClient.isConnected()) {//连接成功,跳出连接
System.out.println("***** connect success *****");
}
} catch (MqttException e1) {
e1.printStackTrace();
}
}
}, 10000,10000);
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -12,14 +12,14 @@ import javax.annotation.Resource;
/**
* <p>
*
*
* </p>
*
* @author huangwenfei
* @since 2021-08-17
*/
@RestController
@RequestMapping("/user")
@RequestMapping("/userZhdc")
public class UserController {
@Resource

@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
*
*
* @author huangwenfei
* @since 2024-11-05 10:04
*/

@ -0,0 +1,37 @@
package com.rehome.adminclientappmqttserver.controller;
import com.rehome.adminclientappmqttserver.entity.Userbh;
import com.rehome.adminclientappmqttserver.entity.Useryf;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import com.rehome.adminclientappmqttserver.service.UserbhService;
import com.rehome.adminclientappmqttserver.service.UseryfService;
import com.rehome.adminclientappmqttserver.service.UserzyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
@RestController
@RequestMapping("/userBh")
public class UserbhController {
@Resource
private UserbhService userbhService;
public void saveUserBh(Userbh user){
userbhService.saveByUsernameBh(user);
}
}

@ -13,16 +13,14 @@ import javax.annotation.Resource;
/**
* <p>
*
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
@RestController
@RequestMapping("/useryf")
@RequestMapping("/userzy")
public class UserzyController {
@Resource

@ -0,0 +1,15 @@
package com.rehome.adminclientappmqttserver.dao;
import com.rehome.adminclientappmqttserver.entity.Userbh;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* T :
* ID :OID
*
*/
public interface UserbhRepository extends JpaRepository<Userbh,String> {
//方法名称必须要遵循驼峰式命名规则findBy关键字+属性名称(首字母大写)+查询条件(首字母大写)
Userbh findByUsername(String username);
}

@ -0,0 +1,34 @@
package com.rehome.adminclientappmqttserver.entity;
import java.io.Serializable;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
/**
* @author huangwenfei
* @since 2023-08-29
*/
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
public class Userbh implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String password;
private String nfc;
@Column( length = 32)
private String date;
private String name;
}

@ -0,0 +1,16 @@
package com.rehome.adminclientappmqttserver.service;
import com.rehome.adminclientappmqttserver.entity.Userbh;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2025-02-11
*/
public interface UserbhService {
public void saveByUsernameBh(Userbh user);
}

@ -0,0 +1,30 @@
package com.rehome.adminclientappmqttserver.service.impl;
import com.rehome.adminclientappmqttserver.dao.UserbhRepository;
import com.rehome.adminclientappmqttserver.entity.Userbh;
import com.rehome.adminclientappmqttserver.service.UserbhService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2025-02-11
*/
@Service
@Transactional
public class UserbhServiceImpl implements UserbhService {
@Resource
private UserbhRepository userbhRepository;
@Override
public void saveByUsernameBh(Userbh user) {
this.userbhRepository.save(user);
}
}
Loading…
Cancel
Save