在micopython中,连接不上mqqt服务器,这是怎么回事?

在micopython中,连接不上mqqt服务器,这是怎么回事?,第1张

在使用 MQTT 协议连接 MQTT 服务器时,可能会遇到连接失败的情况。这通常是由于以下几个原因之一:
服务器配置错误:确保您的 MQTT 服务器已经正确配置,并且已经启动。您可以检查 MQTT 服务器的配置文件,确保 MQTT 服务器的端口号、认证方式、消息格式等参数都正确。
客户端配置错误:确保您的客户端已经正确配置,并且已经启动。您可以检查 MQTT 客户端的配置文件,确保 MQTT 客户端的 URL、端口号、认证方式、消息格式等参数都正确。
网络问题:确保您的网络连接正常,并且可以访问 MQTT 服务器。如果您的网络连接不稳定或者无法访问 MQTT 服务器,可能会导致连接失败。
配置文件错误:确保您的配置文件没有错误。如果您的配置文件中有错误或者不正确的参数,可能会导致连接失败。
如果您已经确保了以上几个方面都没有问题,但是仍然无法连接到 MQTT 服务器,您可以尝试以下几个步骤:
检查 MQTT 服务器的配置文件:确保您的 MQTT 服务器的配置文件没有错误。如果您的配置文件中有错误或者不正确的参数,可能会导致连接失败。
检查 MQTT 客户端的配置文件:确保您的 MQTT 客户端的配置文件没有错误。如果您的配置文件中有错误或者不正确的参数,可能会导致连接失败。
检查网络连接:确保您的网络连接正常,并且可以访问 MQTT 服务器。如果您的网络连接不稳定或者无法访问 MQTT 服务器,可能会导致连接失败。
检查 MQTT 服务器的状态:确保您的 MQTT 服务器已经正确启动,并且可以正常工作。如果您的 MQTT 服务器出现了故障,可能会导致连接失败。
如果以上步骤都没有解决问题,您可以尝试查看 MQTT 服务器的日志,以了解更多有关连接失败的信息。同时,您也可以尝试使用其他的 MQTT 客户端或者其他的 MQTT 服务器来连接,以确保您的连接是正常的。

MQTT 协议 因为其轻量、灵活等特点成为了当今世界上最受欢迎的物联网协议,它已经广泛应用于车联网、智能家居、物流、即时聊天应用和移动消息推送等领域,连接了数以亿计的设备,并且每时每刻都有无数设备开始使用和接入 MQTT 协议。MQTT 协议为这些设备提供了稳定、可靠的通信基础,这些设备庞大的接入数量也向 MQTT 协议规范提出了挑战, MQTT 50 的诞生便是为了更好地满足这一需求。

MQTT(消息队列遥测传输)最初由 IBM 于上世纪 90 年代晚期发明。它最初的用途是将石油管道上的传感器与卫星相链接,所以 MQTT 从诞生之初就是专为受限设备和低带宽、高延迟或不可靠的网络而设计,它使用了发布订阅模型,在空间和时间上解耦了消息的发送者与接收者,并且基于 TCP/IP 提供稳定可靠的网络连接,拥有非常轻量的报头以减少传输开销,支持可靠消息传输,可以说天生就满足了物联网场景的各种需求。在 MQTT 311 发布并成为 OASIS 标准的四年后,MQTT 50 正式发布,这是一次重大的改进和升级,它的目的不仅仅是满足现阶段的行业需求,更是为行业未来的发展变化做了充足的准备。2019 年 3 月,MQTT 50 成为了新的 OASIS 标准。

面对迅速增长的设备数量和层出不穷的需求,OASIS MQTT 技术委员会需要从繁杂的需求中提取出通用部分,将其纳入标准规范,并且尽可能不增加开销或降低易用性,在不增加不必要的复杂性的前提下提高性能和易用性。

最终,OASIS MQTT 技术委员会为 MQTT 50 添加了大量的全新功能与特性,50 成为 MQTT 有史以来变化最大的一个版本。在这里,我们将列举一些比较重要的特性:

完整的新属性列表包含在协议标准的附录C,您可以访问以下网址了解详情: >

MQTT不存在上传和下发的定义,只有以topic为单位的推送和订阅。你的情况描述是服务器能看到推送的消息,说明网络、broker配置没有问题,要保证“服务器下发给客户端”能顺利实现的话请确认以下几点:

服务器端推送到的topic和客户端订阅的topic是一致的

本地设备开启了1883端口(或者你自定义的端口号),防火墙没有拦截

如果是自己写代码的话,客户端的on message回调函数里解析报文的逻辑是正确

最近在着手研究使用网页控制硬件的交互过程,发现mqtt协议有很多种语言的封装,整个思路也很清晰,就是一个客户端进行发布和订阅+服务器中间代理的过程,于是开始学习使用MQTT框架搭建交互平台。
客户端使用了MQTTjs,服务器使用mosca(基于nodejs)。

QoS在MQTT中有(摘自 MQ 遥测传输 (MQTT) V31 协议规范 ):

MQTTjs只是支持了MQTT协议,并没有支持QoS,也就是说,只支持最低级别的“至多一次”(QoS0)。

在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。
这里只了解消息体,固定头和可变头并不需要我们手动写。
payload消息体包含CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE四种类型的消息:

(1)Connect    与服务器建立连接。
(2)Disconnect    与服务器断开TCP/IP会话。
(3)Subscribe    订阅。
(4)UnSubscribe    取消订阅。
(5)Publish    发送消息请求,发送完成后返回应用程序线程。
二、实现(具体的API稍后呈现)

      用户在使用CAT1模组MQTT协议对接自己的服务器,有时会遇到设备无法连接服务器问题(比如提示+ECMTCON:0,0,5连接服务器被拒绝,认证失败)。此时可以通过 标准的MQTT服务器 进行对比,因为用户自己的服务器一般加入校验信息,导致模组&MQTT服务器无法连接。

       Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本31和311,这里使用该服务器进行测试。针对该服务器更详细的介绍也可以参考 >可以的
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10572214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存