使用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实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
python通过floor函数舍弃小数位的方法
Mar 17 Python
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
一篇文章快速了解Python的GIL
Jan 12 Python
Python实现的求解最小公倍数算法示例
May 03 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
基于python操作ES实例详解
Nov 16 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
Python嵌入C/C++进行开发详解
Jun 09 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验证码 附调用方法
2016/06/02 PHP
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python 学习笔记
2008/12/27 Python
Python字符串处理函数简明总结
2015/04/13 Python
python超简单解决约瑟夫环问题
2015/05/12 Python
python实现合并两个数组的方法
2015/05/16 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python机器学习之神经网络(二)
2017/12/20 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
Python函数参数分类原理详解
2020/05/28 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
晚会邀请函范文
2014/01/24 职场文书
情人节寄语大全
2014/04/11 职场文书
股东合作协议书范本
2014/04/14 职场文书
意向协议书范本
2014/04/23 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
小学见习报告
2014/10/31 职场文书
个人年终总结开头
2015/03/06 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang
Java实现学生管理系统(IO版)
2022/02/24 Java/Android