Greetings to everyone. Please consider me a "NOOB" on this, so be patient
I have a project, i want to build a device that let me turn on/off devices remotly. So with an arduino uno R3 + ethernet shield (esp8266 based) i want to build a web server, with a basic authentication (usr/pass) and manage 2 relays; i have done that part, i have a functional device.
But now, i want to go for more, and im stuck. I want to change IP, MASK, Gateway and, occasionally the mac address,... and if I can user and password too, like a low price router o network device.
So i found some code on this forum, i just forgot the relay control part and im only triying to success with the IP change from the HTML code (web server). I have found the eeprom.h library, and a some code, but the post chance was closed (topic: 120 days old).
I will left the code i adapted and the error im receiving...
Sketch:
#include <EEPROM.h>
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
IPAddress ip(192, 168, 1, 250);
IPAddress subnet(255, 255, 254, 0);
IPAddress gateway(192, 168, 1, 1);
EthernetServer server(80);
void setup() {
ShieldSetup();
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.begin(9600);
Â
}
void ShieldSetup() {
 int idcheck = EEPROM.read(0);
 if (idcheck != ID){
 }
 if (idcheck == ID){
  Â
   for (int i = 0; i < 4; i++){
     ip[i] = EEPROM.read(i+7);
   }
   for (int i = 0; i < 4; i++){
     subnet[i] = EEPROM.read(i+11);
   }
   for (int i = 0; i < 4; i++){
     gateway[i] = EEPROM.read(i+15);
   }
 }    Â
 Ethernet.begin(mac, ip);
}
void loop() {
Â
     EthernetClient client = server.available();
     if (client) {
     TextFinder finder(client );
     while (client.connected()) {   Â
     if (client.available()) {
     Â
       if( finder.find("GET /") ) {
       Â
         if (finder.findUntil("setup", "\n\r")){
         Â
         if (finder.findUntil("SBM", "\n\r")){
           byte SET = finder.getValue();
         Â
             while(finder.findUntil("DT", "\n\r")){
               int val = finder.getValue();
               // if val from "DT" is between 1 and 6 the according value must be a MAC value.
               if(val >= 1 && val <= 6) {
                 mac[val - 1] = finder.getValue();
               }
               // if val from "DT" is between 7 and 10 the according value must be a IP value.
               if(val >= 7 && val <= 10) {
                 ip[val - 7] = finder.getValue();
               }
               // if val from "DT" is between 11 and 14 the according value must be a MASK value.
               if(val >= 11 && val <= 14) {
                 subnet[val - 11] = finder.getValue();
               }
               // if val from "DT" is between 15 and 18 the according value must be a GW value.
               if(val >= 15 && val <= 18) {
                 gateway[val - 15] = finder.getValue();
               }
             }
           // Now that we got all the data, we can save it to EEPROM
           //for (int i = 0 ; i < 6; i++){
             //EEPROM.write(i + 1,mac[i]);
           //}
           for (int i = 0 ; i < 4; i++){
             EEPROM.write(i + 7, ip[i]);
           }
           for (int i = 0 ; i < 4; i++){
             EEPROM.write(i + 11, subnet[i]);
           }
           for (int i = 0 ; i < 4; i++){
             EEPROM.write(i + 15, gateway[i]);
           }
           EEPROM.write(0, 0x92);
          }
         // and from this point on, we can start building our setup page
         // and show it in the client's browser.
         client.println("HTTP/1.1 200 OK");
         client.println("Content-Type: text/html");
         client.println();
         for (int i = 0; i < 4; i++)
           {
           strcpy_P(buffer, (char*)pgm_read_word(&(string_table0[i])));
           client.print( buffer );
           }
         for (int i = 0; i < 3; i++)
           {
           strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[i])));
           client.print( buffer );
           }
         client.print(mac[0],HEX);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[3])));
         client.print( buffer );
         client.print(mac[1],HEX);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[4])));
         client.print( buffer );
         client.print(mac[2],HEX);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[5])));
         client.print( buffer );
         client.print(mac[3],HEX);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[6])));
         client.print( buffer );
         client.print(mac[4],HEX);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[7])));
         client.print( buffer );
         client.print(mac[5],HEX);
         for (int i = 0; i < 4; i++)
           {
           strcpy_P(buffer, (char*)pgm_read_word(&(string_table2[i])));
           client.print( buffer );
           }
         client.print(ip[0],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table2[4])));
         client.print( buffer );
         client.print(ip[1],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table2[5])));
         client.print( buffer );
         client.print(ip[2],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table2[6])));
         client.print( buffer );
         client.print(ip[3],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table3[0])));
         client.print( buffer );
         client.print(subnet[0],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table3[1])));
         client.print( buffer );
         client.print(subnet[1],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table3[2])));
         client.print( buffer );
         client.print(subnet[2],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table3[3])));
         client.print( buffer );
         client.print(subnet[3],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[0])));
         client.print( buffer );
         client.print(gateway[0],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[1])));
         client.print( buffer );
         client.print(gateway[1],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[2])));
         client.print( buffer );
         client.print(gateway[2],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[3])));
         client.print( buffer );
         client.print(gateway[3],DEC);
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[4])));
         client.print( buffer );
         for (int i = 0; i < 7; i++)
           {
           strcpy_P(buffer, (char*)pgm_read_word(&(string_table5[i])));
           client.print( buffer );
           }
         strcpy_P(buffer, (char*)pgm_read_word(&(string_table4[5])));
         client.print( buffer );
         client.println();
         client.println();
        Â
(F("<tr><td><font color=\"red\" size=\"2\"
face=\"Verdana\"> You can not change the MAC
address</font></td></tr></table>
"));
     }}}}
   delay(1);
   client.stop();
 }
 }
Error (at least one of them): Marked on the line:
void ShieldSetup() {
 int idcheck = EEPROM.read(0);
 if (idcheck != ID){ <------ ERROR
'ID' was not declared in this scope
Maybe its an ambitious goal to me, (too high over my possibilities or skills, but but a guy says : "your only real obstacle is yourself", so thats why im posting... keep trying.
Thank you