常见问题
这页复用 TCP 接入常见问题,方便在当前目录下直接排查。
TCP 常见问题
1. TCP 粘贴/分包了怎么处理?
【所有产品】-【产品详情】-【端云配置】-【编辑】-【解析器类型】

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

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

2. 设备端我想收到的是HEX16进制怎么办?
【所有产品】-【产品详情】-【公共配置】-【编辑】

3. 为什么设备列表里看不到设备
代码里的处理逻辑是:
- 先根据
productKey找产品。 - 再执行
preDecode提取deviceId。 - 再看设备是否存在。
- 如果产品允许自动注册,才会尝试自动创建设备。
所以设备列表看不到,通常有 4 种可能:
preDecode没拿到deviceId。allowInsert没开,平台不允许自动创建设备。- 设备是自动注册出来的,但当前账号没有立即看到。
- 设备已经创建了,但归属产品或筛选条件不对。
联调阶段的建议
如果你只是想先看报文,最省事的方式是:
- 先把
allowInsert打开。 - 先保证
preDecode返回稳定的deviceId。 - 先让平台能看到一台设备,再去整理权限和归属关系。
4. 如果 preDecode 还没写好怎么办
从代码逻辑看,联调时如果产品开启了 allowInsert,但 preDecode 没有拿到设备号,平台会有“默认调试设备(nexiotDebugDeviceI)”的兜底逻辑,方便你先看见消息流转。
但请注意:
- 这只是联调兜底,不是正式方案。
- 真正上线前,还是要把
preDecode写好。 - 否则多台设备同时上报时,数据会无法正确归属。
7. 常见问题速查
| 现象 | 优先排查 |
|---|---|
| 设备连不上端口 | TCP 组件是否启动、端口是否被占用、防火墙是否放通 |
| 平台有连接但没设备 | preDecode 是否拿到 deviceId,allowInsert 是否开启 |
| 有设备但没属性 | decode 返回格式不对,或物模型字段不匹配 |
| 能上报不能下发 | encode 报文格式不对,或设备没监听对应指令 |
| 明明发了 HEX 还是乱码 | 调试工具发送格式和 decoderType 不一致 |
| 经常一条报文被拆开或粘一起 | parserType 选错,或者拆包参数不对 |