使用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 相关文章推荐
理解python多线程(python多线程简明教程)
Jun 09 Python
Python之PyUnit单元测试实例
Oct 11 Python
利用python求相邻数的方法示例
Aug 18 Python
对Tensorflow中的矩阵运算函数详解
Jul 27 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
pytorch标签转onehot形式实例
Jan 02 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
python使用建议与技巧分享(一)
Aug 17 Python
pycharm 代码自动补全的实现方法(图文)
Sep 18 Python
linux系统下pip升级报错的解决方法
Jan 31 Python
学会Python数据可视化必须尝试这7个库
Jun 16 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
php强制下载类型的实现代码
2011/04/21 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
Keras设置以及获取权重的实现
2020/06/19 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
销售简历自我评价
2014/01/24 职场文书
企业总经理职责
2014/02/02 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js