我是靠谱客的博主 腼腆鱼,最近开发中收集的这篇文章主要介绍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 比较

MQTTREST
TCP协议TCP协议
长连接短连接
适合做设备反向控制不适合做设备实时反向控制
实时性控制实时性控制不是很好
主要应用于各大物联网平台主要应用于各种 API

四、总结

  • 就我个人来说,MQTT 的使用非常方便,发布者和订阅者互不干扰,订阅者订阅了某个主题后,如果有这个主题,则会发送消息给订阅者,如果没有,则不会接受到消息,而发布者也就只管发布某个主题的消息而已,在各种,在物联网的通信方面应用前景很大。

五、参考资料

编写MQTT客户端程序——python

最后

以上就是腼腆鱼为你收集整理的python 编写客户端连接 MQTT 服务器一、pychar 下载第三库 paho-mqtt二、代码编写及显示结果三、MQTT 与 REST 比较四、总结五、参考资料的全部内容,希望文章能够帮你解决python 编写客户端连接 MQTT 服务器一、pychar 下载第三库 paho-mqtt二、代码编写及显示结果三、MQTT 与 REST 比较四、总结五、参考资料所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部