作者 钟来

流水渔plc004添加中转泵

... ... @@ -23,6 +23,7 @@ public class Main {
DeviceProductProtocol.init();
SpringApplicationBuilder builder = new SpringApplicationBuilder(Main.class);
builder.run( args);
}
}
\ No newline at end of file
... ...
... ... @@ -50,16 +50,16 @@ public class DeviceController {
@RequestMapping(value = "write/{deviceInfoId}",method = RequestMethod.POST)
public Message write(@PathVariable String deviceInfoId, @RequestBody DeviceControlMessage deviceControlMessage)
{
log.info("控制指令{}",deviceControlMessage);
log.info("控制指令{}",GsonConstructor.get().toJson(deviceControlMessage));
Map<String,Object> data = deviceControlMessage.getDataObject();
if (null == data)
{
return new Message(MessageCode.DEFAULT_FAIL_CODE,"没有参数");
}
if ( !(data.containsKey("type") && data.get("type").toString().equals("kaiguan")))
if ( data.containsKey("type") && data.get("type").toString().equals("kaiguan"))
{
return new Message(MessageCode.DEFAULT_FAIL_CODE,"只支持开关控制");
data.put("type","3");
}
DeviceInfo deviceInfo = deviceService.getDeviceInfo(deviceInfoId);
Topic topic = new Topic("2",deviceInfo.getDevice_type(),deviceControlMessage.getDeviceId(),"PUT",null);
... ... @@ -73,33 +73,48 @@ public class DeviceController {
//记录日志
for (DeviceDataConfig deviceDataConfig:list)
{
if(deviceDataConfig.getSensor_numer().equals(deviceControlMessage.getAddressBits()) && deviceDataConfig.getPlc_data_type().sensorDataType.equals("3") )
if(deviceDataConfig.getSensor_numer().equals(deviceControlMessage.getAddressBits()) && deviceDataConfig.getPlc_data_type().sensorDataType.equals(data.get("type")) )
{
//记录日志
map.put(deviceDataConfig.getAttribute_name(), data.get("value").toString().equals(deviceDataConfig.getAlarmValue())?1:0);
}
}
if(map.size()==0)
{
return new Message(MessageCode.DEFAULT_FAIL_CODE,"不支持此数据");
}
try {
MqttMessage mqttMessage = new MqttMessage();
mqttMessage.setPayload(JSON.toJSONString(map).trim().getBytes());
Message message = clienNoticeService.sendMessage(topic,mqttMessage);
if(message.getCode()==1)
{
JsonObject rmap = new JsonObject();
rmap.addProperty("3",data.get("value").toString());
rmap.addProperty(data.get("type")+"",data.get("value").toString());
rmap.addProperty("9","01");
message.setData(rmap.toString());
DeviceInfo deviceInfo1 = new DeviceInfo();
deviceInfo1.setId(deviceInfoId);
JsonObject object = new JsonObject();
if(StringUtils.isNotEmpty(deviceInfo.getDataValue()))
{
object = GsonConstructor.get().fromJson(deviceInfo.getDataValue(),JsonObject.class);
}
object.addProperty("3",data.get("value").toString());
List<DeviceDataConfig> deviceDataConfigList = DeviceProductProtocol.deviceDataConfigList;
for (DeviceDataConfig deviceDataConfig:deviceDataConfigList)
{
if(deviceDataConfig.getSensor_numer().equals(deviceControlMessage.getAddressBits()) && deviceDataConfig.getPlc_data_type().sensorDataType.equals(data.get("type")) )
{
object.addProperty(data.get("type")+"",data.get("value").toString());
}
}
deviceInfo1.setDataValue(object.toString());
deviceService.upDeviceInfo(deviceInfo1);
LogDeviceOperation logDeviceOperation = addLogDeviceOperation(topic.getClientid(),deviceControlMessage.getAddressBits(),null,"设备远程"+("01".equals(data.get("value").toString())?"开启":"关闭"),data.get("value").toString(),deviceInfo.getDataValue(),1);
List<LogDeviceOperation> list1 = new ArrayList<>();
list1.add(logDeviceOperation);
... ... @@ -117,6 +132,12 @@ public class DeviceController {
}
public static void main(String[] args) {
DeviceService deviceService = new DeviceService();
DeviceInfo deviceInfo = deviceService.getDeviceInfo("deviceInfoId");
System.out.println();
}
/**
* 添加设备操作日志记录
* @param deviceId 设备imei
... ...
... ... @@ -54,7 +54,7 @@ public class DeviceProductProtocol {
deviceDataConfigList.add(new DeviceDataConfig(18,"SYS_AUTO",null,PLCDataType.控制柜状态,"00","系统自动允许"));
deviceDataConfigList.add(new DeviceDataConfig(26,"TX_RUN",null,PLCDataType.故障代码,"00","远程通讯正常","01","00"));
deviceDataConfigList.add(new DeviceDataConfig(41,"SYS_ALARM",null,PLCDataType.故障代码,"00","设备故障报警","01","01"));
deviceDataConfigList.add(new DeviceDataConfig(73,"YC_AUTO_P002",PLCType.中转泵,PLCDataType.控制器模式,"40","远程自动按钮",null,"1"));
deviceDataConfigList.add(new DeviceDataConfig(73,"YC_AUTO_P002",PLCType.中转泵,PLCDataType.控制器模式,"40","远程自动按钮",null,"01"));
deviceDataWriteConfigList.add(new DeviceDataConfig(27,"YC_ST_C001A",PLCType.推水机,PLCDataType.控制器状态码,"01","远程启动按钮",null,"01"));
deviceDataWriteConfigList.add(new DeviceDataConfig(28,"YC_STP_C001A",PLCType.推水机,PLCDataType.控制器状态码,"01","远程停止按钮",null,"00"));
... ... @@ -84,7 +84,8 @@ public class DeviceProductProtocol {
deviceDataWriteConfigList.add(new DeviceDataConfig(69,"YC_STP_P001F",PLCType.排污,PLCDataType.控制器状态码,"26","远程停止按钮",null,"00"));
deviceDataWriteConfigList.add(new DeviceDataConfig(70,"YC_ST_P002",PLCType.中转泵,PLCDataType.控制器状态码,"40","远程启动按钮",null,"01"));
deviceDataWriteConfigList.add(new DeviceDataConfig(71,"YC_STP_P002",PLCType.中转泵,PLCDataType.控制器状态码,"40","远程停止按钮",null,"00"));
deviceDataWriteConfigList.add(new DeviceDataConfig(72,"YC_AUTO_P002",PLCType.中转泵,PLCDataType.控制器模式,"40","远程自动按钮",null,"1"));
deviceDataWriteConfigList.add(new DeviceDataConfig(72,"YC_AUTO_P002",PLCType.中转泵,PLCDataType.控制器模式,"40","远程自动按钮",null,"01"));
deviceDataWriteConfigList.add(new DeviceDataConfig(74,"SYS_REST",PLCType.推水机,PLCDataType.复位,"01","设备故障复位",null,"1"));
}
}
... ...
... ... @@ -14,6 +14,7 @@ public enum PLCDataType {
氨氮("7"),
PH("8"),
液位高低("100"),
复位("101"),
控制柜状态("9");
public String sensorDataType;
... ...