为什么有些 IoT 设备无法连接到 MQTT 代理

物联网 MQTT aws-iot aws
2021-05-31 16:16:15

我们有一家物联网公司,我们向世界各地运送了 10.000 多种产品。我们的一些客户(大约 5%)无法将他们的产品连接到 MQTT。

我们的基础设施非常简单。一旦用户通过蓝牙向我们的产品发送 WiFi 凭据,它就会连接到 WiFi 并向我们的服务器发送请求。服务器响应证书以连接到 MQTT 代理(AWS IoT Core),一旦产品拥有此证书,它就会连接到 MQTT 代理并开始通信,但此连接从未发生。

问题是我们不能以任何方式复制这种问题。我们尝试购买与客户相同的路由器,但一切正常。

设备使用的端口是8883,认证使用X.509客户端证书。

你知道哪个可能是问题吗?

太感谢了!

2个回答

您是否知道正在供应的节点是否设置了正确的日期/时间?根据我遇到类似情况的经验,NTP 经常被 ISP 阻止,IoT 节点无法获取网络时间。证书过期验证是必要的。

假设您有一个应用程序将 WiFi 凭据推送到设备,您能否通过同一网络测试来自该应用程序的 MQTT 连接?

这将使您能够访问 MQTT 堆栈在尝试连接时抛出的错误。

或者,设备可以记录错误,如果出现故障,应用程序可以通过蓝牙收集这些错误。或者,由于 HTTP(假设)正在工作(以检索证书),您还可以让设备通过 HTTP post 报告错误以查看报告的失败原因。