diff --git a/dc3-driver/dc3-driver-water-188b/src/main/java/com/dc3/driver/service/netty/NettyServerHandler.java b/dc3-driver/dc3-driver-water-188b/src/main/java/com/dc3/driver/service/netty/NettyServerHandler.java
index 479ce72bc..cc5014f95 100644
--- a/dc3-driver/dc3-driver-water-188b/src/main/java/com/dc3/driver/service/netty/NettyServerHandler.java
+++ b/dc3-driver/dc3-driver-water-188b/src/main/java/com/dc3/driver/service/netty/NettyServerHandler.java
@@ -46,22 +46,46 @@ import java.util.concurrent.TimeUnit;
* 03221018200673 表号
* 0081
* 96 长度
- * 15:905F 数据标识DI(90 5F)
- * 17:2B2B3600 正向累计量单位(2B),反向累计量单位(2B),瞬时流量单位(36),水压单位(00)
- * 21:18690100 当前正向累计水量 92.440
- * 25:00000000 当前剩余金额
- * 29:00000000 当前状态
- * 33:00 充值识别码
- * 34:00000000 当前反向累计流量
- * 38:000000 当前瞬时流量
- * 41:0000 当前水压
- * 43:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
- * B700 信号强度
+ * 15: 905F 数据标识DI(90 5F)
+ * 17: 2B2B3600 正向累计量单位(2B),反向累计量单位(2B),瞬时流量单位(36),水压单位(00)
+ * 21: 18690100 当前正向累计水量 92.440
+ * 25: 00000000 当前剩余金额
+ * 29: 00000000 当前状态
+ * 33: 00 充值识别码
+ * 34: 00000000 当前反向累计流量
+ * 38: 000000 当前瞬时流量
+ * 41: 0000 当前水压
+ * 43: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 48: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 53: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 58: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 63: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 68: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 73: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 78: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 83: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 88: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 93: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 98: 0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 103:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 108:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 113:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 118:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 123:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 128:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 133:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 138:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 143:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 148:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 153:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 158:0A68010073 正向累计流量(0A680100)累加和(73) 92.17
+ * 163:B700 信号强度
* A9 校验和
* 16 帧尾
*
* ----0--1--2--3--4--5--6--7--8--9--10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-46-47-48-49-50-51
- * lg:[FE FE FE 68 10 03 22 10 18 20 06 73 00 81 96 90 5F 2B 2B 36 00 18 69 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 68 01 00 73 B7 00 A9 16]
+ * lg:[FE FE FE 68 10 03 22 10 18 20 06 73 00 81 96 90 5F 2B 2B 36 00 18 69 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 0A 68 01 00 73 B7 00 A9 16]
+ * lg:[FE FE FE 68 10 06 02 01 07 20 06 36 00 81 96 90 5F 2B 2B 35 00 0E 01 00 00 00 00 00 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F 0E 01 00 00 0F A3 00 1B 16]
*
* @author pnoker
*/
@@ -83,6 +107,23 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
@Resource
private DriverContext driverContext;
+ /**
+ * 自定义报文解析,用于处理特殊位号数据
+ *
+ * @return PointValue
+ */
+ private void customDecode(int start, long deviceId, long pointId, PointValue pointValue) {
+ //信号强度额外处理
+ if (start == 163) {
+ String value = that.driverService.convertValue(deviceId, pointId, pointValue.getValue());
+ int csq = (int) Double.parseDouble(value);
+ if (csq > 0) {
+ csq -= 200;
+ }
+ pointValue.setValue(String.valueOf(csq));
+ }
+ }
+
@Override
public void channelActive(ChannelHandlerContext context) {
log.debug("Water 188B Driver Listener({}) accept clint({})", context.channel().localAddress(), context.channel().remoteAddress());
@@ -101,7 +142,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
List pointValues = new ArrayList<>();
Map> pointInfoMap = that.driverContext.getDevicePointInfoMap().get(deviceId);
for (Long pointId : pointInfoMap.keySet()) {
- PointValue pointValue = decodePointValue(deviceId, pointId, pointInfoMap, byteBuf);
+ PointValue pointValue = decodePointValue(deviceId, pointId, pointInfoMap.get(pointId), byteBuf);
pointValues.add(pointValue);
}
PointValue pointValue = new PointValue(deviceId, pointValues, 1, TimeUnit.HOURS);
@@ -114,8 +155,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
context.close();
}
- private PointValue decodePointValue(long deviceId, long pointId, Map> pointInfoMap, ByteBuf byteBuf) {
- Map infoMap = pointInfoMap.get(pointId);
+ private PointValue decodePointValue(long deviceId, long pointId, Map infoMap, ByteBuf byteBuf) {
String type = DriverUtils.value(infoMap.get("type").getType(), infoMap.get("type").getValue());
int start = DriverUtils.value(infoMap.get("start").getType(), infoMap.get("start").getValue());
int length = DriverUtils.value(infoMap.get("length").getType(), infoMap.get("length").getValue());
@@ -149,8 +189,10 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
default:
throw new IllegalStateException("Unexpected value: " + type.toLowerCase());
}
- log.info("DecodePointValue: hex({}),rawValue({}),convertValue({})", ByteBufUtil.hexDump(byteBuf, start, length), rawValue, value);
- return new PointValue(pointId, rawValue, value);
+ PointValue pointValue = new PointValue(pointId, rawValue, value);
+ customDecode(start, deviceId, pointId, pointValue);
+ log.info("DecodePointValue: hex({}),rawValue({}),convertValue({})", ByteBufUtil.hexDump(byteBuf, start, length).toUpperCase(), pointValue.getRawValue(), pointValue.getValue());
+ return pointValue;
}
}
\ No newline at end of file
diff --git a/dc3/api/files/batch-import-188b-template.json b/dc3/api/files/batch-import-188b-template.json
index 529a4a504..9f678eb0b 100644
--- a/dc3/api/files/batch-import-188b-template.json
+++ b/dc3/api/files/batch-import-188b-template.json
@@ -445,395 +445,211 @@
"base": 0,
"minimum": -999999,
"maximum": 999999,
- "multiple": 0.001,
+ "multiple": 1,
"accrue": false,
"format": "%.3f",
"unit": "-"
}
],
+ "pointConfig": {
+ "数据标识": {
+ "start": 15,
+ "length": 2,
+ "type": "hex"
+ },
+ "正向累计量单位": {
+ "start": 17,
+ "length": 1,
+ "type": "hex"
+ },
+ "反向累计量单位": {
+ "start": 18,
+ "length": 1,
+ "type": "hex"
+ },
+ "瞬时流量单位": {
+ "start": 19,
+ "length": 1,
+ "type": "hex"
+ },
+ "水压单位": {
+ "start": 20,
+ "length": 1,
+ "type": "hex"
+ },
+ "正向累计水量": {
+ "start": 21,
+ "length": 4,
+ "type": "int"
+ },
+ "剩余金额": {
+ "start": 25,
+ "length": 4,
+ "type": "int"
+ },
+ "状态": {
+ "start": 29,
+ "length": 4,
+ "type": "hex"
+ },
+ "充值识别码": {
+ "start": 33,
+ "length": 1,
+ "type": "hex"
+ },
+ "反向累计流量": {
+ "start": 34,
+ "length": 4,
+ "type": "int"
+ },
+ "瞬时流量": {
+ "start": 38,
+ "length": 3,
+ "type": "int"
+ },
+ "水压": {
+ "start": 41,
+ "length": 2,
+ "type": "short"
+ },
+ "正向累计流量-0点": {
+ "start": 43,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-1点": {
+ "start": 48,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-2点": {
+ "start": 53,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-3点": {
+ "start": 58,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-4点": {
+ "start": 63,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-5点": {
+ "start": 68,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-6点": {
+ "start": 73,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-7点": {
+ "start": 78,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-8点": {
+ "start": 83,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-9点": {
+ "start": 88,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-10点": {
+ "start": 93,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-11点": {
+ "start": 98,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-12点": {
+ "start": 103,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-13点": {
+ "start": 108,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-14点": {
+ "start": 113,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-15点": {
+ "start": 118,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-16点": {
+ "start": 123,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-17点": {
+ "start": 128,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-18点": {
+ "start": 133,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-19点": {
+ "start": 138,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-20点": {
+ "start": 143,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-21点": {
+ "start": 148,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-22点": {
+ "start": 153,
+ "length": 4,
+ "type": "int"
+ },
+ "正向累计流量-23点": {
+ "start": 158,
+ "length": 4,
+ "type": "int"
+ },
+ "信号强度": {
+ "start": 163,
+ "length": 2,
+ "type": "short"
+ }
+ },
"groups": [
{
"name": "水表",
"devices": [
{
- "name": "03221018200673",
- "pointConfig": {
- "数据标识": {
- "start": 15,
- "length": 2,
- "type": "hex"
- },
- "正向累计量单位": {
- "start": 17,
- "length": 1,
- "type": "hex"
- },
- "反向累计量单位": {
- "start": 18,
- "length": 1,
- "type": "hex"
- },
- "瞬时流量单位": {
- "start": 19,
- "length": 1,
- "type": "hex"
- },
- "水压单位": {
- "start": 20,
- "length": 1,
- "type": "hex"
- },
- "正向累计水量": {
- "start": 21,
- "length": 4,
- "type": "int"
- },
- "剩余金额": {
- "start": 25,
- "length": 4,
- "type": "int"
- },
- "状态": {
- "start": 29,
- "length": 4,
- "type": "hex"
- },
- "充值识别码": {
- "start": 33,
- "length": 1,
- "type": "hex"
- },
- "反向累计流量": {
- "start": 34,
- "length": 4,
- "type": "int"
- },
- "瞬时流量": {
- "start": 38,
- "length": 3,
- "type": "int"
- },
- "水压": {
- "start": 41,
- "length": 2,
- "type": "short"
- },
- "正向累计流量-0点": {
- "start": 43,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-1点": {
- "start": 48,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-2点": {
- "start": 53,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-3点": {
- "start": 58,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-4点": {
- "start": 63,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-5点": {
- "start": 68,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-6点": {
- "start": 73,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-7点": {
- "start": 78,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-8点": {
- "start": 83,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-9点": {
- "start": 88,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-10点": {
- "start": 93,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-11点": {
- "start": 98,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-12点": {
- "start": 103,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-13点": {
- "start": 108,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-14点": {
- "start": 113,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-15点": {
- "start": 118,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-16点": {
- "start": 123,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-17点": {
- "start": 128,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-18点": {
- "start": 133,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-19点": {
- "start": 138,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-20点": {
- "start": 143,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-21点": {
- "start": 148,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-22点": {
- "start": 153,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-23点": {
- "start": 158,
- "length": 4,
- "type": "int"
- },
- "信号强度": {
- "start": 163,
- "length": 2,
- "type": "short"
- }
- }
+ "name": "06020107200636"
},
{
- "name": "06020107200636",
- "pointConfig": {
- "数据标识": {
- "start": 15,
- "length": 2,
- "type": "hex"
- },
- "正向累计量单位": {
- "start": 17,
- "length": 1,
- "type": "hex"
- },
- "反向累计量单位": {
- "start": 18,
- "length": 1,
- "type": "hex"
- },
- "瞬时流量单位": {
- "start": 19,
- "length": 1,
- "type": "hex"
- },
- "水压单位": {
- "start": 20,
- "length": 1,
- "type": "hex"
- },
- "正向累计水量": {
- "start": 21,
- "length": 4,
- "type": "int"
- },
- "剩余金额": {
- "start": 25,
- "length": 4,
- "type": "int"
- },
- "状态": {
- "start": 29,
- "length": 4,
- "type": "hex"
- },
- "充值识别码": {
- "start": 33,
- "length": 1,
- "type": "hex"
- },
- "反向累计流量": {
- "start": 34,
- "length": 4,
- "type": "int"
- },
- "瞬时流量": {
- "start": 38,
- "length": 3,
- "type": "int"
- },
- "水压": {
- "start": 41,
- "length": 2,
- "type": "short"
- },
- "正向累计流量-0点": {
- "start": 43,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-1点": {
- "start": 48,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-2点": {
- "start": 53,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-3点": {
- "start": 58,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-4点": {
- "start": 63,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-5点": {
- "start": 68,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-6点": {
- "start": 73,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-7点": {
- "start": 78,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-8点": {
- "start": 83,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-9点": {
- "start": 88,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-10点": {
- "start": 93,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-11点": {
- "start": 98,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-12点": {
- "start": 103,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-13点": {
- "start": 108,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-14点": {
- "start": 113,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-15点": {
- "start": 118,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-16点": {
- "start": 123,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-17点": {
- "start": 128,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-18点": {
- "start": 133,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-19点": {
- "start": 138,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-20点": {
- "start": 143,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-21点": {
- "start": 148,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-22点": {
- "start": 153,
- "length": 4,
- "type": "int"
- },
- "正向累计流量-23点": {
- "start": 158,
- "length": 4,
- "type": "int"
- },
- "信号强度": {
- "start": 163,
- "length": 2,
- "type": "short"
- }
- }
+ "name": "03221018200673"
+ },
+ {
+ "name": "09451018200637"
}
]
}