首页 > 编程语言 >MQTT用python写的收消息例子

MQTT用python写的收消息例子

时间:2024-04-09 14:36:55浏览次数:30  
标签:logging RECONNECT python mqtt client MQTT 例子 reconnect

在MQTT官网给的 sub_wss.py 例子中修改

改写自己的用户名和密码

BROKER = '*******.ala.cn-hangzhou.emqxsl.cn'    //改成自己的连接地址

USERNAME = '**************' //用户名
PASSWORD = '*************'  //密码

注意这句是 改使用 v1 回调 API(与旧版本的库一起使用)。

原因:Release 2.0.0 包含重大更改;这意味着,如果没有一些(最小的)修改,为 v1.x 编写的代码将无法工作。由于 v2.0.0几天前才发布,大多数示例(包括您引用的示例)将无法工作。

client = mqtt.Client(client_id=CLIENT_ID, transport='websockets',callback_api_version=mqtt.CallbackAPIVersion.VERSION1)

完整代码

# python 3.6

import logging
import random
import time

#from paho.mqtt import client as mqtt_client
import paho.mqtt.client as mqtt

BROKER = '*******.ala.cn-hangzhou.emqxsl.cn'
PORT = 8084
TOPIC = "python-mqtt/wss"
# generate client ID with pub prefix randomly
CLIENT_ID = f'python-mqtt-wss-sub-{random.randint(0, 1000)}'
USERNAME = '********'
PASSWORD = '********'

FIRST_RECONNECT_DELAY = 1
RECONNECT_RATE = 2
MAX_RECONNECT_COUNT = 12
MAX_RECONNECT_DELAY = 60

FLAG_EXIT = False


def on_connect(client, userdata, flags, rc):
    if rc == 0 and client.is_connected():
        print("Connected to MQTT Broker!")
        client.subscribe(TOPIC)
    else:
        print(f'Failed to connect, return code {rc}')


def on_disconnect(client, userdata, rc):
    logging.info("Disconnected with result code: %s", rc)
    reconnect_count, reconnect_delay = 0, FIRST_RECONNECT_DELAY
    while reconnect_count < MAX_RECONNECT_COUNT:
        logging.info("Reconnecting in %d seconds...", reconnect_delay)
        time.sleep(reconnect_delay)

        try:
            client.reconnect()
            logging.info("Reconnected successfully!")
            return
        except Exception as err:
            logging.error("%s. Reconnect failed. Retrying...", err)

        reconnect_delay *= RECONNECT_RATE
        reconnect_delay = min(reconnect_delay, MAX_RECONNECT_DELAY)
        reconnect_count += 1
    logging.info("Reconnect failed after %s attempts. Exiting...", reconnect_count)
    global FLAG_EXIT
    FLAG_EXIT = True


def on_message(client, userdata, msg):
    print(f'Received `{msg.payload.decode()}` from `{msg.topic}` topic')


def connect_mqtt():
    client = mqtt.Client(client_id=CLIENT_ID, transport='websockets',callback_api_version=mqtt.CallbackAPIVersion.VERSION1)
    #client = mqtt_client.Client(CLIENT_ID, transport='websockets')
    client.tls_set(ca_certs='./emqxsl-ca.crt')
    client.username_pw_set(USERNAME, PASSWORD)
    client.on_connect = on_connect
    client.on_message = on_message
    client.connect(BROKER, PORT, keepalive=120)
    client.on_disconnect = on_disconnect
    return client


def run():
    logging.basicConfig(format='%(asctime)s - %(levelname)s: %(message)s',
                        level=logging.DEBUG)
    client = connect_mqtt()
    client.loop_forever()


if __name__ == '__main__':
    run()

测试

启动这个python程序

官网的 demo

 主题 

python-mqtt/wss

点订阅

 改主题为  python-mqtt/wss  。填写消息内容。点  发布  ,在python中就会收到这个消息

 

标签:logging,RECONNECT,python,mqtt,client,MQTT,例子,reconnect
From: https://www.cnblogs.com/hailexuexi/p/18123892

