diff --git a/WifiControlSensor/EEPROM.ino b/WifiControlSensor/EEPROM.ino index 4653cb1..66c5325 100644 --- a/WifiControlSensor/EEPROM.ino +++ b/WifiControlSensor/EEPROM.ino @@ -1,14 +1,24 @@ /* EEPROM LAYOUT - "BOOTMODE;SSID;PASSWORD;HOSTNAME;MQTT_SERVER;MQTT_USERNAME;MQTT_PASSWD;MQTT_PORT;" + "BOOTMODE;SSID;PASSWORD;HOSTNAME;MQTT_SERVER;MQTT_USERNAME;MQTT_PASSWD;MQTT_PORT;IP_CONFIG;IP;GATEWAY;NETMASK;DNS1;DNS2;" BOOTMODE could be 0 for Setup, 1 for normal use, 2 for OTA + IP_CONFIG could be 0 for DHCP, 1 for static Setup mode is trigger by setting GPIO3 to ground or at first boot */ -int EepromSaveConfig(uint8_t bootMode, String ssid, String password, String host, String mqttServer, String mqttUser, String mqttPasswd, int mqttPort) { +int EepromSaveConfig(uint8_t bootMode, String ssid, String password, String host, + String mqttServer, String mqttUser, String mqttPasswd, + int mqttPort, int ip_config, String ip, String gw, + String mask, String dns, String dns2) { String eeprom; - eeprom = String(bootMode) + ";" + ssid + ";" + password + ";" + host + ";" + mqttServer + ";" + mqttUser + ";" + mqttPasswd + ";" + String(mqttPort) + ";"; + eeprom = String(bootMode) + ";" + ssid + ";" + password + ";" + + host + ";" + mqttServer + ";" + + mqttUser + ";" + mqttPasswd + ";" + + String(mqttPort) + ";" + + String(ip_config) + ";" + + ip + ";" + gw + ";" + mask + ";" + + dns + ";" + dns2 + ";"; if (eeprom.length() > CONFIG_EEPROM_SIZE ) return -EMSGSIZE; @@ -45,12 +55,15 @@ void readConfElement(char** element, int &i) { } -void EepromReadConfig(uint8_t &bootMode, char **ssid, char **password, char **host, char **mqttServer, char **mqttUser, char **mqttPasswd, int &mqttPort) { +void EepromReadConfig(uint8_t &bootMode, char **ssid, char **password, char **host, + char **mqttServer, char **mqttUser, char **mqttPasswd, + int &mqttPort, int &ip_config, char **ip, char **gw, + char **mask, char **dns, char**dns2) { int i = 2; uint8_t boot = EEPROM.read(0); - char *mqttPortString = ""; + char *tmpString = ""; if (boot == '1') { bootMode = BOOTMODE_NORMAL; @@ -68,6 +81,13 @@ void EepromReadConfig(uint8_t &bootMode, char **ssid, char **password, char **ho readConfElement(mqttServer, i); readConfElement(mqttUser, i); readConfElement(mqttPasswd, i); - readConfElement(&mqttPortString, i); - mqttPort = atoi(mqttPortString); + readConfElement(&tmpString, i); + mqttPort = atoi(tmpString); + readConfElement(&tmpString, i); + ip_config = atoi(tmpString); + readConfElement(ip, i); + readConfElement(gw, i); + readConfElement(mask, i); + readConfElement(dns, i); + readConfElement(dns2, i); } diff --git a/WifiControlSensor/WebServer.ino b/WifiControlSensor/WebServer.ino index 5a3fac8..1b05261 100644 --- a/WifiControlSensor/WebServer.ino +++ b/WifiControlSensor/WebServer.ino @@ -42,8 +42,14 @@ void WebHandleSetup() { char *mqttUser = ""; char *mqttPasswd = ""; int mqttPort = 1883; + int ip_config = 0; + char *ip = "192.168.0.123"; + char *gw = "192.168.0.1"; + char *mask = "255.255.255.0"; + char *dns = "8.8.8.8"; + char *dns2 = ""; - EepromReadConfig(mode, &confSsid, &confPassword, &confHost, &mqttServer, &mqttUser, &mqttPasswd, mqttPort); + EepromReadConfig(mode, &confSsid, &confPassword, &confHost, &mqttServer, &mqttUser, &mqttPasswd, mqttPort, ip_config, &ip, &gw, &mask, &dns, &dns2); server.send(200, "text/html", "