Skip to main content
added 5941 characters in body; edited title
Source Link

Why is EEPROM commit int values not registering. Help please int values?

This is inside an esp8266 async webserver server.on method. My EEPROM.begin is in setup function. OnlyInitially, only the first put within a block becomes committed . Now, nothing is registering after I implemented the sizeof(int) inside addresses.

The intention is to store int data passed thru http post per relay pin [total of 9 pins]. The program then uses the data to perform on a relay:

EEPROM commit int values not registering. Help please

This is inside an esp8266 async webserver server.on method. My EEPROM.begin is in setup function. Only the first put within a block becomes committed .

The intention is to store int data passed thru http post per relay pin. The program then uses the data to perform on a relay:

Why is EEPROM commit not registering int values?

This is inside an esp8266 async webserver server.on method. My EEPROM.begin is in setup function. Initially, only the first put within a block becomes committed . Now, nothing is registering after I implemented the sizeof(int) inside addresses.

The intention is to store int data passed thru http post per relay pin [total of 9 pins]. The program then uses the data to perform on a relay:

added 5941 characters in body; edited title
Source Link

EEPROM commit only applies the first putint values not registering. Help please

       if(jsonDoc["delayOn"].as<int>() <= 255 && jsonDoc["delayOff"].as<int>() <= 255 && jsonDoc["delayUnitOn"].as<int>() <= 2 && jsonDoc["delayUnitOff"].as<int>() <= 2 && 
         jsonDoc["mode"].as<int>() <= 1 && jsonDoc["blink"].as<int>() <= 1 && 
         jsonDoc["timeOnHour"].as<int>() <= 23 && jsonDoc["timeOnMinute"].as<int>() <= 59 && 
         jsonDoc["timeOffHour"].as<int>() <= 23 && jsonDoc["timeOffMinute"].as<int>() <= 59) {

        int val;
         int addr_init = (relay*eepromSlotsPerRelayPin)*sizeof(int);
        
        val = jsonDoc["blink"].as<int>();
        EEPROM.put(relay*eepromSlotsPerRelayPinaddr_init,val);
        if(jsonDoc["blink"].as<int>()==1){      //0=off,1=on        

          val = jsonDoc["mode"].as<int>();
          EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin5*sizeof(int)+5),val);
          
          
          if (jsonDoc["mode"].as<int>()==0){ //blink mode

            val = jsonDoc["delayOn"].as<int>();
            EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin1*sizeof(int)+1),val);
            val = jsonDoc["delayOff"].as<int>();
            EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin3*sizeof(int)+3),val);
            //1=minute,0=second,2=hour
            val = jsonDoc["delayUnitOn"].as<int>();
            EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin2*sizeof(int)+2),val);
            val = jsonDoc["delayUnitOff"].as<int>();
            EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin4*sizeof(int)+4),val);
            EEPROM.commitend();
                            
          }else if(jsonDoc["mode"].as<int>()==1){ //time switch mode

            val = jsonDoc["timeOnHour"].as<int>();
            EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin6*sizeof(int)+6),val);
            val = jsonDoc["timeOnMinute"].as<int>();
            EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin7*sizeof(int)+7),val);
            val = jsonDoc["timeOffHour"].as<int>();
            EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin8*sizeof(int)+8),val);
            val = jsonDoc["timeOffMinute"].as<int>();
            EEPROM.put(addr_init+(relay*eepromSlotsPerRelayPin9*sizeof(int)+9),val);
            EEPROM.commitend();
          }
          else {
            request->send(412, "text/plain", "unknown mode");
            return;
          }
        }
      }
      else {
        request->send(412, "text/plain", "a parameter is not within limits");            
        return;
      }        
      
      //initBlinkPinObjs
      int addr_init;
      int val,uom;
      for(int i = 0; i<maxRelayPins; i++) {
        bPinObjs[i].pin = relayPins[i];
        //EEPROM Slot per Relay dataStruct
        //0=>enable, 1=>durationOn, 2=>durationOnTimeMeasure,  
        //3=>durationOff, 4=>durationOffTimeMeasure
        //5=>mode, 6=>timeOnHour, 7=>timeOnMinute, 
        //8=>timeOffHour, 9=>timeOffMinute

        addr_init = (i*eepromSlotsPerRelayPin)*sizeof(int);
        
        val = 0;
        EEPROM.get(addr_init,val);
       bPinObjs[i].enable = val;

        val = 0;
        EEPROM.get(addr_init+(5*sizeof(int)),val);
        bPinObjs[i].mode = val;

        val = 0;
        EEPROM.get(addr_init+(6*sizeof(int)),val);
        bPinObjs[i].timeOnHour=val;

        val = 0;
        EEPROM.get(addr_init+(7*sizeof(int)),val);
        bPinObjs[i].timeOnMinute=val;

        val = 0;
        EEPROM.get(addr_init+(8*sizeof(int)),val);
        bPinObjs[i].timeOffHour = val;

        val = 0;
        EEPROM.get(addr_init+(9*sizeof(int)),val);
        bPinObjs[i].timeOffMinute = val;
        
        //delayOn
        //convert to millisec            
        uom = 0;
        EEPROM.get(addr_init+(2*sizeof(int)),uom);
        switch(uom){
          case 0:
            bPinObjs[i].durationOn=0;
            val = 0;
            EEPROM.get(addr_init+(1*sizeof(int)),val);
            bPinObjs[i].durationOn = val*1000;
          break;
          case 1:
            bPinObjs[i].durationOn=0;
            val = 0;
            EEPROM.get(addr_init+(1*sizeof(int)),val);
            bPinObjs[i].durationOn = val*60000;
          break;
          case 2:
            bPinObjs[i].durationOn=0;
            val = 0;
            EEPROM.get(addr_init+(1*sizeof(int)),val);
            bPinObjs[i].durationOn = val*3600000;
          break;
          default:
          break;
        }       
        //delayOff
        //convert to millisec
        uom = 0;
        EEPROM.get(addr_init+(4*sizeof(int)),uom);
        switch(uom){
          case 0:
            bPinObjs[i].durationOff = 0;
            val = 0;
            EEPROM.get(addr_init+(3*sizeof(int)),val);
            bPinObjs[i].durationOff = val*1000;
          break;
          case 1:
            bPinObjs[i].durationOff = 0;
            val = 0;
            EEPROM.get(addr_init+(3*sizeof(int)),val);
            bPinObjs[i].durationOff = val*60000;
          break;
          case 2:
            bPinObjs[i].durationOff = 0;
            val = 0;
            EEPROM.get(addr_init+(3*sizeof(int)),val);
            bPinObjs[i].durationOff = val*3600000;
          break;
          default:
          break;
        }    
      }
