@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: