使用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基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 Python
实例讲解python中的协程
Oct 08 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
pybind11在Windows下的使用教程
Jul 04 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
使用Pytorch搭建模型的步骤
Nov 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代码
2012/07/14 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
javascript 三种编解码方式
2010/02/01 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
Python实现拼接多张图片的方法
2014/12/01 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
二年级学生期末评语
2014/12/26 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书