通过API进行消息发布,设备无法接收信息

环境信息

  • EMQX 版本:4.3
  • 操作系统及版本:thingsboard 自带mqtt协议进行登录服务端
  • 其他

问题描述

我通过API进行消息发送到设备上,但是服务端界面上显示设备已经登录并且已经订阅。设备无法接收到该信息。用Java代码去实现,完全是可以 的接收到该信息。

服务器设备登录详细

服务端产生的日志


其中字段PacketId 设备无法接收数据的值为undefined,接收到数据设备上显示字段是有值的,我不知道这个字段是什么意思。

thingsboard 自带mqtt协议进行登录服务端时候,这个自动设置会话超时的7200,用其他的代码进行测试,没有发现会自动设置超时时间,我也想知道为什么。通过sql引擎扑捉设备上下线到的mqtt 协议为4,这个会话超时过期,设备会自动掉线吗,设备发出心跳也算为会话的一部分吗

  1. undefined应该没有影响,同样的请求,是设备有时收得到,有时收不到,设备完全收不到,只能java模拟收到?
  2. 会话超时,不发心跳,会被踢下线。需要设备发跳。

如果是完全收不到消息,建议检查下设备端的代码是否订阅对应的主题成功。
如果是偶发性的收不到消息,需要排查,设备是否有重连逻辑,重连是否会再次订阅。