使用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 30 Python
浅谈Python单向链表的实现
Dec 24 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
python实现抖音点赞功能
Apr 07 Python
eclipse创建python项目步骤详解
May 10 Python
通过PHP与Python代码对比的语法差异详解
Jul 10 Python
python 字典的打印实现
Sep 26 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
NumPy统计函数的实现方法
Jan 21 Python
python add_argument()用法解析
Jan 29 Python
Python实现分数序列求和
Feb 25 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 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读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
js玩一玩WSH吧
2007/02/23 Javascript
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
python抓取文件夹的所有文件
2018/02/27 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
一套英文Java笔试题面试题
2016/04/21 面试题
应届生煤化工求职信
2013/10/21 职场文书
班班通校本培训方案
2014/03/12 职场文书
先进个人自荐书
2015/03/06 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python