| | |
| | | import com.ld.igds.constant.BizType; |
| | | import com.ld.igds.constant.Constant; |
| | | import com.ld.igds.constant.DeviceStatus; |
| | | import com.ld.igds.constant.DeviceType; |
| | | import com.ld.igds.io.RemoteControlService; |
| | | import com.ld.igds.io.constant.OrderRespEnum; |
| | | import com.ld.igds.io.constant.ProtocolEnum; |
| | |
| | | for (Device device : list) { |
| | | deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), device.getPassCode() + ""); |
| | | |
| | | //空调设备单独查询 |
| | | if(DeviceType.TYPE_05.getCode().equals(device.getType())){ |
| | | deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), device.getPassCode() + "", BizType.TEMPCONTROL.getCode()); |
| | | } |
| | | |
| | | if (null == deviceModbus) { |
| | | log.error("当前设备---{}{},为获取到配置的MODBUS信息", device.getSerId(), device.getName()); |
| | | continue; |
| | |
| | | modbusTcp.setSerId(device.getSerId()); |
| | | modbusTcp.setCompanyId(device.getCompanyId()); |
| | | |
| | | doReadStatus(modbusTcp); |
| | | //空调状态单独读取 |
| | | if(DeviceType.TYPE_05.getCode().equals(device.getType())){ |
| | | doReadTempStatus(modbusTcp); |
| | | continue; |
| | | } |
| | | |
| | | doReadStatus(modbusTcp, false); |
| | | |
| | | if (StringUtils.isBlank(device.getLink()) || "null".equals(device.getLink())) continue; |
| | | |
| | |
| | | |
| | | modbusTcpLink.setAddrExe(ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd())); |
| | | |
| | | doReadStatus(modbusTcpLink); |
| | | doReadStatus(modbusTcpLink, true); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | |
| | | * 读取状态,同时读取开状态和关闭状态 |
| | | * |
| | | * @param modbusTcp |
| | | * @param flag 是否是关联设备 |
| | | * @throws Exception |
| | | */ |
| | | private void doReadStatus(ModbusTcp modbusTcp) throws Exception { |
| | | private void doReadStatus(ModbusTcp modbusTcp, Boolean flag) throws Exception { |
| | | |
| | | if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpen())) return; |
| | | if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpenEnd())) return; |
| | |
| | | int addrExe = ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd()); |
| | | boolean result = ModbusUtil2.readInputStatus(modbusTcp.getIp(), modbusTcp.getPort(), addrExe); |
| | | log.debug("---------读风窗风口开到位状态(或其他设备运行状态)------{}-{}-{}", modbusTcp.getBizCode(), addrExe, result); |
| | | String statusOpen = DeviceStatus.OPEN.getCode(); |
| | | String statusClose = DeviceStatus.CLOSE.getCode(); |
| | | if(flag){ |
| | | statusOpen = DeviceStatus.F_OPEN.getCode(); |
| | | statusClose = DeviceStatus.F_CLOSE.getCode(); |
| | | } |
| | | if (result) { |
| | | ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.OPEN.getCode()); |
| | | ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), statusOpen); |
| | | }else { |
| | | ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), statusClose); |
| | | } |
| | | |
| | | if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getCloseEnd())) return; |
| | | |
| | | addrExe = ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getCloseEnd()); |
| | | result = ModbusUtil2.readInputStatus(modbusTcp.getIp(), modbusTcp.getPort(), addrExe); |
| | | log.debug("---------读风窗风口关到位状态------{}-{}-{}", modbusTcp.getBizCode(), addrExe, result); |
| | | if (result) { |
| | | ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.CLOSE.getCode()); |
| | | }else { |
| | | ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.OPEN.getCode()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 读取空调设备状态 |
| | | * |
| | | * @param modbusTcp |
| | | * @throws Exception |
| | | */ |
| | | private void doReadTempStatus(ModbusTcp modbusTcp) throws Exception { |
| | | |
| | | if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpenEnd())) return; |
| | | |
| | | int addrExe = ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd()); |
| | | Number number = ModbusUtil2.readHoldingRegister(modbusTcp.getIp(), modbusTcp.getPort(), addrExe); |
| | | log.debug("---------读空调运行状态------{}-{}-{}", modbusTcp.getBizCode(), addrExe, number); |
| | | |
| | | int num = number.intValue(); |
| | | if(num == 1){ |
| | | ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.OPEN.getCode()); |
| | | } |
| | | if(num == 2){ |
| | | ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.CLOSE.getCode()); |
| | | } |
| | | } |
| | | |