EC800M-CN设置了keepalive=60,链接IoTDA实例直连,老是离线

设备:EC800M-CN
开发:python
mqtt 部分代码
from umqtt import MQTTClient

我都设置了60,按理说会主动发心跳的。

现在的场景是,我会一分钟发一次数据,按理说设置的60*1.5=90s是在最大超时时间的,为啥老是离线,阿里云还说我没发心跳。而且还有丢包的情况,

丢包是不是因为我这里得知道实在收到了,才True而不是直接publish后就True呢?

您可以使用qos=1,测试是否还会存在丢包的现象,qos=0不能完全保证对端接收

您好,我这为啥报这个错呢??

这个是警告,请问是否还有存在数据丢失的情况

偶尔还是会有。

这个警告是指说明模组qos1没有规定时间收到ack处理,qos1没有正确处理,请确认服务器端是否正常发送了ack确认位

如果仍有疑问,请帮忙抓取日志用于分析,并提供具体的模组固件版本,ASR平台Log工具使用说明 - QuecPython

CATStudio_V3_1_2_87.7z (84.1 MB)

\# 发布数据到华为云 Topic

def mqtt_publish(self, data):

    payload = ujson.dumps(data)

    print("📦 载荷:", payload)

    try:

        self.client.publish(CONF.MQTT_TOPIC, payload, retain=False, qos=1)

        \# 循环多次等待 PUBACK,适配4G延迟

        for i in range(5):

            self.client.wait_msg()

            utime.sleep(0.15)  # 适当延时

        print("✅ QOS1 收包完成")

    except Exception as e:

        print("❌ 异常: {}".format(e))

我问豆包说加个延时。还是会出现 日志有些红的

请确认这个是否正常

另外具体问题需要抓取日志才能明确

华为云说您上报了消息我们就会回复ack确认的。

那麻烦帮抓取下日志,使用catstudio工具抓取日志