摘要:用户删除已完成,但加载用户失败。 。 。 。 写入用户错误。 用户写入完成并重新启动。 。 。 请注意,如果您的升级代码在发送时太长,则需要分段发送。 该代码仅说明了非分段代码的升级过程。 在测试过程中,我们发现发送汉字会出现乱码。
Arduino平台上有很多用于ESP8266开发的开发库。 您还可以在 Arduino 上找到许多 esp8266 OTA 的解决方案。 最近突然对Mircopython产生了兴趣,想写一个运行在Mircopython上的esp8266的程序。 ,然后过程中查了很多资料,但一直没搞明白如何在Mircopython平台上OTA升级esp8266固件。 这就是为什么我创建了一个随机替代方案,它可以很好地为爱好者提供一个小的参考想法。 并直接进入正题。
使用 uPyCraft 编写和编辑代码。 uPyCraft 下载链接:https://pan.baidu.com/s/1HARl7J3fy0J11I_FHG8fCg 提取码:5u4k
第一次插入 在开发版本中,会自动要求刷新 Mircopython 固件。 选择设置并单击“确定”或从菜单中运行“工具”→“固件写入”。
使用uPyCraft工具写入后,设备文件夹将是esp8266寄存器的根目录。 设备目录下只有一个 boot.py 文件,每次 esp8266 启动时都会创建一个辅助文件。 您必须运行该文件一次,然后上传 simple.py 和 index0.py 文件。 simple.py 文件是一个 MQTT 连接库,直接位于 uPy_lib/umqtt 目录中,可以拖动到设备目录。 所有代码也如下所示。
boot.py:
# 每次启动时都会执行此文件(包括从 deepsleep 唤醒-启动) #import esp#esp.osdebug(None)import gcimport os#import webrepl#webrepl.start() gc.collect( )base = "0"尝试: file = open("base.ini","r")base = file.read() file.close()异常: file = open("base.ini", "w") file.write("0") file.close() if Base == "1": print("加载用户 1...") try: os.remove("index0.py") print ("删除用户 0已完成") 异常: print("删除用户 0 失败") importindex1index1.connectWiFi()else : print("正在加载用户 0...") try: os.remove("index1.py") print( "删除用户 1已完成") 异常: print("删除用户 1 失败") importindex0index0.connectWiFi()
simple.py:
import usocket assocketimport ustruct as struct#from ubinascii import hexlifyclass MQTTException( Exception) : 路径类 MQTTClient: def __init__(自身, client_id,服务器,端口= 0,用户=无,密码=无,keepalive = 0,ssl = False,ssl_params = {}):如果端口== 0:端口= 8883如果ssl else 1883 self.client_id = client_id sock。 =无 self.addr = socket.getaddrinfo(服务器, 端口)[0][-1] self.ssl = ssl self.ssl_params = ssl_params self.pid = 0 self.cb =无 self.user = 用户本人 。 pswd = 密码 self.keepalive = 保持活动 self.lw_topic = 无 self.lw_msg = 无 self.lw_qos = 0 self.lw_retain = False def _send_str(self, s): self.sock.write(struct.pack("!H " , len(s))) self.sock.write(s) def _recv_len(self): n = 0 sh = 0 while 1: b = self.sock.read(1)[0] n |= (b & 0x7f )
评论前必须登录!
注册