侧边栏壁纸
  • 累计撰写 67 篇文章
  • 累计收到 2 条评论

易语言对接物联网MQTT服务的常见问题排查

2026-10-20 / 0 评论 / 4 阅读

易语言对接物联网MQTT服务的常见问题排查

上周泡易语言开发者论坛的时候,光一下午就碰到五个人问MQTT对接的问题,好多人卡第一步就卡两三天,把问得最多的几个问题和解决步骤整理在这,都是亲测能跑通的。

点连接完全没反应,既不报错也不提示成功

这个问题我刚学的时候也卡了快一小时,90%的情况都是组件或基础配置错了,顺着下面步骤查:
  1. 先确认你用的MQTT组件来源,优先选精易模块自带的MQTT类或是开源维护的eMqtt支持库,别随便下论坛里个人封装的老旧杂库,很多连回调都没写全。
  2. 核对端口配置:没开SSL加密就填默认的1883端口,开了加密才填8883,别随便抄别人的配置填错端口。
  3. 一定要加连接状态回调,别空着啥提示都不输出,方便直接定位错误原因,回调代码直接抄就行:
.版本 2
.支持库 emqtt

.子程序 _MQTT客户端_连接状态变更
.参数 状态码, 整数型

.如果真 (状态码 = 0)
    编辑框1.加入文本 ("连接成功" + #换行符)
.如果真结束
.如果真 (状态码 ≠ 0)
    编辑框1.加入文本 ("连接失败,错误码:" + 到文本 (状态码) + #换行符)
.如果真结束
要是返回错误码5,别怀疑是代码写崩了,基本都是客户端ID重复导致的,在ID后面加个时间戳当后缀就行,别所有人都用默认的"eMqttClient"当ID。

提示连接成功,但发消息服务端收不到,订阅也没消息

碰到这种情况别死磕连接逻辑,基本都是消息配置或者权限的问题,按步骤查:
  1. 先核对主题名,MQTT主题严格区分大小写,也不要随便在开头加多余的斜杠,必须和服务端配置的主题规则完全一致。
  2. 测试阶段先把QoS等级设为0,别上来就开QoS2,容易因为配置不兼容丢消息,调通了再改等级。
  3. 去你使用的物联网平台控制台,检查当前设备的ACL权限,确认对应主题有发布、订阅权限,很多平台默认是禁止未授权的主题操作的。
发消息的代码可以直接复用:
.版本 2
.支持库 emqtt

.子程序 _按钮_发消息_被单击
.局部变量 发送结果, 逻辑型

发送结果 = MQTT客户端.发布消息 ("device/data", 编辑框_消息内容.内容, 0, 假)
.如果真 (发送结果 = 假)
    编辑框1.加入文本 ("消息发送失败,请检查连接状态" + #换行符)
.如果真结束

连接上之后过段时间就自动断连

这个几乎都是没正确配置心跳保活导致的,不用瞎改其他参数,在连接配置里把心跳间隔设为30-60秒左右就行——设太短会被服务端当成异常请求拦截,设太长的话,中间的网络设备会把空闲连接掐断,自然就断连了,具体数值看设备和网络环境调整。 说白了大部分卡壳都不是什么复杂问题,顺着上面的步骤一条一条查,基本很快就能搞定。要是碰到三元组认证、SSL连接的问题,可以再留言问。

评论一下?

OωO
取消