Browse Source

fix:除湿改为后台控制达到目标湿度自动停止

master
白凤吉 3 weeks ago
parent
commit
35ec248566
  1. 10
      src/main/java/com/qyft/ms/app/controller/TestController.java
  2. 5
      src/main/java/com/qyft/ms/app/device/spray/SensorCollector.java
  3. 19
      src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java
  4. 12
      src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java
  5. 6
      src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStop.java
  6. 13
      src/main/java/com/qyft/ms/app/service/VirtualDeviceService.java

10
src/main/java/com/qyft/ms/app/controller/TestController.java

@ -4,6 +4,7 @@ import cn.hutool.json.JSONObject;
import com.qyft.ms.app.device.status.DeviceStatus;
import com.qyft.ms.app.model.bo.Point3D;
import com.qyft.ms.app.model.vo.SelfTestVO;
import com.qyft.ms.app.service.VirtualDeviceService;
import com.qyft.ms.system.common.device.command.CommandFuture;
import com.qyft.ms.system.common.device.command.DeviceCommandGenerator;
import com.qyft.ms.system.common.result.Result;
@ -32,6 +33,7 @@ import java.util.concurrent.TimeUnit;
public class TestController {
private final DeviceStatus deviceStatus;
private final DeviceCommandService deviceCommandService;
private final VirtualDeviceService virtualDeviceService;
@Operation(summary = "启动虚拟模式")
@PostMapping("/virtual")
@ -63,6 +65,14 @@ public class TestController {
return Result.success(point3D);
}
@Operation(summary = "设置模拟环境湿度")
@PostMapping("/set-humidity")
public Result<?> setHumidity(double humidity) {
virtualDeviceService.setHumidity(humidity);
return Result.success();
}
protected void commandWait(CommandFuture... futures) throws Exception {
CompletableFuture<?>[] responseFutures = Arrays.stream(futures)
.map(CommandFuture::getResponseFuture)

5
src/main/java/com/qyft/ms/app/device/spray/SensorCollector.java

@ -2,6 +2,7 @@ package com.qyft.ms.app.device.spray;
import cn.hutool.json.JSONObject;
import com.qyft.ms.app.common.constant.WebSocketMessageType;
import com.qyft.ms.app.device.status.DeviceStatus;
import com.qyft.ms.system.common.device.command.CommandFuture;
import com.qyft.ms.system.common.device.command.DeviceCommandGenerator;
import com.qyft.ms.system.model.bo.DeviceCommand;
@ -23,6 +24,7 @@ import java.util.concurrent.*;
public class SensorCollector {
private final WebSocketService webSocketService;
private final DeviceCommandService deviceCommandService;
private final DeviceStatus deviceStatus;
@PostConstruct
public void init() {
@ -42,6 +44,9 @@ public class SensorCollector {
Double deviceHumidity = humidityGetCmdFutureResult.getJSONObject("data").getDouble("humidity");
Double slideTemperature = getSlidePlatHeatFutureResult.getJSONObject("data").getDouble("temperature");
Double nozzleTemperature = getNozzleHeatCmdFutureResult.getJSONObject("data").getDouble("temperature");
deviceStatus.setDeviceHumidity(deviceHumidity);
deviceStatus.setSlideTemperature(slideTemperature);
deviceStatus.setNozzleTemperature(nozzleTemperature);
Map<String, Object> map = new HashMap<>();
map.put("humidity", deviceHumidity);
map.put("slideTemperature", slideTemperature);

19
src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java

@ -1,7 +1,6 @@
package com.qyft.ms.app.device.status;
import cn.hutool.json.JSONObject;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.stereotype.Component;
@ -67,6 +66,21 @@ public class DeviceStatus {
*/
private boolean slidePlatHeating = false;
/**
* 当前湿度
*/
private volatile Double deviceHumidity = 0.0;
/**
* 当前载玻台湿度
*/
private volatile Double slideTemperature = 0.0;
/**
* 当前喷嘴湿度
*/
private volatile Double nozzleTemperature = 0.0;
public JSONObject toJSON() {
JSONObject json = new JSONObject();
json.putOnce("spraying", spraying);
@ -80,6 +94,9 @@ public class DeviceStatus {
json.putOnce("virtual", virtual);
json.putOnce("nozzleHeating", nozzleHeating);
json.putOnce("slidePlatHeating", slidePlatHeating);
json.putOnce("deviceHumidity", deviceHumidity);
json.putOnce("slideTemperature", slideTemperature);
json.putOnce("nozzleTemperature", nozzleTemperature);
return json;
}

12
src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java

@ -63,6 +63,18 @@ public class DehumidifierStart extends BaseCommandHandler {
commandWait(dehumidifierValveOpenCmdFuture);
deviceStatus.setDehumidifierRunning(true);
while (deviceStatus.isDehumidifierRunning()) {
if(deviceStatus.getDeviceHumidity() < humidity) {
DeviceCommand dehumidifierStopCommand = DeviceCommandGenerator.dehumidifierValveClose(); // 生成关闭除湿阀指令
CommandFuture dehumidifierStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), dehumidifierStopCommand);
commandWait(dehumidifierStopCommandFuture);
deviceStatus.setDehumidifierRunning(false);
break;
}else{
Thread.sleep(1000);
}
}
});
}
}

6
src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStop.java

@ -29,9 +29,9 @@ public class DehumidifierStop extends BaseCommandHandler {
@Override
public CompletableFuture<Void> handle(FrontCmdControlForm form) {
return runAsync(() -> {
DeviceCommand dehumidifierStopCommand = DeviceCommandGenerator.dehumidifierValveClose(); // 生成关闭除湿阀指令
CommandFuture dehumidifierStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), dehumidifierStopCommand);
commandWait(dehumidifierStopCommandFuture);
// DeviceCommand dehumidifierStopCommand = DeviceCommandGenerator.dehumidifierValveClose(); // 生成关闭除湿阀指令
// CommandFuture dehumidifierStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), dehumidifierStopCommand);
// commandWait(dehumidifierStopCommandFuture);
deviceStatus.setDehumidifierRunning(false);
});

13
src/main/java/com/qyft/ms/app/service/VirtualDeviceService.java

@ -4,6 +4,7 @@ import cn.hutool.json.JSONObject;
import com.qyft.ms.system.model.bo.DeviceCommand;
import com.qyft.ms.system.service.device.DeviceCommandService;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.springframework.stereotype.Service;
/**
@ -13,6 +14,12 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public class VirtualDeviceService {
private final DeviceCommandService deviceCommandService;
@Setter
private volatile double humidity = 26;
@Setter
private volatile double slideTemperature = 27;
@Setter
private volatile double nozzleTemperature = 28;
public void completeCommandResponse(DeviceCommand cmdToDevice) {
@ -33,7 +40,7 @@ public class VirtualDeviceService {
if (device.contains("humidity")) {
if (action.contains("get")) {//获取温度
JSONObject data = new JSONObject();
data.putOnce("humidity", 26);
data.putOnce("humidity", humidity);
jsonObject.putOnce("data", data);
}
}else if (device.contains("device")) {
@ -47,13 +54,13 @@ public class VirtualDeviceService {
}else if (device.contains("slide_temperature")) {
if (action.contains("get")) {//获取设备整体状态
JSONObject data = new JSONObject();
data.putOnce("temperature", 50);
data.putOnce("temperature", slideTemperature);
jsonObject.putOnce("data", data);
}
}else if (device.contains("nozzle_temperature")) {
if (action.contains("get")) {//获取设备整体状态
JSONObject data = new JSONObject();
data.putOnce("temperature", 60);
data.putOnce("temperature", nozzleTemperature);
jsonObject.putOnce("data", data);
}
}else if (device.contains("xyz")) {

Loading…
Cancel
Save