Skip to content

常见问题

这页复用 TCP 接入常见问题,方便在当前目录下直接排查。

TCP 常见问题

1. TCP 粘贴/分包了怎么处理?

【所有产品】-【产品详情】-【端云配置】-【编辑】-【解析器类型】

faq1

【所有产品】-【产品详情】-【端云配置】-【编辑】-【分隔符(分隔符解析器)】

faq1

如果设备复杂,像jt808的分包,那么需要你自己扩展netty的解码器,详细见cn.tcp.protocol.codec.JT808Decoder

jt808

2. 设备端我想收到的是HEX16进制怎么办?

【所有产品】-【产品详情】-【公共配置】-【编辑】

faq1

3. 为什么设备列表里看不到设备

代码里的处理逻辑是:

  1. 先根据 productKey 找产品。
  2. 再执行 preDecode 提取 deviceId
  3. 再看设备是否存在。
  4. 如果产品允许自动注册,才会尝试自动创建设备。

所以设备列表看不到,通常有 4 种可能:

  1. preDecode 没拿到 deviceId
  2. allowInsert 没开,平台不允许自动创建设备。
  3. 设备是自动注册出来的,但当前账号没有立即看到。
  4. 设备已经创建了,但归属产品或筛选条件不对。

联调阶段的建议

如果你只是想先看报文,最省事的方式是:

  1. 先把 allowInsert 打开。
  2. 先保证 preDecode 返回稳定的 deviceId
  3. 先让平台能看到一台设备,再去整理权限和归属关系。

4. 如果 preDecode 还没写好怎么办

从代码逻辑看,联调时如果产品开启了 allowInsert,但 preDecode 没有拿到设备号,平台会有“默认调试设备(nexiotDebugDeviceI)”的兜底逻辑,方便你先看见消息流转。

但请注意:

  1. 这只是联调兜底,不是正式方案。
  2. 真正上线前,还是要把 preDecode 写好。
  3. 否则多台设备同时上报时,数据会无法正确归属。

7. 常见问题速查

现象优先排查
设备连不上端口TCP 组件是否启动、端口是否被占用、防火墙是否放通
平台有连接但没设备preDecode 是否拿到 deviceIdallowInsert 是否开启
有设备但没属性decode 返回格式不对,或物模型字段不匹配
能上报不能下发encode 报文格式不对,或设备没监听对应指令
明明发了 HEX 还是乱码调试工具发送格式和 decoderType 不一致
经常一条报文被拆开或粘一起parserType 选错,或者拆包参数不对