#创建一个客户端实例
Client(client_id="", clean_session=True, userdata=None, protocol=MQTTv311)
#其中
client_id="",客户连接到代理的时候,使用的唯一客户端id,如果这个id是空的或者没有,会随机生成一个,
clean_session=True
清空数据 确定客户端类型,当时真的时候,代理将在断开的时候删除有关此客户端的所有信息
假的话 客户端是一个持久的客户端,断开连接后,订阅和排队消息将会保留。
userdata 用户自定义数据
protocol 用户定义的MQTT协议版本
import paho.mqtt.client as mqtt
mqttc = mqtt.Client()
例子
重新初始化
reinitialise(client_id="", clean_session=True, userdata=None)
将客户端重置为他的起始状态
eg:
mqttc.reinitialise()
Option functions:
这些函数用来修改客户端的设置行为
MAX_INFLIGHT_MESSAGES_SET()
用来设置最大消息数,默认为20,增加这个值会消耗更多的内存,可以增加吞吐量
max_inflight_messages_set(self, inflight)
TLS_SET()
tls_set(ca_certs, certfile=None, keyfile=None, cert_reqs=ssl.CERT_REQUIRED,
tls_version=ssl.PROTOCOL_TLSv1, ciphers=None)
配置网络加密和身份验证,启用ssl/tls
USERNAME_PW_SET()
username_pw_set(username, password=None)
设置用户名和密码
WILL_SET()
will_set(topic, payload=None, qos=0, retain=False)
如果客户端不断开连接和不是调用disconnet()。代理将代表他发布消息
Connect / reconnect / disconnect
connect(host, port=1883, keepalive=60, bind_address="")
连接,将客户端连接到代理
host
远程代理的主机名或者是ip地址
port
服务器主机的网络端口
keepalive
与代理通信之间允许的最长时间(秒)。如果没有交换其他消息,则控制客户端向代理发送ping消息的速率。
bind_address
假定存在多个接口时,要将此客户端绑定到的本地网络接口的ip地址。
mqttc.connect("iot.eclipse.org")
CONNECT_SRV()
connect_srv(domain, keepalive=60, bind_address="")
使用SRVDNS查找连接到代理以获取代理地址
reconnect()
使用先前提供的详细信息重新连接到代理
disconnect()
断开连接
loop(timeout=1.0, max_packets=1)
定期调用处理网络事件
This call waits in select() until the network socket is available for reading or writing, if appropriate, then handles the incoming/outgoing data
loop_start()
loop_stop(force=False)
循环开始,循环停止,
这些函数实现了网络循环的线程接口
mqttc.connect("iot.eclipse.org")
mqttc.loop_start()
while True:
temperature = sensor.blocking_read()
mqttc.publish("paho/temperature", temperature)
PUBLISH()
publish(topic, payload=None, qos=0, retain=False)
这将导致消息被发送到代理,随后从代理发送到订阅匹配主题的任何客户端。
topic
发布消息的主题。
payload=None
要发送的实际信息。如果没有给予,或设置为无将使用零长度消息。
qos
使用的服务质量
retain
保留消息
订阅,取消订阅
subscribe(topic, qos=0)
可以订阅一个或者多个主题
subscribe("my/topic", 2)
指定订阅主题的字符串和订阅所需的服务质量级别。默认为0。
subscribe(("my/topic", 1))
元组
subscribe([("my/topic", 0), ("another/topic", 2)])
允许在单个订阅命令中使用多个主题订阅