【ESP8266 /ESP32】连接到自己的MQTT服务器并实现自动重连 基于micropython

工作准备:

  1. python3.7
  2. 一定量的python基础
  3. uPyCraft IDE 下载地址
  4. ESP32或ESP8266开发板
  5. MQTT服务器 (本教程没有建立MQTT服务器的教程)

下载固件:

连接板子: Tools → Serial→连接板子的COM端

Tools → board 选择你自己的板子型号

Tools → BurnFirmware 下载固件

在这里插入图片描述

建议新手直接默认参数然后下载

建立工程:

在这里插入图片描述
左侧是工程的文件树

文件夹名功能
device板子flash里的文件
sdsd卡里的文件
uPy_libmicropython常用库
workSpace工作区

第一次打开uPyCraft IDE时,workSpace路径并不存在,当用户点击workSpace时,会弹出路径选择对话框,选择好需要存放的路径,点击“选择文件夹”,即可创建workSpace目录

File→Examples里面还有很多例程可以借鉴
在这里插入图片描述

工作区建立好后:

我们去github下载一个mircopython官方的mqtt库 下载地址
(为什么又从github上下载一个库呢,软件不是自带吗?)

把simple.py复制一份到workSpace目录下
然后建立一份main.py

  • 如果要实现开机自动运行代码,程序一般都是放在main.py里,ESP开机后会先运行boot.py,然后自动运行main.py里的代码
  • 开机配置代码:
import machine

machine.freq()          # get the current frequency of the CPU
machine.freq(160000000) # ESP8266设置CPU频率到 160 MHz	如果是ESP32就改成machine.freq(240000000)
from simple import MQTTClient  #从simple引入MQTTClient类
import time
from machine import Timer	   #系统定时器
from micropython import const

连接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服务器了
在这里插入图片描述

连接MQTT服务器

保存用户变量

CLIENT_ID = "设备ID"
TOPIC = b"主题"
username='MQTT用户名'
password='MQTT用户密码'
server = "MQTT服务器IP或域名  看网站要求"
  def restart_and_reconnect():			#重启开发板
    print('Failed to connect to MQTT broker. Reconnecting...')
    time.sleep(10)
    machine.reset()
  
  def login_wqtt(CLIENT_ID,server,TOPIC,username,password):			#连接MQTT服务器
      c = MQTTClient(CLIENT_ID, server,0,username,password,keepalive=60)
      c.set_callback(sub_cb)                    #set callback
      c.connect()                               #connect mqtt
      c.subscribe(TOPIC)                        #client subscribes to a topic

      print("Connected to:%s, subscribed to:%s topic" % (server, TOPIC))
      print ("*********Star1********")
      time.sleep(0.1)
      return c
try:
  client=login_wqtt(CLIENT_ID,server,TOPIC,username,password)
  time.sleep(0.1)
  print ("*********Star2********")
except OSError as e:		
  restart_and_reconnect()        

OSError这里不懂可以去看python异常处理

接下来下载程序,重启开发板
串口返回代表成功连接服务器并订阅MQTT主题
在这里插入图片描述
如果没有连上服务器,尝试重启:
在这里插入图片描述
第二次尝试:
在这里插入图片描述
成功重连

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kamimiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值