我是靠谱客的博主 腼腆鱼,最近开发中收集的这篇文章主要介绍python 编写客户端连接 MQTT 服务器一、pychar 下载第三库 paho-mqtt二、代码编写及显示结果三、MQTT 与 REST 比较四、总结五、参考资料,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
目录
- 一、pychar 下载第三库 paho-mqtt
- 二、代码编写及显示结果
- 1)固定消息发送
- 2)自定义消息发送
- 三、MQTT 与 REST 比较
- 四、总结
- 五、参考资料
说明:
本文基于上篇博客:详介 MQTT 服务器的搭建与客户端连接 ,下面来使用 python 编写客户端连接服务器,并实现消息的发布和订阅。
phthon 编写工具 pychar 安装步骤:https://zhuanlan.zhihu.com/p/108439489
一、pychar 下载第三库 paho-mqtt
- 按照上面链接内容,创建一个新项目。
- 创建完毕后,点击
File
——>Settings...
。
- 然后点击
Python Interpreter
,再点击+
添加包。
- 搜索
paho-mqtt
并选中,然后点击Install Package
安装包。
- 安装成功。
二、代码编写及显示结果
1)添加 py 文件
- 添加新的
Python Package
(右击hello
项目 ——>New
——>Python Package
)。
- 修改文件名(右击
_init_.py
文件 ——>Refactor
——>Rename...
)。
- 添加 py 文件(右击
hello
包 ——>New
——>Python File
)
- 准备完文件后,如下图所示:
1)固定消息发送
①代码编写
- client_send.py 编写如下代码:
import time
import sys
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
def on_subscribe(client,userdata,mid,granted_qos):
print("消息发送成功")
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_subscribe = on_subscribe
client.connect(host="192.168.43.98", port = 61613, keepalive=60)
# 订阅频道
time.sleep(1)
i = 0
#循环发布消息
while True:
try:
# 发布MQTT信息
sensor_data = "test" + str(i)
client.publish(topic="public", payload=sensor_data, qos=0)
time.sleep(5)
i += 1
except KeyboardInterrupt:
print("EXIT")
client.disconnect()
sys.exit(0)
client_accept.py 编写如下代码:
import time
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("连接成功")
print("Connected with result code " + str(rc))
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_message = on_message
client.connect(host="192.168.43.98", port = 61613, keepalive=60)
# 订阅频道
time.sleep(1)
# client.subscribe("public")
client.subscribe([("public", 0), ("test", 2)])
client.loop_forever()
②运行结果:
- 客户端 client_send 作为发布者,每间隔 5s 发布一条主题名为 public 的消息,客户端 client_accept 作为订阅者,订阅了主题名为 public 的消息。客户端 client_send 每发布一条消息,服务器就会将该消息发送给客户端 client_accept 。
- client_send:
2)自定义消息发送
①编写代码
- client_send.py 编写如下代码:
import sys
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
def on_subscribe(client,userdata,mid,granted_qos):
print("消息发送成功")
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_subscribe = on_subscribe
client.connect(host="192.168.43.98", port = 61613, keepalive=60)
# 订阅频道
time.sleep(1)
i = 0
while True:
sensor_data=input("请输入要发表消息内容(0表示退出):")
if(sensor_data=='0'):
break
try:
# 发布MQTT信息
client.publish(topic="weather", payload=sensor_data, qos=0)
time.sleep(5)
# i += 1
except KeyboardInterrupt:
print("EXIT")
client.disconnect()
sys.exit(0)
- client_accept.py 代码不用改变。
②运行结果:
- client_send.py:
- client_accept.py
- 服务器上的信息:
三、MQTT 与 REST 比较
MQTT | REST |
---|---|
TCP协议 | TCP协议 |
长连接 | 短连接 |
适合做设备反向控制 | 不适合做设备实时反向控制 |
实时性控制 | 实时性控制不是很好 |
主要应用于各大物联网平台 | 主要应用于各种 API |
四、总结
- 就我个人来说,MQTT 的使用非常方便,发布者和订阅者互不干扰,订阅者订阅了某个主题后,如果有这个主题,则会发送消息给订阅者,如果没有,则不会接受到消息,而发布者也就只管发布某个主题的消息而已,在各种,在物联网的通信方面应用前景很大。
五、参考资料
编写MQTT客户端程序——python
最后
以上就是腼腆鱼为你收集整理的python 编写客户端连接 MQTT 服务器一、pychar 下载第三库 paho-mqtt二、代码编写及显示结果三、MQTT 与 REST 比较四、总结五、参考资料的全部内容,希望文章能够帮你解决python 编写客户端连接 MQTT 服务器一、pychar 下载第三库 paho-mqtt二、代码编写及显示结果三、MQTT 与 REST 比较四、总结五、参考资料所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复