GL200 protocol error in GV55W device

Cristian a year ago

I receive the following error from a Queclink GV55W device

2024-09-20 23:17:17  INFO: [T766a70e4: gl200 < 191.125.160.88] +RESP:GTIGF,500101,86857***0393782,,0,0,,,,,,,0730,0002,A08F,872B36,00,,0.0,20240921021804,E3B1$
2024-09-20 23:17:17  INFO: [T766a70e4] error -
java.lang.NumberFormatException: empty String
        at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
        at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
        at java.base/java.lang.Double.parseDouble(Double.java:792)
        at org.traccar.protocol.Gl200TextProtocolDecoder.decodeIgn(Gl200TextProtocolDecoder.java:1050)
        at org.traccar.protocol.Gl200TextProtocolDecoder.decode(Gl200TextProtocolDecoder.java:1620)
        at org.traccar.protocol.Gl200ProtocolDecoder.decode(Gl200ProtocolDecoder.java:54)
        at org.traccar.ExtendedObjectDecoder.channelRead(ExtendedObjectDecoder.java:73)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at org.traccar.WrapperContext.fireChannelRead(WrapperContext.java:102)
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
        at org.traccar.WrapperInboundHandler.channelRead(WrapperInboundHandler.java:56)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
        at org.traccar.handler.network.StandardLoggingHandler.channelRead(StandardLoggingHandler.java:62)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at org.traccar.handler.network.NetworkMessageHandler.channelRead(NetworkMessageHandler.java:36)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:1583)

2024-09-20 23:17:17  INFO: [T766a70e4] disconnected
2024-09-20 23:17:17  INFO: Event id: 86857***0393782, time: 2024-09-20 23:17:17, type: deviceOffline, notifications: 0

I am trying to understand what it is about but to no avail. I tried to relate the received data to the protocol, but I don't understand the protocol code in Gl200TextProtocolDecoder to determine why the error occurs.

Captura de pantalla 2024-09-21 a la(s) 12.42.23 a. m..png

Captura de pantalla 2024-09-21 a la(s) 12.42.46 a. m..png

Captura de pantalla 2024-09-21 a la(s) 12.42.56 a. m..png

Anton Tananaev a year ago
  1. What version of Traccar are you using?
  2. Can you provide full protocol documentation?
Cristian a year ago
Anton Tananaev a year ago
Cristian a year ago

Excellent, thank you Anton