Closed KnightOfNih closed 4 years ago
Hi @KnightOfNih,
It seems that you forgot to call EEPROM.begin()
.
I updated the documentation accordingly.
Best regards, Benoit
Thanks Benoit! This really helps me out. I'll try it today.
Added EEPROM.begin(512) to the setup function but same result. 1 2 3 reboot, 1 2 3 reboot
void setup() {
Serial.begin(115200);
EEPROM.begin(512);
EepromStream eepromStream(0, 256);
...
Tried a few variations to no effect.
On a related note, I have been able to get basic EEPROM read/write to work by following this tutorial so it doesn't feel like a board issue.
I've read your program several times, but I don't see where it sets the value of doc["num"]
; it seems that it only reads it.
Can you double-check this?
If it's still not working:
deserializeJson()
JsonDocument
to the serial portSigh ... actually setting the value would be critical, wouldn't it? I must have removed it when I was refactoring. At any rate, it works! I verified the EEPROM.begin(512);
portion was also required. Final code below.
#include <Arduino.h>
#include <ArduinoJson.h>
#include <StreamUtils.h>
StaticJsonDocument<256> doc; // Document we will hold the num in
int num = 0; // Simple counter
void setup() {
Serial.begin(115200);
EEPROM.begin(512);
EepromStream eepromStream(0, 256);
deserializeJson(doc, eepromStream);
if(doc["num"]){
Serial.println("Loaded doc's num value.");
num = doc["num"];
} else {
Serial.println("No 'num' variable in eeprom.");
}
}
void loop() {
num++;
Serial.println(num);
if((num % 3 == 0)){
Serial.println("Saving ...");
EepromStream eepromStream(0, 256);
doc["num"] = num;
serializeJson(doc, eepromStream);
eepromStream.flush(); // (for ESP)
Serial.println("Rebooting ...");
ESP.restart();
}
delay(1000);
}
Thank you very much for all your help btw. Is there a way to contribute to your github repo or buy you a beer? Thank you again!
@KnightOfNih, thank you for posting the working code; I'm pretty sure it will help other users.
If you want to support the project, please consider purchasing my book Mastering ArduinoJson.
Hi Team,
I'm attempting to follow the tutorial "How to store a JSON document in EEPROM" but can't seem to get it to save and then load correctly.
I'm performing a simple read, increment counter, save, reboot pattern. Does ESP.reset() also remove the EEPROM?
The libraries were added via PlatformIO.
Platform:
Code:
Output:
Build: