duda con ESP8266 guardar en EEPROM

Hola a todos soy nuevo desarrollando con arduino
quiero hacer un proyecto con ESP8266 y receptor 433MHZ

que al recibir el valor del control remoto guardarlo y poner una descripcion es decir :

59872323 identificarlo con un 22a

ya recibo un valor del receptor que es = 59872323 y lo guardo en EEPROM

imprimo los valores de EEPROM

for (int i = 0; i < EEPROM.lenght(); i++) 
  {
     lectura = EEPROM.read(i); 
  }

me arroja un valor de 146

es posible grabar ese numero en la memoria EEPROM

gracias por su comprension y apoyo

#include <RCSwitch.h>
#include <EEPROM.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
 Serial.begin(9600);
 EEPROM.begin(4096);
 mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
 Serial.print("INICIADO");
}

void loop() {
 
 if (mySwitch.available()) {
   int i = 0;  
   unsigned long valor;
   Serial.println("Received ");
   Serial.println( mySwitch.getReceivedValue() );
   Serial.print(" / ");
   Serial.print( mySwitch.getReceivedBitlength() );
   Serial.print("bit ");
   Serial.println("Protocol: ");
   Serial.println( mySwitch.getReceivedProtocol() );
   EEPROM.write(i,mySwitch.getReceivedValue());
   EEPROM.commit();
   valor= EEPROM.read(i);
   Serial.println(valor);

   mySwitch.resetAvailable();
 }
}

Moderador:
En el título no debe usarse la palabra Ayuda. Edita!!
Edita también el código (aunque sean pocas líneas) usando etiquetas como lo explican las normas.
Lee el link que te dejo.
Y para terminar, evita usar Mayúsculas. En cualquier foro su uso es como gritarnos. Asi que modifica usando minúsculas.
Normas del foro

No puedo responder a un código parcial, sería bueno que postearas todo tu código.

ya realice los cambios espero esa sea la forma correcta de solicitar apoyo gracias y una disculpa

Unsigned long usa 4 bytes y efectivamente debes descomponer el dato en bytes separados para guardarlo, y para recuperarlo leer los 4 bytes para posteriormente reconstruir el dato original.

Creo que hay ejemplos que tienen ya las funciones definidas para guardar y recuperar todos los tipos de datos.

Esto resuelve tus problemas.
EEPROM.get(address, dato) para leer y
EEPROM.put(address,dato) para guardar.

dato puede ser cualquier cosa, solo debes tener en cuanto cuantos bytes ocupa usando sizeof(dato).
En tu caso son 4 byte, de modo que i debe incrementarse cada 4 valores.

Mira los ejemplos de EEPROM.get y EEPROM.put para mas información

Te dejo el código modificado.

#include <RCSwitch.h>
#include <EEPROM.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
 Serial.begin(9600);
 EEPROM.begin(4096);
 mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
 Serial.print("INICIADO");
}

void loop() {
 
 if (mySwitch.available()) {
   int i = 0;  
   unsigned long valor;
   Serial.println("Received ");
   Serial.println( mySwitch.getReceivedValue() );
   Serial.print(" / ");
   Serial.print( mySwitch.getReceivedBitlength() );
   Serial.print("bit ");
   Serial.println("Protocol: ");
   Serial.println( mySwitch.getReceivedProtocol() );
   valor = mySwitch.getReceivedValue();
   EEPROM.put(i, valor);
   EEPROM.get(i, valor);
   Serial.println(valor);

   mySwitch.resetAvailable();
 }
}

Algo mas, no abuses del uso de la grabación/lectura en la misma dirección. Puedes dañar la EEPROM en dicha grupo de direcciones.

Entiendo, según el tipo de dato que tienen ese par de instrucciones en particular, escriben o leen el número de bytes necesarios, yo lo hacía tipo "old school" (byte a byte) jeje

Todos los días se aprende algo nuevo, muchas gracias.

La "Old school" sigue vigente pero es mucho mas fácil con put y get.
Si tienes una estructura o variables diferentes float, int, long, solo debes incrementar respetando el tamaño del tipo de variable y listo. Es muy fácil.