mqtt — mqtt连接模块

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 在1999年发布。MQTT 最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。


MQTT 是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT 协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。


Paho MQTT 是 Eclipse 实现的基于 MQTT 协议的客户端,本软件包是在 Eclipse paho-mqtt 源码包的基础上设计的一套 MQTT 客户端程序。

该组件支持以下功能:

  • MQTT Connect

  • MQTT Subscribe

  • MQTT Publish

  • 可连接阿里云物联网平台

使用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# *_* coding: utf-8 *_*
import mqtt

# 初始化mqtt client
client = mqtt.client("haas")

# 定义subcribe的回调函数
def on_subcribe(topic,payload):
   print("on_subcribe: topic is:" + topic)
   print("on_subcribe: payload is:" + payload)

client.on_subcribe(on_subcribe)

# 设置用户名和密码
# client.username_pw_set()

# 建立mqtt连接
client.connect("100.81.153.167",1883,60)

# 订阅服务
client.subscribe("test/other/aiot",1)

# 发布服务
#client.publish("test/haas100/aiot","haas100 publish",1)

# 循环获取消息
while True:
   client.loop(1000)

client.disconnect()

class mqtt.Client[源代码]

Bases: object

初始化client类,获取mqtt client实例

参数

返回

client对象

on_subcribe(id, func)[源代码]

设置MQTT订阅回调函数

参数
  • id(int) – 注册的订阅回调ID

  • func(fucntion) – 订阅回调函数

返回

0

username_pw_set(username, pwd)[源代码]

设置用户名和密码

参数
  • username(str) – 用户名

  • pwd(str) – 密码

返回

0: 成功,其他: 失败

connect(host, port, interval)[源代码]

MQTT连接请求

参数
  • host(str) – 待连接主机

  • port(str) – 待连接端口号

  • interval(int) – 重试周期,单位为毫秒

返回

0: 成功,其他: 失败

publish(topic, payload, qos)[源代码]

MQTT发布主题

参数
  • topic(str) – MQTT发布的主题

  • payload(str) – MQTT发布的消息主题

  • qos(int) – 服务质量

返回

0: 成功,其他: 失败

subscribe(subtopic, qos)[源代码]

MQTT订阅主题

参数
  • subtopic(str) – MQTT订阅的主题

  • qos(int) – 服务质量

返回

0: 成功,其他: 失败

loop(timeout)[源代码]

MQTT等待响应

参数

timeout(int) – 等待时间

返回

0: 成功,其他: 失败

disconnect()[源代码]

断开MQTT连接

参数
  • url(str) – 请求的url

  • path(str) – 保存的文件路径

返回

0