MQTT初识

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

1MQTT简介编辑

早在1999年,IBM的Andy Stanford-Clark博士以及Arcom公司ArlenNipper博士发明了MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)技术 [1]  。据Andy Stanford-Clark博士称,MQTT将在今年和明年呈现爆炸式增长。
MQTT的话题是我俩谈论开源物联网平台Pachube时提到的。Stanford-Clark认为Pachube很酷,其不足之处是不具备真正的推送功能。你需要不断不断轮询才能得到即时数据。这正是MQTT能够实现的,他提到了使用推送通信系统的石油管道检测系统。

MQTT应用编辑

IBM和St. Jude医疗中心通过MQTT开发了一套Merlin系统,该系统使用了用于家庭保健的传感器。St. Jude医疗中心设计了一个叫做Merlin@home的心脏装置,这种无线发射器可以用来监控那些已经植入复律-除颤器和起搏器(两者都是基本的传感器)的心脏病人。
该产品利用MQTT把病人的即时更新信息传给医生/医院,然后医院进行保存。这样的话,病人就不用亲自去医院检查心脏仪器了,医生可以随时查看病人的数据,给出建议,病人在家里就可以自行检查。
IBM称该发射器包括一个大型触摸屏,一个嵌入式键盘平台,以及一个Linux操作系统。
在未来几年,MQTT的应用会越来越广,值得关注。
通过MQTT协议,目前已经扩展出了数十个MQTT服务器端程序,可以通过PHP,JAVA,Python,C,C#等系统语言来向MQTT发送相关消息。
此外,国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议。其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息。据Cmstop主要负责消息推送的高级研发工程师 李文凯称,随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来MQTT会进入到我们生活的各各方面。
如果需要下载MQTT服务器端,可以直接去MQTT官方网站点击software进行下载MQTT协议衍生出来的各个不同版本。

MQTT特点

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
2、对负载内容屏蔽的消息传输;
3、使用 TCP/IP 提供网络连接;
4、有三种消息发布服务质量:
    • “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
    • “至少一次”,确保消息到达,但消息重复可能会发生。
    • “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;
个人感想 :mqtt与xmpp相比,mqtt更轻,其核心也是基于pubsub,更省电,更适合物联网。而xmpp侧重于聊天,复杂协议的传输。

08-10
### MQTT 协议详解 MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级通信协议,专为低带宽、高延迟或不可靠网络环境下的设备通信而设计。它通过 TCP/IP 协议栈进行数据传输,确保消息的可靠性有序性。协议的核心包括客户端(Client)、代理(Broker)、主题(Topic)消息服务质量(QoS)等级。MQTT 支持三种 QoS 等级:0(最多一次)、1(至少一次) 2(恰好一次),以满足不同场景下的消息传递需求[^1]。 ### 使用场景 MQTT 被广泛应用于物联网领域,包括但不限于智能家居、工业自动化、远程监控、车联网等。例如,在智能家居中,各种传感器执行器可以通过 MQTT 协议与中央控制系统通信,实现对家庭环境的智能控制。在工业自动化中,工厂设备可以利用 MQTT 协议上传状态信息,以便于进行远程维护故障诊断。此外,MQTT 还被用于车载系统中,如车辆位置信息的上报以及交通状况的实时更新[^4]。 ### 实现方法 实现 MQTT 协议通常涉及客户端服务器端的开发。客户端负责连接到 MQTT Broker 并订阅或发布消息,而服务器端则负责管理转发这些消息。开发者可以选择多种编程语言来实现 MQTT 客户端,包括 Java、Python C 等。开源项目如 Eclipse Mosquitto 提供了一个简单的 MQTT Broker 实现,适合测试小型项目使用。对于需要处理大规模连接的企业级应用,则可以考虑使用 HiveMQ 这样的商业解决方案。 ### 相关工具 为了简化 MQTT 协议的学习应用,市场上存在一系列工具资源。Eclipse Mosquitto 是一个免费开源的 MQTT Broker,适用于测试小型项目。HiveMQ 则是一个企业级的 MQTT Broker,能够支持百万级别的设备连接。MQTT X 是一款可视化 MQTT 客户端工具,非常适合用来测试消息的发送接收。Paho 客户端库提供了多种语言的支持,包括 Java、Python C 等,方便开发者快速集成 MQTT 功能到自己的应用中。WildFly 是一个开源的 Java EE 应用服务器,兼容 Jakarta EE 规范,也可以作为 MQTT 应用的后端平台。 ```python # 示例:使用 Paho-MQTT 客户端库连接到 MQTT Broker 并订阅主题 import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("sensor/temperature") def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("broker.hivemq.com", 1883, 60) client.loop_forever() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值