| | |
| | | // 心跳包数据 58 |
| | | private HeartBeatDataPackage heartBeatDataPackage; |
| | | |
| | | private String originFrame; |
| | | |
| | | @Override |
| | | public A5AtmosphereHeartbeatReportInnerFrame transformFrame(String hex) { |
| | | // 长度不一致时,返回null |
| | | if (StrUtil.isBlank(hex)) { |
| | | if (StrUtil.isBlank(hex) || hex.length() < 26 || hex.substring(18).length() % 8 != 0) { |
| | | System.out.println("数据校验异常!"); |
| | | return null; |
| | | } |
| | | |
| | | // MQTT通信方式(1) |
| | | setConnectType(hex.substring(0, 2)); |
| | | // 功能码(1) |
| | |
| | | } |
| | | |
| | | //设备型号 |
| | | Integer type = 0; |
| | | this.deviceType = hex.substring(0, 4); |
| | | if (this.deviceType.equals(DeviceType.SENSOR_V1.getType())) { |
| | | type = 1; |
| | | } |
| | | |
| | | //模块预热状态标志 |
| | | this.moduleWarmUpStatusFlag = hex.substring(4, 6); |
| | | |
| | |
| | | } |
| | | } else if ("00".equals(sub.substring(4, 6))) { |
| | | //360度款风向仪 |
| | | this.windDirection = parseVal(sub, 4, 8) * .1 + "℃"; |
| | | this.windDirection = parseVal(sub, 4, 8) * .1 + "度"; |
| | | } |
| | | break; |
| | | //风力 |
| | |
| | | break; |
| | | //噪音 |
| | | case "08": |
| | | |
| | | this.noise = parseVal(sub, 4, 8) * .1 + "dB"; |
| | | this.noise = parseVal(sub, 4, 8).doubleValue() * .1 + "dB"; |
| | | break; |
| | | //PM2.5 |
| | | case "09": |
| | |
| | | } |
| | | } |
| | | |
| | | public enum DeviceType { |
| | | |
| | | SENSOR_V1("0101"); |
| | | |
| | | private String type; |
| | | |
| | | DeviceType(String type) { |
| | | this.type = type; |
| | | } |
| | | |
| | | public String getType() { |
| | | return type; |
| | | } |
| | | } |
| | | } |