ESP32用micro编程python使用mqtt协议通信一体化类分享

类集成了定时器进行封装,用这个类使用mqtt协议,只需要传入对应参数就可以用面向对象的思想进行编程,开发起来十分方便。

代码如下:

from machine import Timer
from simple import MQTTClient
import network
import ujson as json


# ** 类注解
#    本类将MicroPython官方提供的MQTTClient类与定时器进行封装,方便使用者调用
#    构造方法参数说明
#****mqttAdd:mqtt服务器的IP地址
#****mqttPort:mqtt服务器用的端口 通常是1883
#****mqttId:mqtt连接服务器所有的Id,即身份证,注意此选项在整个项目中不能重复
#            即不能同时又相同Id的两个连接  连接向服务器,否则会挤掉线
#****mqtt_willTopic: 遗嘱消息主题,当掉电或者遇到意外情况时,使用本类创建mqtt
#    的连接实例将会发送主题是mqtt_willTopic的遗嘱消息,方便服务器做出掉线的逻辑
#    处理。
#****TimerSeq:ESP32定时器号,默认为0
#
#********  制作者 藏锋2024/4/30  ********
#


class MQTT_TIMER():
    def __init__(self,mqttAdd:str,mqttPort:int,mqttId:str,mqtt_willTopic:str,check_time:int,,TimerSeq:int=0):
        self.mqttAdd=mqttAdd
        self.mqttPort=mqttPort
        self.mqttId=mqttId
        self.mqtt_willTopic=mqtt_willTopic
        self.mqtt=MQTTClient(mqttId,mqttAdd,mqttPort)
        self.initMqtt()
        self.Tim=Timer(TimerSeq)
        self.connectMqtt()
        self.check_time=check_time

    def initMqtt(self):
        self.mqtt.set_last_will(self.mqtt_willTopic,self.mqttId)
        self.mqtt.set_callback(self.message_arrived)
    def connectMqtt(self):
        self.mqtt.connect()
    def mqtt_recv(self,Tim):
        self.mqtt.check_msg()

    def message_arrived(self,topic,msg):
        #写你的逻辑
        pass

    def start_mqtt(self):
        self.Tim.init(period=self.check_time,mode=Timer.PERIODIC,callback=self.mqtt_recv)
    def subscribe(self,topic):
        self.mqtt.subscribe(topic)
    
这样封装好后,传入参数,用对象调用先调用connectMqtt(),再调用start_mqtt()方法就可进行你订阅的主题的收,就可以进行相关的操作和处理,用subscribe()就可以发布相关主题的内容。

直接就可以用了(simple类网上随便都能找到)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值