使用python实现mqtt的发布和订阅


Posted in Python onMay 05, 2019

需要安装的python库

使用python编写程序进行测试MQTT的发布和订阅功能。首先要安装:pip install paho-mqtt

测试发布(pub)

我的MQTT部署在阿里云的服务器上面,所以我在本机上编写了python程序进行测试。

然后在shell里面重新打开一个终端,订阅一个主题为“chat” mosquitto_sub -t chat

在本机上测试远程的MQTT的发布功能就是把自己作为一个发送信息的人,当自己发送信息的时候,所有订阅过该主题(topic)的对象都将收到自己发送的信息。

mqtt_client.py
# encoding: utf-8
import paho.mqtt.client as mqtt
HOST = "101.200.46.138"
PORT = 1883
def test():
  client = mqtt.Client()
  client.connect(HOST, PORT, 60)
  client.publish("chat","hello liefyuan",2) # 发布一个主题为'chat',内容为‘hello liefyuan'的信息
  client.loop_forever()
if __name__ == '__main__':
  test()

发布/订阅测试

# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
MQTTHOST = "101.200.46.138"
MQTTPORT = 1883
mqttClient = mqtt.Client()
# 连接MQTT服务器
def on_mqtt_connect():
  mqttClient.connect(MQTTHOST, MQTTPORT, 60)
  mqttClient.loop_start()
# publish 消息
def on_publish(topic, payload, qos):
  mqttClient.publish(topic, payload, qos)
# 消息处理函数
def on_message_come(lient, userdata, msg):
  print(msg.topic + " " + ":" + str(msg.payload))
# subscribe 消息
def on_subscribe():
  mqttClient.subscribe("/server", 1)
  mqttClient.on_message = on_message_come # 消息到来处理函数
def main():
  on_mqtt_connect()
  on_publish("/test/server", "Hello Python!", 1)
  on_subscribe()
  while True:
    pass
if __name__ == '__main__':
  main()

注解函数:

client.connect(self, host, port, keepalive, bind_address)
client.publish(self, topic, payload, qos, retain)
client.subscribe(self, topic, qos)

测试订阅(sub)

在本机上编写程序测试订阅功能,就是让自己的程序作为一个接收者,同一个主题没有发布(pub)信息的时候,就自己一直等候。

# encoding: utf-8
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
  print("Connected with result code "+str(rc))
  client.subscribe("chat")
def on_message(client, userdata, msg):
  print(msg.topic+" " + ":" + str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("www.liefyuan.top", 1883, 60)
client.loop_forever()

总结

以上所述是小编给大家介绍的使用python实现mqtt的发布和订阅,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Zabbix实现微信报警功能
Oct 09 Python
Python读写docx文件的方法
May 08 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
Django实现基于类的分页功能
Oct 31 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Python模块相关知识点小结
Mar 09 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
如何用 Python 制作一个迷宫游戏
Feb 25 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Apr 08 Python
教你怎么用python实现字符串转日期
May 24 Python
Python向excel中写入数据的方法
May 05 #Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 #Python
python使用MQTT给硬件传输图片的实现方法
May 05 #Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 #Python
Python实现数据结构线性链表(单链表)算法示例
May 04 #Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 #Python
Python实现将HTML转成PDF的方法分析
May 04 #Python
You might like
Cygwin中安装PHP方法步骤
2015/07/04 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
PHP递归算法的简单实例
2019/02/28 PHP
js字符编码函数区别分析
2008/06/05 Javascript
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python找出最小的K个数实例代码
2018/01/04 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
详解Python3 基本数据类型
2019/04/19 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
python 8种必备的gui库
2020/08/27 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
学生发电厂实习自我鉴定
2013/09/22 职场文书
运动会广播稿200米
2014/01/27 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
小学运动会报道稿
2015/07/22 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS