使用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 BeautifulSoup使用方法详解
Nov 21 Python
Django中的“惰性翻译”方法的相关使用
Jul 27 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
在Python中增加和插入元素的示例
Nov 01 Python
Django 路由控制的实现代码
Nov 08 Python
pytorch 输出中间层特征的实例
Aug 17 Python
python numpy 常用随机数的产生方法的实现
Aug 21 Python
python3实现绘制二维点图
Dec 04 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
python 多线程爬取壁纸网站的示例
Feb 20 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 JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
浅谈PHP的反射机制
2016/12/15 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
nginx 设置多个站跨域
2021/03/09 Servers
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
vue 实现全选全不选的示例代码
2018/03/29 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
Python利用ansible分发处理任务
2015/08/04 Python
Python异常处理例题整理
2019/07/07 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
国际象棋商店:The Chess Store
2018/07/09 全球购物
悬崖上的金鱼姬观后感
2015/06/15 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
Python合并pdf文件的工具
2021/07/01 Python
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers
Python软件包安装的三种常见方法
2022/07/07 Python