Storing Struct in EEPROM Arduino ESP8266

@OP

Here is a solution for you using NodeMCU and exteranl AT24C512 EEPROM for storing data.

I have tested by writing one array (serverPort[]) and then reading it back. Looks all right!

The Codes:

#include<Wire.h>

char APMode[] = "0";                          // OPMode = 0, APMode = 1
char id[] = "00000000";                    // Device ID
char businessName[] = "Joey Salads";           // Business Name
char businessPhone[] = "(123) 123-4567";    // Support Phone Number
char network[] = "12345678901234567890";   // OPMode SSID to connect to
char password[] = "12345678901234567890";  // OPMode SSID Password
char apSSID[] = "12345678901234567890";    // APMode SSID
char APpass[] = "12345678901234567890";    // APMode SSID Password
char frequency[] = "12000";                // How often to send data in ms
char alarmThresh[] = "123";                // Alarm Threshold
char serverProtocol[] = "http://";         // Server Protocol, HTTP or HTTPS
char serverURL[] = "example.com/";    // Server URL
char serverURI[] = "api/alarmMonitor.php"; // URL of data reporting
char serverPort[] = "65535";               // Server Port: HTTP = 80, HTTPS = 443
char serverPortR[10];
int addrEE = 0x0100;

void setup()
{
  Serial.begin(115200);
  Wire.begin(4, 5); //SDA = GPIO-4/D2, SCL=GPIO-5
  //--------------------------------------------
  Wire.beginTransmission(0x52);
  Wire.write(highByte(addrEE));
  Wire.write(lowByte(addrEE));
  Wire.write(serverPort, sizeof(serverPort));
  byte busStatus = Wire.endTransmission();
  //Serial.println(busStatus);
  delay(5);

  Wire.beginTransmission(0x52);
  Wire.write(highByte(addrEE));
  Wire.write(lowByte(addrEE));
  Wire.endTransmission();

  Wire.requestFrom(0x52, 5);
  // byte x = Wire.read();
  // Serial.print(x, HEX);

  for (int i = 0; i < 5; i++)
  {
    serverPortR[i] = Wire.read();
    Serial.print(serverPortR[i]);
  }
}

void loop()
{

  Serial.print("OK");
  delay(1000);

}

The Screenshot:
sm106.png

sm106.png