esp32接入巴法云,显示接入成功,平台上也显示设备已经连接,但发送数据的时候,esp32没有接收到,回调函数已经设置了,不知道问题出在哪里?
import time
import network
from umqtt.simple import MQTTClient
import machine
from machine import Timer
# 初始信息
wifiName = "@@@@"
wifiPassword = "######"
clientID = "$$$$$$$$$" # 密钥
myTopic = 'carESP32' # 主题
serverIP = "bemfa.com" # 服务器地址
port = 9501
def do_connect():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
wlan.connect(wifiName, wifiPassword)
while not wlan.isconnected():
pass
# 回调函数,收到服务器消息后会调用这个函数
def sub_cb(topic, msg):
print(topic, msg)
# ---- 添加 --------
if topic.decode("utf-8") == myTopic:
if msg.decode("utf-8") == "向前":
print("向前")
elif msg.decode("utf-8") == "向后":
print("向后")
# ---- 添加 --------
# 初始化mqtt连接配置
def connect_and_subscribe():
client = MQTTClient(clientID, serverIP, port)
client.set_callback(sub_cb)
client.connect()
print("连接成功")
client.subscribe(myTopic)
print("订阅成功")
return client
def restart_and_reconnect():
time.sleep(5)
machine.reset()
# 1. 联网
do_connect()
# 开始连接MQTT
try:
client = connect_and_subscribe()
tim1 = Timer(1) # 创建定时器1
tim1.init(period=20000, mode=Timer.PERIODIC,callback=lambda n:client.ping()) # 20秒间隔发送Ping,保持连接
except OSError as e:
restart_and_reconnect()
while True:
try:
client.wait_msg()
except OSError as e:
restart_and_reconnect()