struct strConfig {
  String ssid;
  String password;
  byte  IP[4];
  byte  Netmask[4];
  byte  Gateway[4];
  boolean dhcp;
  String ntpServerName;
  long Update_Time_Via_NTP_Every;
  long timezone;
  boolean daylight;
  String DeviceName;
  boolean AutoTurnOff;
  boolean AutoTurnOn;
  byte TurnOffHour;
  byte TurnOffMinute;
  byte TurnOnHour;
  byte TurnOnMinute;
  byte LED_R;
  byte LED_G;
  byte LED_B;
}   config;


/*
**
** CONFIGURATION HANDLING
**
*/






void WriteConfig()
{

  Serial.println("Writing Config");
  EEPROM.write(0,'C');
  EEPROM.write(1,'F');
  EEPROM.write(2,'G');

  EEPROM.write(16,config.dhcp);
  EEPROM.write(17,config.daylight);
  
  EEPROMWritelong(18,config.Update_Time_Via_NTP_Every); // 4 Byte

  EEPROMWritelong(22,config.timezone);  // 4 Byte


  EEPROM.write(26,config.LED_R);
  EEPROM.write(27,config.LED_G);
  EEPROM.write(28,config.LED_B);

  EEPROM.write(32,config.IP[0]);
  EEPROM.write(33,config.IP[1]);
  EEPROM.write(34,config.IP[2]);
  EEPROM.write(35,config.IP[3]);

  EEPROM.write(36,config.Netmask[0]);
  EEPROM.write(37,config.Netmask[1]);
  EEPROM.write(38,config.Netmask[2]);
  EEPROM.write(39,config.Netmask[3]);

  EEPROM.write(40,config.Gateway[0]);
  EEPROM.write(41,config.Gateway[1]);
  EEPROM.write(42,config.Gateway[2]);
  EEPROM.write(43,config.Gateway[3]);


  WriteStringToEEPROM(64,config.ssid);
  WriteStringToEEPROM(96,config.password);
  WriteStringToEEPROM(128,config.ntpServerName);

  EEPROM.write(300,config.AutoTurnOn);
  EEPROM.write(301,config.AutoTurnOff);
  EEPROM.write(302,config.TurnOnHour);
  EEPROM.write(303,config.TurnOnMinute);
  EEPROM.write(304,config.TurnOffHour);
  EEPROM.write(305,config.TurnOffMinute);
  WriteStringToEEPROM(306,config.DeviceName);
  


  EEPROM.commit();
}
boolean ReadConfig()
{

  Serial.println("Reading Configuration");
  if (EEPROM.read(0) == 'C' && EEPROM.read(1) == 'F'  && EEPROM.read(2) == 'G' )
  {
    Serial.println("Configurarion Found!");
    config.dhcp =   EEPROM.read(16);

    config.daylight = EEPROM.read(17);

    config.Update_Time_Via_NTP_Every = EEPROMReadlong(18); // 4 Byte

    config.timezone = EEPROMReadlong(22); // 4 Byte

    config.LED_R = EEPROM.read(26);
    config.LED_G = EEPROM.read(27);
    config.LED_B = EEPROM.read(28);

    config.IP[0] = EEPROM.read(32);
    config.IP[1] = EEPROM.read(33);
    config.IP[2] = EEPROM.read(34);
    config.IP[3] = EEPROM.read(35);
    config.Netmask[0] = EEPROM.read(36);
    config.Netmask[1] = EEPROM.read(37);
    config.Netmask[2] = EEPROM.read(38);
    config.Netmask[3] = EEPROM.read(39);
    config.Gateway[0] = EEPROM.read(40);
    config.Gateway[1] = EEPROM.read(41);
    config.Gateway[2] = EEPROM.read(42);
    config.Gateway[3] = EEPROM.read(43);
    config.ssid = ReadStringFromEEPROM(64);
    config.password = ReadStringFromEEPROM(96);
    config.ntpServerName = ReadStringFromEEPROM(128);
    
    
    config.AutoTurnOn = EEPROM.read(300);
    config.AutoTurnOff = EEPROM.read(301);
    config.TurnOnHour = EEPROM.read(302);
    config.TurnOnMinute = EEPROM.read(303);
    config.TurnOffHour = EEPROM.read(304);
    config.TurnOffMinute = EEPROM.read(305);
    config.DeviceName= ReadStringFromEEPROM(306);
    return true;
    
  }
  else
  {
    Serial.println("Configurarion NOT FOUND!!!!");
    return false;
  }
}