使用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库抓取58手机维修信息
Nov 21 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
浅谈Python处理PDF的方法
Nov 10 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
python ddt数据驱动最简实例代码
Feb 22 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
python+django+rest框架配置创建方法
Aug 31 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Python函数基本使用原理详解
Mar 19 Python
python2.7使用scapy发送syn实例
May 05 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 session有效期session.gc_maxlifetime
2011/04/20 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
laravel model 两表联查示例
2019/10/24 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
动态为事件添加js代码示例
2009/02/15 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python求出0~100以内的所有素数
2018/01/23 Python
Python模块文件结构代码详解
2018/02/03 Python
pycharm安装和首次使用教程
2018/08/27 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
大学共青团员个人自我评价
2014/04/16 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
职位说明书范文
2014/05/07 职场文书
领导干部学习心得体会
2016/01/23 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
js 实现验证码输入框示例详解
2022/09/23 Javascript