For the next update, the following should be added to the AplicomProtocolDecoder.java :
private void decodeEventData(Position position, ByteBuf buf, int event) {
int extDataLength;
String extDataHex;
switch (event) {
case 2, 40 -> buf.readUnsignedByte();
case 9 -> buf.readUnsignedMedium();
case 31, 32 -> buf.readUnsignedShort();
case 38 -> buf.skipBytes(4 * 9);
case 113 -> {
buf.readUnsignedInt();
buf.readUnsignedByte();
}
case 119 -> position.set("eventData", ByteBufUtil.hexDump(
buf, buf.readerIndex(), Math.min(buf.readableBytes(), 1024)));
case 121, 142 -> buf.readLong();
case 130 -> buf.readUnsignedInt();
case 188 -> decodeEB(position, buf);
case 186 -> {
buf.markReaderIndex();
extDataLength = Math.min(buf.readableBytes(), 1024);
extDataHex = ByteBufUtil.hexDump(buf, buf.readerIndex(), extDataLength);
position.set("extData", extDataHex);
if (buf.readableBytes() >= 10) {
ByteBuf slice = buf.readSlice(10);
long sensorId = slice.readLong();
int temperatureRaw = slice.readUnsignedShort();
position.set("sensorId", String.format("%016x", sensorId));
position.set("temperature", temperatureRaw / 10.0);
} else {
buf.resetReaderIndex();
}
}
}
}
to handle event code 186, by exposing sensorId and temperature as new position attributes.
If you want it to be added, I recommend sending a pull request. Make sure you provide the documentation and logs as well.
For the next update, the following should be added to the AplicomProtocolDecoder.java :
private void decodeEventData(Position position, ByteBuf buf, int event) { int extDataLength; String extDataHex; switch (event) { case 2, 40 -> buf.readUnsignedByte(); case 9 -> buf.readUnsignedMedium(); case 31, 32 -> buf.readUnsignedShort(); case 38 -> buf.skipBytes(4 * 9); case 113 -> { buf.readUnsignedInt(); buf.readUnsignedByte(); } case 119 -> position.set("eventData", ByteBufUtil.hexDump( buf, buf.readerIndex(), Math.min(buf.readableBytes(), 1024))); case 121, 142 -> buf.readLong(); case 130 -> buf.readUnsignedInt(); // incorrect case 188 -> decodeEB(position, buf); case 186 -> { buf.markReaderIndex(); extDataLength = Math.min(buf.readableBytes(), 1024); extDataHex = ByteBufUtil.hexDump(buf, buf.readerIndex(), extDataLength); position.set("extData", extDataHex); if (buf.readableBytes() >= 10) { ByteBuf slice = buf.readSlice(10); long sensorId = slice.readLong(); int temperatureRaw = slice.readUnsignedShort(); position.set("sensorId", String.format("%016x", sensorId)); position.set("temperature", temperatureRaw / 10.0); } else { buf.resetReaderIndex(); } } } }to handle event code 186, by exposing
sensorIdandtemperatureas new position attributes.