Как обновить код OTA на ESP8266 с сохранением конфигурации - PullRequest
0 голосов
/ 02 марта 2019

У меня 3 самодельных устройства на базе ESP8266.Каждый из них предназначен для отдельного приложения, и все они на самом деле только для хобби.

Иногда я просто хочу внести небольшое изменение в код или добавить новую функциональность, так что я былработа над обновлениями OTA через Интернет.

Каждая плата имеет один и тот же код, но каждый имеет уникальный идентификатор, определенный в коде, и некоторую уникальную конфигурацию, к которой они могут получить доступ из базы данных в Интернете.В идеале, я мог бы обновить код на плате # 01, чтобы эта плата при запуске запускала поиск в таблице базы данных предыдущей конфигурации, и все работало бы хорошо.

Проблема в том, что при изменении кода идентификатор (который определен в коде) потерян, и я не хочу компилировать вручную 3 разных двоичных файла, по одному для каждой платы, с идентификатором в качестве единственной разницы между ними.Конечно, я должен сделать это при первом программировании этой платы, но я не хочу делать это при каждом обновлении.

Есть ли способ обновить код OTA, но сохранить идентификатор надоска?Возможно, способ записать этот идентификатор (или даже другие флаги) в незаменяемый раздел памяти.

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Ваш ESP8266 имеет флэш-память , которая сохраняется даже без питания.Здесь хранится прошивка для ESP8266.

Вы можете использовать библиотеку EEPROM для хранения небольших объемов данных (от 4 до 4096 байт) во флэш-памяти.ESP8266 не имеет настоящего EEPROM - название этой библиотеки является пережитком настоящего Arduinos.На ESP8266 он просто использует небольшую часть флэш-памяти и делает вид, что это EEPROM.

Если вы используете библиотеку EEPROM, убедитесь, что вы вызываете EEPROM.commit() или EEPROM.end() после записи данных, чтобы убедиться, чтоэто на самом деле хранится во флэш-памяти.Это отличается от того, как оно используется в Arduinos, и примеры Arduino обычно этого не делают.

Вы также можете использовать библиотеку SPIFFS для хранения файлов во флэш-памяти - вы можете просто сохранитьвсю информацию о конфигурации в файле (или в пространстве EEPROM), а не в своей базе данных.

0 голосов
/ 07 марта 2019

Похоже, вы должны были использовать прошивку NodeMCU ... Вы можете просто обновить OTA-скрипты Lua и обновить свои модули даже без перезагрузки!

0 голосов
/ 02 марта 2019

почему Вы не используете MAC-адрес Wi-Fi в качестве уникального идентификатора?

Таким образом, Вы можете обновить некоторый код на любой доске, и при этом идентификатор не потеряется.

...