--JSON INPUT printed from server--

relay:0
blink:1
mode:1
delayOn:56
delayOff:2
delayUnitOn:0
delayUnitOff:0
timeOnHour:5
timeOnMinute:56
timeOffHour:7
timeOffMinute:48
OUTPUT printed from server:
--Objects content--
Size of INT:4
---------0--------- init addr: 0
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------1--------- init addr: 40
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------2--------- init addr: 80
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------3--------- init addr: 120
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------4--------- init addr: 160
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------5--------- init addr: 200
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------6--------- init addr: 240
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------7--------- init addr: 280
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------8--------- init addr: 320
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
  • commit,end after every put
  • EEPROM.begin(512) then commit & end on every put
  • add delays
  • use end only instead of commit
  • add address range for sizeof(int)

EEPROM commit only applies the first put. Help please

        int val;
                    
        val = jsonDoc["blink"].as<int>();
        EEPROM.put(relay*eepromSlotsPerRelayPin,val);
        if(jsonDoc["blink"].as<int>()==1){              

          val = jsonDoc["mode"].as<int>();
          EEPROM.put((relay*eepromSlotsPerRelayPin)+5,val);
          
          
          if (jsonDoc["mode"].as<int>()==0){ //blink mode

            val = jsonDoc["delayOn"].as<int>();
            EEPROM.put((relay*eepromSlotsPerRelayPin)+1,val);
            val = jsonDoc["delayOff"].as<int>();
            EEPROM.put((relay*eepromSlotsPerRelayPin)+3,val);
            //1=minute,0=second,2=hour
            val = jsonDoc["delayUnitOn"].as<int>();
            EEPROM.put((relay*eepromSlotsPerRelayPin)+2,val);
            val = jsonDoc["delayUnitOff"].as<int>();
            EEPROM.put((relay*eepromSlotsPerRelayPin)+4,val);
            EEPROM.commit();
                            
          }else if(jsonDoc["mode"].as<int>()==1){ //time switch mode

            val = jsonDoc["timeOnHour"].as<int>();
            EEPROM.put((relay*eepromSlotsPerRelayPin)+6,val);
            val = jsonDoc["timeOnMinute"].as<int>();
            EEPROM.put((relay*eepromSlotsPerRelayPin)+7,val);
            val = jsonDoc["timeOffHour"].as<int>();
            EEPROM.put((relay*eepromSlotsPerRelayPin)+8,val);
            val = jsonDoc["timeOffMinute"].as<int>();
            EEPROM.put((relay*eepromSlotsPerRelayPin)+9,val);
            EEPROM.commit();
          }
  • commit,end after every put
  • EEPROM.begin(512) then commit & end on every put
  • add delays
  • use end only instead of commit

EEPROM commit int values not registering. Help please

       if(jsonDoc["delayOn"].as<int>() <= 255 && jsonDoc["delayOff"].as<int>() <= 255 && jsonDoc["delayUnitOn"].as<int>() <= 2 && jsonDoc["delayUnitOff"].as<int>() <= 2 && 
         jsonDoc["mode"].as<int>() <= 1 && jsonDoc["blink"].as<int>() <= 1 && 
         jsonDoc["timeOnHour"].as<int>() <= 23 && jsonDoc["timeOnMinute"].as<int>() <= 59 && 
         jsonDoc["timeOffHour"].as<int>() <= 23 && jsonDoc["timeOffMinute"].as<int>() <= 59) {

        int val;
        int addr_init = (relay*eepromSlotsPerRelayPin)*sizeof(int);
        
        val = jsonDoc["blink"].as<int>();
        EEPROM.put(addr_init,val);
        if(jsonDoc["blink"].as<int>()==1){ //0=off,1=on        

          val = jsonDoc["mode"].as<int>();
          EEPROM.put(addr_init+(5*sizeof(int)),val);
          
          
          if (jsonDoc["mode"].as<int>()==0){ //blink mode

            val = jsonDoc["delayOn"].as<int>();
            EEPROM.put(addr_init+(1*sizeof(int)),val);
            val = jsonDoc["delayOff"].as<int>();
            EEPROM.put(addr_init+(3*sizeof(int)),val);
            //1=minute,0=second,2=hour
            val = jsonDoc["delayUnitOn"].as<int>();
            EEPROM.put(addr_init+(2*sizeof(int)),val);
            val = jsonDoc["delayUnitOff"].as<int>();
            EEPROM.put(addr_init+(4*sizeof(int)),val);
            EEPROM.end();
                            
          }else if(jsonDoc["mode"].as<int>()==1){ //time switch mode

            val = jsonDoc["timeOnHour"].as<int>();
            EEPROM.put(addr_init+(6*sizeof(int)),val);
            val = jsonDoc["timeOnMinute"].as<int>();
            EEPROM.put(addr_init+(7*sizeof(int)),val);
            val = jsonDoc["timeOffHour"].as<int>();
            EEPROM.put(addr_init+(8*sizeof(int)),val);
            val = jsonDoc["timeOffMinute"].as<int>();
            EEPROM.put(addr_init+(9*sizeof(int)),val);
            EEPROM.end();
          }
          else {
            request->send(412, "text/plain", "unknown mode");
            return;
          }
        }
      }
      else {
        request->send(412, "text/plain", "a parameter is not within limits");            
        return;
      }        
      
      //initBlinkPinObjs
      int addr_init;
      int val,uom;
      for(int i = 0; i<maxRelayPins; i++) {
        bPinObjs[i].pin = relayPins[i];
        //EEPROM Slot per Relay dataStruct
        //0=>enable, 1=>durationOn, 2=>durationOnTimeMeasure,  
        //3=>durationOff, 4=>durationOffTimeMeasure
        //5=>mode, 6=>timeOnHour, 7=>timeOnMinute, 
        //8=>timeOffHour, 9=>timeOffMinute

        addr_init = (i*eepromSlotsPerRelayPin)*sizeof(int);
        
        val = 0;
        EEPROM.get(addr_init,val);
       bPinObjs[i].enable = val;

        val = 0;
        EEPROM.get(addr_init+(5*sizeof(int)),val);
        bPinObjs[i].mode = val;

        val = 0;
        EEPROM.get(addr_init+(6*sizeof(int)),val);
        bPinObjs[i].timeOnHour=val;

        val = 0;
        EEPROM.get(addr_init+(7*sizeof(int)),val);
        bPinObjs[i].timeOnMinute=val;

        val = 0;
        EEPROM.get(addr_init+(8*sizeof(int)),val);
        bPinObjs[i].timeOffHour = val;

        val = 0;
        EEPROM.get(addr_init+(9*sizeof(int)),val);
        bPinObjs[i].timeOffMinute = val;
        
        //delayOn
        //convert to millisec            
        uom = 0;
        EEPROM.get(addr_init+(2*sizeof(int)),uom);
        switch(uom){
          case 0:
            bPinObjs[i].durationOn=0;
            val = 0;
            EEPROM.get(addr_init+(1*sizeof(int)),val);
            bPinObjs[i].durationOn = val*1000;
          break;
          case 1:
            bPinObjs[i].durationOn=0;
            val = 0;
            EEPROM.get(addr_init+(1*sizeof(int)),val);
            bPinObjs[i].durationOn = val*60000;
          break;
          case 2:
            bPinObjs[i].durationOn=0;
            val = 0;
            EEPROM.get(addr_init+(1*sizeof(int)),val);
            bPinObjs[i].durationOn = val*3600000;
          break;
          default:
          break;
        }       
        //delayOff
        //convert to millisec
        uom = 0;
        EEPROM.get(addr_init+(4*sizeof(int)),uom);
        switch(uom){
          case 0:
            bPinObjs[i].durationOff = 0;
            val = 0;
            EEPROM.get(addr_init+(3*sizeof(int)),val);
            bPinObjs[i].durationOff = val*1000;
          break;
          case 1:
            bPinObjs[i].durationOff = 0;
            val = 0;
            EEPROM.get(addr_init+(3*sizeof(int)),val);
            bPinObjs[i].durationOff = val*60000;
          break;
          case 2:
            bPinObjs[i].durationOff = 0;
            val = 0;
            EEPROM.get(addr_init+(3*sizeof(int)),val);
            bPinObjs[i].durationOff = val*3600000;
          break;
          default:
          break;
        }    
      }
--JSON INPUT printed from server--

relay:0
blink:1
mode:1
delayOn:56
delayOff:2
delayUnitOn:0
delayUnitOff:0
timeOnHour:5
timeOnMinute:56
timeOffHour:7
timeOffMinute:48
OUTPUT printed from server:
--Objects content--
Size of INT:4
---------0--------- init addr: 0
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------1--------- init addr: 40
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------2--------- init addr: 80
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------3--------- init addr: 120
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------4--------- init addr: 160
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------5--------- init addr: 200
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------6--------- init addr: 240
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------7--------- init addr: 280
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
---------8--------- init addr: 320
[0]enable: 0
[1]durationOn: 0
[2]durationOnUom: 0
[3]durationOff: 0
[4]durationOffUom: 0
[5]mode: 0
[6]onHr: 0
[7]onMin: 0
[8]offHr: 0
[9]offMin: 0
  • commit,end after every put
  • EEPROM.begin(512) then commit & end on every put
  • add delays
  • use end only instead of commit
  • add address range for sizeof(int)
added 192 characters in body
Source Link

The intention is to store int data passed thru http post per relay pin. The program then uses the data to perform on a relay:

  • blink
  • switch on/off based on time (hour,minute) ...

I've tried all sorts to fix:

I've tried all sorts to fix:

The intention is to store int data passed thru http post per relay pin. The program then uses the data to perform on a relay:

  • blink
  • switch on/off based on time (hour,minute) ...

I've tried all sorts to fix:

deleted 6 characters in body
Source Link
jsotola
  • 1.6k
  • 2
  • 13
  • 22
Loading
Source Link
Loading