|
@@ -189,116 +189,117 @@ public class ModbusTask {
|
|
|
//默认使用 3X(Input Register)
|
|
|
log.info("调用读取InputRegisters模拟量数据");
|
|
|
// 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
|
|
|
- Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress())-1, 1, modbusSalveId);
|
|
|
+ if (Integer.valueOf(data.getSoftwareRegisterAddress())<60){
|
|
|
+ Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress())-1, 4, modbusSalveId);
|
|
|
// Number number = 321;
|
|
|
- //获取点名 例如 1F_CO2
|
|
|
- String callTheRoll = data.getCallTheRoll();
|
|
|
- log.info("{}寄存器地址:{}",callTheRoll,data.getSoftwareRegisterAddress());
|
|
|
- // 获取楼层id
|
|
|
- F.set(StringUtils.substringBefore(callTheRoll, "F"));
|
|
|
- // 获取检测的数据名称
|
|
|
- String dataName = StringUtils.substringAfterLast(callTheRoll, "_");
|
|
|
- switch (dataName){
|
|
|
- case "CHO":
|
|
|
- DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigCho = dmEnvHistoryWarnConfigService.selectWarnDataByName("CHO");
|
|
|
- dmEnvHistoryModbusData.setCho(number.toString());
|
|
|
- if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigCho) && Integer.valueOf(dmEnvHistoryModbusData.getCho())>=Integer.valueOf(dmEnvHistoryWarnConfigCho.getWarnValue())){
|
|
|
- DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
- dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
- dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
- dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
- dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigCho.getWarnValue());
|
|
|
- dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getCho());
|
|
|
- dmEnvHistoryWarn.setWarnContent("甲醛过高");
|
|
|
- dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
- }
|
|
|
- break;
|
|
|
- case "CO2":
|
|
|
- DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigCo2 = dmEnvHistoryWarnConfigService.selectWarnDataByName("CO2");
|
|
|
- dmEnvHistoryModbusData.setCo2(number.toString());
|
|
|
- if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigCo2) && Integer.valueOf(dmEnvHistoryModbusData.getCo2())>=Integer.valueOf(dmEnvHistoryWarnConfigCo2.getWarnValue())){
|
|
|
- DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
- dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
- dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
- dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
- dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigCo2.getWarnValue());
|
|
|
- dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getCo2());
|
|
|
- dmEnvHistoryWarn.setWarnContent("二氧化碳过高");
|
|
|
- dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
- }
|
|
|
- break;
|
|
|
- case "H":
|
|
|
- DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigH = dmEnvHistoryWarnConfigService.selectWarnDataByName("H");
|
|
|
- dmEnvHistoryModbusData.setH(number.toString());
|
|
|
- if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigH) && Integer.valueOf(dmEnvHistoryModbusData.getH())>=Integer.valueOf(dmEnvHistoryWarnConfigH.getWarnValue())){
|
|
|
- DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
- dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
- dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
- dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
- dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigH.getWarnValue());
|
|
|
- dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getH());
|
|
|
- dmEnvHistoryWarn.setWarnContent("湿度过高");
|
|
|
- dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
- }
|
|
|
- break;
|
|
|
- case "PM10":
|
|
|
- DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigPm10 = dmEnvHistoryWarnConfigService.selectWarnDataByName("PM10");
|
|
|
- dmEnvHistoryModbusData.setPm10(number.toString());
|
|
|
- if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigPm10) && Integer.valueOf(dmEnvHistoryModbusData.getPm10())>=Integer.valueOf(dmEnvHistoryWarnConfigPm10.getWarnValue())){
|
|
|
- DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
- dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
- dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
- dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
- dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigPm10.getWarnValue());
|
|
|
- dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getPm10());
|
|
|
- dmEnvHistoryWarn.setWarnContent("pm10过高");
|
|
|
- dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
- }
|
|
|
- break;
|
|
|
- case "PM25":
|
|
|
- DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigPm25 = dmEnvHistoryWarnConfigService.selectWarnDataByName("PM25");
|
|
|
- dmEnvHistoryModbusData.setPm25(number.toString());
|
|
|
- if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigPm25) && Integer.valueOf(dmEnvHistoryModbusData.getPm25())>=Integer.valueOf(dmEnvHistoryWarnConfigPm25.getWarnValue())){
|
|
|
- DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
- dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
- dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
- dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
- dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigPm25.getWarnValue());
|
|
|
- dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getPm25());
|
|
|
- dmEnvHistoryWarn.setWarnContent("pm2.5过高");
|
|
|
- dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
- }
|
|
|
- break;
|
|
|
- case "T":
|
|
|
- DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigT = dmEnvHistoryWarnConfigService.selectWarnDataByName("T");
|
|
|
- dmEnvHistoryModbusData.setT(number.toString());
|
|
|
- if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigT) && Integer.valueOf(dmEnvHistoryModbusData.getT())>=Integer.valueOf(dmEnvHistoryWarnConfigT.getWarnValue())){
|
|
|
- DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
- dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
- dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
- dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
- dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigT.getWarnValue());
|
|
|
- dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getT());
|
|
|
- dmEnvHistoryWarn.setWarnContent("温度过高");
|
|
|
- dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
- }
|
|
|
- break;
|
|
|
- case "VOC":
|
|
|
- DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigVoc = dmEnvHistoryWarnConfigService.selectWarnDataByName("VOC");
|
|
|
- dmEnvHistoryModbusData.setVoc(number.toString());
|
|
|
- if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigVoc) && Integer.valueOf(dmEnvHistoryModbusData.getVoc())>=Integer.valueOf(dmEnvHistoryWarnConfigVoc.getWarnValue())){
|
|
|
- DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
- dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
- dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
- dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
- dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigVoc.getWarnValue());
|
|
|
- dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getVoc());
|
|
|
- dmEnvHistoryWarn.setWarnContent("VOC过高");
|
|
|
- dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
+ //获取点名 例如 1F_CO2
|
|
|
+ String callTheRoll = data.getCallTheRoll();
|
|
|
+ log.info("{}寄存器地址:{}",callTheRoll,data.getSoftwareRegisterAddress());
|
|
|
+ // 获取楼层id
|
|
|
+ F.set(StringUtils.substringBefore(callTheRoll, "F"));
|
|
|
+ // 获取检测的数据名称
|
|
|
+ String dataName = StringUtils.substringAfterLast(callTheRoll, "_");
|
|
|
+ switch (dataName){
|
|
|
+ case "CHO":
|
|
|
+ DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigCho = dmEnvHistoryWarnConfigService.selectWarnDataByName("CHO");
|
|
|
+ dmEnvHistoryModbusData.setCho(number.toString());
|
|
|
+ if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigCho) && Integer.valueOf(dmEnvHistoryModbusData.getCho())>=Integer.valueOf(dmEnvHistoryWarnConfigCho.getWarnValue())){
|
|
|
+ DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
+ dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
+ dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
+ dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigCho.getWarnValue());
|
|
|
+ dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getCho());
|
|
|
+ dmEnvHistoryWarn.setWarnContent("甲醛过高");
|
|
|
+ dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "CO2":
|
|
|
+ DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigCo2 = dmEnvHistoryWarnConfigService.selectWarnDataByName("CO2");
|
|
|
+ dmEnvHistoryModbusData.setCo2(number.toString());
|
|
|
+ if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigCo2) && Integer.valueOf(dmEnvHistoryModbusData.getCo2())>=Integer.valueOf(dmEnvHistoryWarnConfigCo2.getWarnValue())){
|
|
|
+ DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
+ dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
+ dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
+ dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigCo2.getWarnValue());
|
|
|
+ dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getCo2());
|
|
|
+ dmEnvHistoryWarn.setWarnContent("二氧化碳过高");
|
|
|
+ dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "H":
|
|
|
+ DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigH = dmEnvHistoryWarnConfigService.selectWarnDataByName("H");
|
|
|
+ dmEnvHistoryModbusData.setH(number.toString());
|
|
|
+ if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigH) && Integer.valueOf(dmEnvHistoryModbusData.getH())>=Integer.valueOf(dmEnvHistoryWarnConfigH.getWarnValue())){
|
|
|
+ DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
+ dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
+ dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
+ dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigH.getWarnValue());
|
|
|
+ dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getH());
|
|
|
+ dmEnvHistoryWarn.setWarnContent("湿度过高");
|
|
|
+ dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "PM10":
|
|
|
+ DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigPm10 = dmEnvHistoryWarnConfigService.selectWarnDataByName("PM10");
|
|
|
+ dmEnvHistoryModbusData.setPm10(number.toString());
|
|
|
+ if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigPm10) && Integer.valueOf(dmEnvHistoryModbusData.getPm10())>=Integer.valueOf(dmEnvHistoryWarnConfigPm10.getWarnValue())){
|
|
|
+ DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
+ dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
+ dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
+ dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigPm10.getWarnValue());
|
|
|
+ dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getPm10());
|
|
|
+ dmEnvHistoryWarn.setWarnContent("pm10过高");
|
|
|
+ dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "PM25":
|
|
|
+ DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigPm25 = dmEnvHistoryWarnConfigService.selectWarnDataByName("PM25");
|
|
|
+ dmEnvHistoryModbusData.setPm25(number.toString());
|
|
|
+ if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigPm25) && Integer.valueOf(dmEnvHistoryModbusData.getPm25())>=Integer.valueOf(dmEnvHistoryWarnConfigPm25.getWarnValue())){
|
|
|
+ DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
+ dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
+ dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
+ dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigPm25.getWarnValue());
|
|
|
+ dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getPm25());
|
|
|
+ dmEnvHistoryWarn.setWarnContent("pm2.5过高");
|
|
|
+ dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "T":
|
|
|
+ DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigT = dmEnvHistoryWarnConfigService.selectWarnDataByName("T");
|
|
|
+ dmEnvHistoryModbusData.setT(number.toString());
|
|
|
+ if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigT) && Integer.valueOf(dmEnvHistoryModbusData.getT())>=Integer.valueOf(dmEnvHistoryWarnConfigT.getWarnValue())){
|
|
|
+ DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
+ dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
+ dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
+ dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigT.getWarnValue());
|
|
|
+ dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getT());
|
|
|
+ dmEnvHistoryWarn.setWarnContent("温度过高");
|
|
|
+ dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "VOC":
|
|
|
+ DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigVoc = dmEnvHistoryWarnConfigService.selectWarnDataByName("VOC");
|
|
|
+ dmEnvHistoryModbusData.setVoc(number.toString());
|
|
|
+ if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigVoc) && Integer.valueOf(dmEnvHistoryModbusData.getVoc())>=Integer.valueOf(dmEnvHistoryWarnConfigVoc.getWarnValue())){
|
|
|
+ DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
|
|
|
+ dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
|
|
|
+ dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
|
|
|
+ dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigVoc.getWarnValue());
|
|
|
+ dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getVoc());
|
|
|
+ dmEnvHistoryWarn.setWarnContent("VOC过高");
|
|
|
+ dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
}catch (Exception e) {
|
|
@@ -407,7 +408,7 @@ public class ModbusTask {
|
|
|
//默认使用 3X(Input Register)
|
|
|
// log.info("调用读取InputRegisters模拟量数据");
|
|
|
// 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
|
|
|
- if (Integer.valueOf(data.getSoftwareRegisterAddress())>59){
|
|
|
+ if (Integer.valueOf(data.getSoftwareRegisterAddress())<60){
|
|
|
Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress())-1, 1, modbusSalveId);
|
|
|
//获取点名 例如 1F_CO2
|
|
|
String callTheRoll = data.getCallTheRoll();
|