使用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中让MySQL查询结果返回字典类型的方法
Aug 22 Python
Python3实现从文件中读取指定行的方法
May 22 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
Python 的AES加密与解密实现
Jul 09 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
Python猴子补丁知识点总结
Jan 05 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
python函数中将变量名转换成字符串实例
May 11 Python
Pandas实现一列数据分隔为两列
May 18 Python
Python中的全局变量如何理解
Jun 04 Python
pandas map(),apply(),applymap()区别解析
Feb 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
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
详解PHP归并排序的实现
2016/10/18 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python定时器使用示例分享
2014/02/16 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python之父谈Python的未来形式
2016/07/01 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
怎样声明接口
2014/09/19 面试题
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
预备党员党支部意见
2015/06/02 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python