使用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 23 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
对python3 urllib包与http包的使用详解
May 10 Python
python之消除前缀重命名的方法
Oct 21 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
python 实现分组求和与分组累加求和代码
May 18 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
Python图像处理之图像拼接
Apr 28 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下获取客户端ip地址的函数
2010/03/15 PHP
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
php和asp语法上的区别总结
2019/05/12 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
Python中set与frozenset方法和区别详解
2016/05/23 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
运动会跳远广播稿
2014/02/04 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
Python if else条件语句形式详解
2022/03/24 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS