作者 钟来

流水渔plc004添加中转泵

@@ -23,6 +23,7 @@ public class Main { @@ -23,6 +23,7 @@ public class Main {
23 DeviceProductProtocol.init(); 23 DeviceProductProtocol.init();
24 SpringApplicationBuilder builder = new SpringApplicationBuilder(Main.class); 24 SpringApplicationBuilder builder = new SpringApplicationBuilder(Main.class);
25 builder.run( args); 25 builder.run( args);
  26 +
26 } 27 }
27 28
28 } 29 }
@@ -50,16 +50,16 @@ public class DeviceController { @@ -50,16 +50,16 @@ public class DeviceController {
50 @RequestMapping(value = "write/{deviceInfoId}",method = RequestMethod.POST) 50 @RequestMapping(value = "write/{deviceInfoId}",method = RequestMethod.POST)
51 public Message write(@PathVariable String deviceInfoId, @RequestBody DeviceControlMessage deviceControlMessage) 51 public Message write(@PathVariable String deviceInfoId, @RequestBody DeviceControlMessage deviceControlMessage)
52 { 52 {
53 - log.info("控制指令{}",deviceControlMessage); 53 + log.info("控制指令{}",GsonConstructor.get().toJson(deviceControlMessage));
54 54
55 Map<String,Object> data = deviceControlMessage.getDataObject(); 55 Map<String,Object> data = deviceControlMessage.getDataObject();
56 if (null == data) 56 if (null == data)
57 { 57 {
58 return new Message(MessageCode.DEFAULT_FAIL_CODE,"没有参数"); 58 return new Message(MessageCode.DEFAULT_FAIL_CODE,"没有参数");
59 } 59 }
60 - if ( !(data.containsKey("type") && data.get("type").toString().equals("kaiguan"))) 60 + if ( data.containsKey("type") && data.get("type").toString().equals("kaiguan"))
61 { 61 {
62 - return new Message(MessageCode.DEFAULT_FAIL_CODE,"只支持开关控制"); 62 + data.put("type","3");
63 } 63 }
64 DeviceInfo deviceInfo = deviceService.getDeviceInfo(deviceInfoId); 64 DeviceInfo deviceInfo = deviceService.getDeviceInfo(deviceInfoId);
65 Topic topic = new Topic("2",deviceInfo.getDevice_type(),deviceControlMessage.getDeviceId(),"PUT",null); 65 Topic topic = new Topic("2",deviceInfo.getDevice_type(),deviceControlMessage.getDeviceId(),"PUT",null);
@@ -71,35 +71,50 @@ public class DeviceController { @@ -71,35 +71,50 @@ public class DeviceController {
71 } 71 }
72 Map<String,Object> map = new HashMap<>(); 72 Map<String,Object> map = new HashMap<>();
73 //记录日志 73 //记录日志
74 - for (DeviceDataConfig deviceDataConfig:list) 74 + for (DeviceDataConfig deviceDataConfig:list)
75 { 75 {
76 - if(deviceDataConfig.getSensor_numer().equals(deviceControlMessage.getAddressBits()) && deviceDataConfig.getPlc_data_type().sensorDataType.equals("3") ) 76 + if(deviceDataConfig.getSensor_numer().equals(deviceControlMessage.getAddressBits()) && deviceDataConfig.getPlc_data_type().sensorDataType.equals(data.get("type")) )
77 { 77 {
78 //记录日志 78 //记录日志
79 map.put(deviceDataConfig.getAttribute_name(), data.get("value").toString().equals(deviceDataConfig.getAlarmValue())?1:0); 79 map.put(deviceDataConfig.getAttribute_name(), data.get("value").toString().equals(deviceDataConfig.getAlarmValue())?1:0);
80 } 80 }
81 } 81 }
  82 + if(map.size()==0)
  83 + {
  84 + return new Message(MessageCode.DEFAULT_FAIL_CODE,"不支持此数据");
  85 + }
82 try { 86 try {
83 MqttMessage mqttMessage = new MqttMessage(); 87 MqttMessage mqttMessage = new MqttMessage();
84 mqttMessage.setPayload(JSON.toJSONString(map).trim().getBytes()); 88 mqttMessage.setPayload(JSON.toJSONString(map).trim().getBytes());
85 Message message = clienNoticeService.sendMessage(topic,mqttMessage); 89 Message message = clienNoticeService.sendMessage(topic,mqttMessage);
86 if(message.getCode()==1) 90 if(message.getCode()==1)
87 { 91 {
  92 +
88 JsonObject rmap = new JsonObject(); 93 JsonObject rmap = new JsonObject();
89 - rmap.addProperty("3",data.get("value").toString()); 94 + rmap.addProperty(data.get("type")+"",data.get("value").toString());
90 rmap.addProperty("9","01"); 95 rmap.addProperty("9","01");
91 message.setData(rmap.toString()); 96 message.setData(rmap.toString());
  97 +
92 DeviceInfo deviceInfo1 = new DeviceInfo(); 98 DeviceInfo deviceInfo1 = new DeviceInfo();
93 deviceInfo1.setId(deviceInfoId); 99 deviceInfo1.setId(deviceInfoId);
94 -  
95 JsonObject object = new JsonObject(); 100 JsonObject object = new JsonObject();
96 if(StringUtils.isNotEmpty(deviceInfo.getDataValue())) 101 if(StringUtils.isNotEmpty(deviceInfo.getDataValue()))
97 { 102 {
98 object = GsonConstructor.get().fromJson(deviceInfo.getDataValue(),JsonObject.class); 103 object = GsonConstructor.get().fromJson(deviceInfo.getDataValue(),JsonObject.class);
99 } 104 }
100 - object.addProperty("3",data.get("value").toString()); 105 +
  106 + List<DeviceDataConfig> deviceDataConfigList = DeviceProductProtocol.deviceDataConfigList;
  107 + for (DeviceDataConfig deviceDataConfig:deviceDataConfigList)
  108 + {
  109 + if(deviceDataConfig.getSensor_numer().equals(deviceControlMessage.getAddressBits()) && deviceDataConfig.getPlc_data_type().sensorDataType.equals(data.get("type")) )
  110 + {
  111 + object.addProperty(data.get("type")+"",data.get("value").toString());
  112 + }
  113 + }
101 deviceInfo1.setDataValue(object.toString()); 114 deviceInfo1.setDataValue(object.toString());
102 deviceService.upDeviceInfo(deviceInfo1); 115 deviceService.upDeviceInfo(deviceInfo1);
  116 +
  117 +
103 LogDeviceOperation logDeviceOperation = addLogDeviceOperation(topic.getClientid(),deviceControlMessage.getAddressBits(),null,"设备远程"+("01".equals(data.get("value").toString())?"开启":"关闭"),data.get("value").toString(),deviceInfo.getDataValue(),1); 118 LogDeviceOperation logDeviceOperation = addLogDeviceOperation(topic.getClientid(),deviceControlMessage.getAddressBits(),null,"设备远程"+("01".equals(data.get("value").toString())?"开启":"关闭"),data.get("value").toString(),deviceInfo.getDataValue(),1);
104 List<LogDeviceOperation> list1 = new ArrayList<>(); 119 List<LogDeviceOperation> list1 = new ArrayList<>();
105 list1.add(logDeviceOperation); 120 list1.add(logDeviceOperation);
@@ -117,6 +132,12 @@ public class DeviceController { @@ -117,6 +132,12 @@ public class DeviceController {
117 132
118 } 133 }
119 134
  135 + public static void main(String[] args) {
  136 + DeviceService deviceService = new DeviceService();
  137 + DeviceInfo deviceInfo = deviceService.getDeviceInfo("deviceInfoId");
  138 + System.out.println();
  139 + }
  140 +
120 /** 141 /**
121 * 添加设备操作日志记录 142 * 添加设备操作日志记录
122 * @param deviceId 设备imei 143 * @param deviceId 设备imei
@@ -54,7 +54,7 @@ public class DeviceProductProtocol { @@ -54,7 +54,7 @@ public class DeviceProductProtocol {
54 deviceDataConfigList.add(new DeviceDataConfig(18,"SYS_AUTO",null,PLCDataType.控制柜状态,"00","系统自动允许")); 54 deviceDataConfigList.add(new DeviceDataConfig(18,"SYS_AUTO",null,PLCDataType.控制柜状态,"00","系统自动允许"));
55 deviceDataConfigList.add(new DeviceDataConfig(26,"TX_RUN",null,PLCDataType.故障代码,"00","远程通讯正常","01","00")); 55 deviceDataConfigList.add(new DeviceDataConfig(26,"TX_RUN",null,PLCDataType.故障代码,"00","远程通讯正常","01","00"));
56 deviceDataConfigList.add(new DeviceDataConfig(41,"SYS_ALARM",null,PLCDataType.故障代码,"00","设备故障报警","01","01")); 56 deviceDataConfigList.add(new DeviceDataConfig(41,"SYS_ALARM",null,PLCDataType.故障代码,"00","设备故障报警","01","01"));
57 - deviceDataConfigList.add(new DeviceDataConfig(73,"YC_AUTO_P002",PLCType.中转泵,PLCDataType.控制器模式,"40","远程自动按钮",null,"1")); 57 + deviceDataConfigList.add(new DeviceDataConfig(73,"YC_AUTO_P002",PLCType.中转泵,PLCDataType.控制器模式,"40","远程自动按钮",null,"01"));
58 58
59 deviceDataWriteConfigList.add(new DeviceDataConfig(27,"YC_ST_C001A",PLCType.推水机,PLCDataType.控制器状态码,"01","远程启动按钮",null,"01")); 59 deviceDataWriteConfigList.add(new DeviceDataConfig(27,"YC_ST_C001A",PLCType.推水机,PLCDataType.控制器状态码,"01","远程启动按钮",null,"01"));
60 deviceDataWriteConfigList.add(new DeviceDataConfig(28,"YC_STP_C001A",PLCType.推水机,PLCDataType.控制器状态码,"01","远程停止按钮",null,"00")); 60 deviceDataWriteConfigList.add(new DeviceDataConfig(28,"YC_STP_C001A",PLCType.推水机,PLCDataType.控制器状态码,"01","远程停止按钮",null,"00"));
@@ -84,7 +84,8 @@ public class DeviceProductProtocol { @@ -84,7 +84,8 @@ public class DeviceProductProtocol {
84 deviceDataWriteConfigList.add(new DeviceDataConfig(69,"YC_STP_P001F",PLCType.排污,PLCDataType.控制器状态码,"26","远程停止按钮",null,"00")); 84 deviceDataWriteConfigList.add(new DeviceDataConfig(69,"YC_STP_P001F",PLCType.排污,PLCDataType.控制器状态码,"26","远程停止按钮",null,"00"));
85 deviceDataWriteConfigList.add(new DeviceDataConfig(70,"YC_ST_P002",PLCType.中转泵,PLCDataType.控制器状态码,"40","远程启动按钮",null,"01")); 85 deviceDataWriteConfigList.add(new DeviceDataConfig(70,"YC_ST_P002",PLCType.中转泵,PLCDataType.控制器状态码,"40","远程启动按钮",null,"01"));
86 deviceDataWriteConfigList.add(new DeviceDataConfig(71,"YC_STP_P002",PLCType.中转泵,PLCDataType.控制器状态码,"40","远程停止按钮",null,"00")); 86 deviceDataWriteConfigList.add(new DeviceDataConfig(71,"YC_STP_P002",PLCType.中转泵,PLCDataType.控制器状态码,"40","远程停止按钮",null,"00"));
87 - deviceDataWriteConfigList.add(new DeviceDataConfig(72,"YC_AUTO_P002",PLCType.中转泵,PLCDataType.控制器模式,"40","远程自动按钮",null,"1")); 87 + deviceDataWriteConfigList.add(new DeviceDataConfig(72,"YC_AUTO_P002",PLCType.中转泵,PLCDataType.控制器模式,"40","远程自动按钮",null,"01"));
  88 + deviceDataWriteConfigList.add(new DeviceDataConfig(74,"SYS_REST",PLCType.推水机,PLCDataType.复位,"01","设备故障复位",null,"1"));
88 89
89 } 90 }
90 } 91 }
@@ -14,6 +14,7 @@ public enum PLCDataType { @@ -14,6 +14,7 @@ public enum PLCDataType {
14 氨氮("7"), 14 氨氮("7"),
15 PH("8"), 15 PH("8"),
16 液位高低("100"), 16 液位高低("100"),
  17 + 复位("101"),
17 控制柜状态("9"); 18 控制柜状态("9");
18 public String sensorDataType; 19 public String sensorDataType;
19 20