相关文章

  • python应援灯牌代码
    代码如下importpygameimportsysimportrandom#初始化Pygamepygame.init()#设置窗口尺寸WINDOW_WIDTH=800WINDOW_HEIGHT=600window_surface=pygame.display.set_mode((WINDOW_WIDTH,WINDOW_HEIGHT))pygame.display.set_caption('应援语跑马灯模拟')......
  • ludic 基于纯python 开发动态html 页面的框架
    ludic使用了htmx进行页面的处理,同时基于starlette提供asgiweb能力包含的特性基于python的无缝的htmx集成快速开发web基于python类型系统的类型组件基于starlette的异步搞性能web处理基于pythonf-strings的html构建基于主题的组件css样式添加说明目前ludic......
  • 深入学习Python (一)
    一、字面量在代码中,被写下来的固定的值,称之为字面量。二、字符串格式化语法“%占位符%”%变量f"内容{变量}"精度的控制我们可以使用辅助符号"m.n"来控制数据的宽度和精度m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效.n,控制小数点精度,要求是数字,会......
  • java计算机毕业设计基于微信小程序与python的智能办公【附源码+远程部署+程序+mysql】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着移动互联网技术的飞速发展,传统的办公模式正逐渐向智能化、移动化转型。微信小程序作为一种新型的应用形式,因其无需下载安装、即用即走的便捷性,已经成......
  • Python中的异常处理 异常是什么? 异常处理的语法 基本的异常处理示例 捕获多个异常 fin
    Python中的异常处理异常是什么?异常处理的语法基本的异常处理示例捕获多个异常finally语句自定义异常异常处理的最佳实践——《跟老吕学Python编程》附录资料Python中的异常处理异常是什么?异常处理的语法基本的异常处理示例Python捕获多个异常finally语句Py......
  • python对于excel的操作
    python可以通过开源框架openpyxl来对excel进行读写操作。基本概念:对于excel,其中的主要用到的元素如下:WorkBook:工作簿WorkSheet:sheet表Cell:单元格style:样式Border:框线Font:字体Alignment:对齐...helloworld的demo:fromopenpyxlimportWorkbook#一开始新建是存储在内......
  • 2024年第 6 期《Python 测试平台开发》进阶课程(4月23号开学)
    2024年第6期《Python测试平台开发》进阶课程主讲老师:上海-悠悠上课方式:微信群视频在线教学,方便交流本期上课时间:4月23号(周二、四晚上21:00-22:30)报名费:报名费3800一人(之前学过《python接口+测试开发》课程的同学可优惠!)联系微信/QQ:283340479课程环境:1.pycharm+python3.......
  • Python3 网络爬虫开发实战 第2版 (崔庆才) PDF 高清
    《Python3网络爬虫开发实战(第二版)》是由崔庆才所著的一本关于使用Python进行网络爬虫开发的书籍。概要网络爬虫基础:介绍网络爬虫的基本概念、工作原理和常见的应用场景。HTTP协议与Scrapy框架:解释HTTP协议的基本知识,以及如何使用Scrapy框架来构建和管理爬虫项......
  • 深入理解 WebSocket:实时双向通信的核心技术(python案例)
    引言WebSocket是一种在Web开发中广泛使用的通信协议,它提供了一种实时、双向的通信机制,允许客户端和服务器之间建立持久连接,实现高效的实时数据传输。本文将深入探讨WebSocket的工作原理、优势、应用场景以及使用示例,帮助读者全面了解WebSocket技术。什么是WebSocket?......
  • C#开发的绑定类型默认应用例子 - 开源研究系列文章
          这次在用C#编写一个看图软件小工具,然后其它的基本完成了,就是绑定看图软件到那些个图片扩展名的时候碰到了问题,就是如何将看图软件绑定图片文件的默认应用,以及解绑默认应用。这个涉及到注册表操作,但是找度娘和AI回答,都没得到良好的回复。于是就根据AI的提示,自己研究了......