常见问题
1. 模组支持的MQTT版本是多少
mqtt 3.1.1
2. 有没有免费的MQTT broker可用
合宙有一个lbsmqtt.airm2m.com:1884的broker,没有网页端控制页面,可以用模块和mqtt.fx客户端配合测试。
3. 连接服务器失败
1、检查下模块信号、网络注册、网络附着、PDP激活状态。
2、检查下SIM卡是否欠费。
3、使用mqtt.fx,连接服务器确认一下是否可以连接成功,排除服务器故障。
4. 频繁掉线是什么原因
1、检查下是否存在代码逻辑错误,导致异常。
2、检查下是否不断重启,导致异常。
3、检查下服务器网络是否稳定,不要用内网穿透方式搭建服务器。
4、检查下使用环境是否网络覆盖不好,例如车库、地下、电梯、山区等。
5、检查下模块信号、网络注册、网络附着、PDP激活状态。
6、排查是否为设备天线问题:发出来设备的天线调试指标参数给合宙技术支持人员;曾经有一个客户天线指标明显有问题,导致10几个小时出现30次左右掉线;后来重新调试天线之后,40个小时出现几次掉线。
7、如果经常出现连接被动断开:检查下mqtt keep alive的时间,一般建议使用2分钟【如果每2分钟内都有应用数据收发,则可以把mqtt keep alive的时间设置的长一点儿】,除非有强制要求,否则不能太长,也不能太短。不建议超过4分钟,基站策略会关闭长时间没有数据传输的连接,太长时间可能会导致连接被基站关闭;不建议少于1分钟,太短时间可能会因为网络环境波动导致上行数据发送超时,可能超过1.5倍的心跳时间,从而被服务器主动断开连接。
检查下是否在1.5倍的mqtt keep alive的时间,没有成功发送数据到服务器,就会被被服务器主动断开,这种情况一般都是发送数据超时引起的。
8、如果要降低掉线率,可通过如下方式设置【注意:在网络环境不变的情况下,降低掉线率意味着会增加响应延时】 A. mqtt keep alive的时间,一般建议使用2分钟【如果每2分钟内都有应用数据收发,则可以把mqtt keep alive的时间设置的长一点儿】,除非有强制要求,否则不能太长,也不能太短。不建议超过4分钟,基站策略会关闭长时间没有数据传输的连接,太长时间可能会导致连接被基站关闭;不建议少于1分钟,太短时间可能会因为网络环境波动导致上行数据发送超时,可能超过1.5倍的心跳时间,从而被服务器主动断开连接。
B. 减少Qos1和Qos2的publish使用,允许的话建议都使用Qos0。
5. 排查是否设备单体问题:如果同一地点,某些设备正常,某些设备异常,按照如下几种情况分析
1、分析正常设备和异常设备的使用环境是否相同: A. 如果不同,例如异常设备固定在钢制墙壁上,正常设备放置在桌子上,钢制墙壁可能对天线射频有干扰,将异常设备和正常设备放置在同样的使用环境中,再对比测试。 B. 如果相同,参考第2)步。
2、 分析正常和异常的设备,驻留的小区是否相同: A. 如果相同,重点排查异常设备的天线射频部分,分析不出结果的话,异常设备寄给合宙分析。 B. 如同不同,多测试几次,确认下,是不是在异常小区内很容易出问题,如果异常小区很容易出问题,可能就是小区拥堵造成的。
6. 有没有认证机制
有,每个设备有clientid、username、password。
7. client id是否允许重复
不允许重复,重复的话,服务器会踢掉上一个相同id的设备。
8. Qos0、1、2如何选择
应用允许的情况下,建议使用Qos0,Qos1和Qos2会加重网络负担,在网络拥堵和较差的情况下,数据传输的次数越多,掉线的概率就会越高。
9. 是否支持ssl
支持证书配置,通过mqtt.create()配置单向认证和双向认证。
10. 为什么mqtt ssl访问失败
1、检查服务器是否支持模块支持的加密套件。
2、发日志文件给合宙技术支持人员分析。
11. 重试多次PDP,MQTT应用一直连接失败
如果重试多次PDP激活,PDP一直激活失败,或者MQTT一直连接失败,则尝试使用如下手段恢复: 1、使用RESET引脚复位模块。
2、极端情况下,直接给模块断电,再上电,POWER KEY引脚拉低开机。
12. 如何实现掉线自动重连
参考mqtt demo,通过mqttc:autoreconn()设置自动重连即可。
13. MQTT的遗嘱如何使用
通过mqttc:will()设置遗嘱消息。