如何更新ESP8266上的代码OTA保持配置

问题描述 投票:0回答:3

我有3个基于ESP8266的自制设备。它们中的每一个都适用于不同的应用程序,所有这些都只是为了爱好。

有时我只想对代码进行一些小改动,或者添加一个新功能,所以我一直在通过Web进行OTA更新。

每个板都有相同的代码,但每个板都有一个在代码上定义的唯一ID,以及一些可以从Web上的数据库访问的唯一配置。理想情况下,我可以更新板#01中的代码,该板将在数据库表上搜索启动时的先前配置,一切都会正常工作。

问题是,当代码改变时,ID(在代码上定义)丢失,我不想手动编译3个不同的二进制文件,每个板一个,其中ID作为它们之间的唯一区别。当然,我必须在第一次编写此板时执行此操作,但我不希望每次更新都执行此操作。

有没有办法更新代码OTA但保留在板上的ID?也许是一种在内存的非替换部分中写入此ID(甚至其他标志)的方法。

arduino esp8266 ota
3个回答
2
投票

你的ESP8266 has flash memory,即使没有力量也会持续存在。这是存储ESP8266固件的地方。

您可以使用EEPROM library在闪存中存储少量数据(4到4096字节之间)。 ESP8266没有真正的EEPROM - 这个库的名称是真正的Arduinos的保留。在ESP8266上,它只使用闪存的一小部分并假装它是一个EEPROM。

如果使用EEPROM库,请确保在写入数据后调用EEPROM.commit()EEPROM.end()以确保它实际存储在闪存中。这与它在Arduinos上使用的方式不同,Arduino示例通常不会这样做。

您还可以使用SPIFFS library将文件存储在闪存中 - 您可能只将所有配置信息存储在文件(或EEPROM空间)中,而不是将其保存在数据库中。


0
投票

为什么你不使用WiFi mac地址作为唯一ID?

所以你可以在任何板上更新一些代码,这不会丢失ID。


0
投票

好像你应该使用NodeMCU固件......你可以只更新你的Lua脚本OTA并更新你的模块,甚至不用重启!

© www.soinside.com 2019 - 2024. All rights reserved.