qq_43712965 2023-04-10 11:32 采纳率: 60%
浏览 10
已结题

求帮助:micropython运行esp32,连接到了WiFi,电脑笔记本的,是连接到WiFi,同一个WiFi,电脑上下载了mqttx,同时可以和emqx建立连接,但是也esp32却不能连接本地服务器

问题代码:

>>> %Run -c $EDITOR_CONTENT ip
network config: ('192.168.0.111', '255.255.255.0', '192.168.0.1', '192.168.1.1')
Traceback (most recent call last):
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/449320790186121.png "#left")

  File "<stdin>", line 37, in <module>
  File "umqtt/simple.py", line 68, in connect
OSError: [Errno 113] ECONNABORTED
>>> 

如图所示:

img


所应用的软件:

img


防火墙状态:但不确定关着了么

img

多次尝试:更换代码

img

img


具体代码:
方案一:

import time
from machine import Pin  # ---- 添加 --------
import network
from umqtt.simple import MQTTClient


def do_connect():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('TP    5555G', '2580.xuan')
        i = 1
        while not wlan.isconnected():
            print("正在链接...{}".format(i))
            i += 1
            time.sleep(1)
    print('network config:', wlan.ifconfig())


def sub_cb(topic, msg): # 回调函数,收到服务器消息后会调用这个函数
    print(topic, msg)
    # ---- 添加 --------
    if topic.decode("utf-8") == "ledctl" and msg.decode("utf-8") == "on":
        led_pin.value(1)
    elif topic.decode("utf-8") == "ledctl" and msg.decode("utf-8") == "off":
        led_pin.value(0)
    # ---- 添加 --------


# 1. 联网
do_connect()

# 2. 创建mqt
c = MQTTClient("umqtt_client","192.168.0.103")  # 建立一个MQTT客户端
c.set_callback(sub_cb)  # 设置回调函数
c.connect()  # 建立连接
c.subscribe(b"ledctl")  # 监控ledctl这个通道,接收控制命令

# ---- 添加 --------
# 3. 创建LED对应Pin对象
led_pin = Pin(2, Pin.OUT)
# ---- 添加 --------

while True:
    c.check_msg()
    time.sleep(1)

方案二:

import time
from machine import Pin  
import network
from umqttsimple import MQTTClient
 
def do_connect():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('TP    5555G', '2580.xuan')
        i = 1
        while not wlan.isconnected():
            print("正在链接...{}".format(i))
            i += 1
            time.sleep(1)
    print('network config:', wlan.ifconfig())
 
def sub_cb(topic, msg): 
    print(topic, msg)
    
    if topic.decode("utf-8") == "ledctl" and msg.decode("utf-8") == "on":
        led_pin.value(1)
    elif topic.decode("utf-8") == "ledctl" and msg.decode("utf-8") == "off":
        led_pin.value(0)
 
do_connect()
 
c = MQTTClient("umqtt_client","192.168.0.103")  
c.set_callback(sub_cb)  
c.connect()  
c.subscribe(b"ledctl")  
 
led_pin = Pin(2, Pin.OUT)
 
while True:
    try:
        c.check_msg()
    except OSError as e:
        print("error:", e)
        c.connect()
    time.sleep(1)

方案三:

import network
from umqtt.simple import MQTTClient
 
# 设置WiFi连接信息
ssid = 'TP    5555G'
password = '2580.xuan'
 
# 设置MQTT连接信息
mqtt_server = '192.168.0.103'
mqtt_port = 1883
mqtt_user = 'admin'
mqtt_password = 'duanwensheng123'
mqtt_topic = 'your_mqtt_topic'
 
# 连接WiFi
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(ssid, password)
while not sta_if.isconnected():
    pass
 
# 连接MQTT
client = MQTTClient("esp32", mqtt_server, port=mqtt_port, user=mqtt_user, password=mqtt_password)
client.connect()
 
  

结果都连不上上面的服务器

img

以上这个问题怎么解决,怎么连接上

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-10 14:03
    关注
    • 这篇博客: 【ESP8266 /ESP32】连接到自己的MQTT服务器并实现自动重连 基于micropython中的 连接WIFI 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • WQTT_START = 1
      SSID="KAMI123"      #WIFI  ID
      PASSWORD="Q123"  #WIFI PASSWORD
      def connectWifi(SSID,PASSWORD):
          global wlan
          wlan=network.WLAN(network.STA_IF)         #创建wlan对象
          wlan.active(True)                         #激活网络接口
          wlan.disconnect()                         #断开最后连接的WiFi
          wlan.connect(SSID,PASSWORD)                 #连接WIFI
          print("*********WIFI LOADING*********")  
          time.sleep(0.1)
          while(wlan.ifconfig()[0]=='0.0.0.0'):
            time.sleep(1)
          while wlan.isconnected() == False:			#等待连接成功
            pass
          print("*********WIFI OK*********")
      connectWifi(SSID,PASSWORD)  
      

      写完后把文件拖到device区就可以自动下载,重启板子生效

      连接成功的话串口调试助手会返回 WIFI OK字样 接下来我们可以尝试连接MQTT服务器了
      在这里插入图片描述

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 4月10日

悬赏问题

  • ¥20 该学习哪个编程语言? AI会取代程序员吗?
  • ¥15 ensp如何拼通IP地址
  • ¥15 saber软件导入Ibis模型报错
  • ¥15 商城生产日期批次库存问题
  • ¥15 esp8266控制共阳极wrgb灯板无法关闭所有led灯
  • ¥100 python读取速度问题
  • ¥15 stm32f407使用DMA问题
  • ¥15 您好 这个API接口该怎么弄 网站搭建好了 API也有 现在就不知道该怎么填写API 不知道怎么用
  • ¥88 用uniapp写一个多端的程序,用到高德地图,用高德的JSAPI吗?
  • ¥20 关于#c++#的问题:水果店管理系统