毕业设计之MQTT Client

MQTT协议说明

MQTT(消息队列遥测传输)是IBM开发的一个即时通讯协议,是当今物联网的网络层的重要组成部分,该协议的开发也主要是面向物联网的。MQTT协议是为大量计算能力有限,且工作在低带宽,不可靠网络的远程传感器设。

MQTT协议特点

  1. 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
  2. 对负载内容屏蔽的消息传输;
  3. 使用 TCP/IP 提供网络连接;
  4. 有三种消息发布服务质量:
  5. “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
  6. “至少一次”,确保消息到达,但消息重复可能会发生。
  7. “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
  8. 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
  9. 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;

MQTT 函数说明

Arduino可以使用pubsubclient库,用于连接订阅EMQTT搭建的Mqtt Broker(mqtt代理服务器),接收和发送Mqtt消息。

创建mqtt客户端

PubSubClient(ip,port,[callback],client,[stream])

连接打开服务器

boolean connect (clientID, username, password)

断开连接

void disconnect ()

发送消息

int publish (topic, payload)

点阅主题

boolean subscribe (topic, [qos])

取消订阅

boolean unsubscribe (topic)

判断是否连接

int connected ()

获取连接状态

int state ()

设置代理服务器IP地址和端口

PubSubClient setServer (server, port)

设置回调

PubSubClient setCallback (callback)

设置客户端信息

PubSubClient setClient (client)

设置消息存储流

PubSubClient setStream (stream)