为什么设备显示离线需要较长时间?
ESP RainMaker 设备通过 MQTT 连接云端,MQTT 使用 keep-alive 消息检测连接是否仍然有效。根据 MQTT 规范 v3.1.1,如果 Keep Alive 值非零,且服务器在 1.5 倍 Keep Alive 时间内未收到来自客户端的心跳报文,则必须断开与该客户端的网络连接,如同网络已经失败。
在 ESP RainMaker 中,keep-alive 时间为 120 秒。因此,服务器最多可能需要 180 秒(3 分钟)才能检测到设备已断开。更小的 keep-alive 值可以加快检测速度,但并不推荐,因为它会带来更多的网络流量,并在网络信号较差时导致频繁断连。
备注
不推荐更改 keep-alive 值,但如有需要,可在 menuconfig 中通过 CONFIG_ESP_RMAKER_MQTT_KEEP_ALIVE_INTERVAL 进行设置。

