Here is the code:
//insert of module's
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
MDNSResponder mdns;
// input of credentials
const char* ssid = "********";//
const char* password = "******";//
ESP8266WebServer server(80);
String webPage = "";
//setting of GPIO pins
int gpio4_pin = 12;//P4
int gpio2_pin = 4;//P3
IPAddress ip(192, 168, 2, 67); //
IPAddress gateway(192, 168, 2, 1);
IPAddress subnet(255, 255, 255, 0);
//creation of webserver
void setup(void) {
webPage += "<h1>WIFI Irrigation system Web Server</h1><p>Socket #1 <a href=\"socket1On\"><button>ON</button></a> <a href=\"socket1Off\"><button>OFF</button></a></p>";
// preparing GPIOs
pinMode(gpio4_pin, OUTPUT);
digitalWrite(gpio4_pin, LOW);
pinMode(gpio2_pin, OUTPUT);
digitalWrite(gpio2_pin, LOW);
//setting static ip
Serial.begin(115200);
Serial.println("Setting static ip to : ");
Serial.println(ip);
Serial.println("Connecting to the Internet...");
WiFi.config(ip, gateway, subnet);
WiFi.mode(WIFI_STA);
delay(1000);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
//begining of server
if (mdns.begin("esp8266", ip)) {
Serial.println("MDNS responder started");
}
digitalWrite(gpio2_pin, LOW);
digitalWrite(gpio4_pin, LOW);
server.on("/", []() {
server.send(200, "text/html", webPage);
});
//Valve loop here is where I am getting most of my errors
if (checkUrl("/server1on",server)){
server.on("/socket1On", [](){
server.send(200, "text/html", webPage);
digitalWrite(gpio4_pin, HIGH);
digitalWrite(gpio2_pin, LOW);
delay(1000);
digitalWrite(gpio2_pin, HIGH);
digitalWrite(gpio4_pin, LOW);
delay(1000);
digitalWrite(gpio4_pin, LOW);
digitalWrite(gpio2_pin, LOW);
delay(1000);
});
}
//End of valve loop
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
}
The side boolean function:
//side boolean function that finds and then checks the url so that we can see if its the one we want
boolean checkUrl(String ending, ESP8266WebServer s) {
int len = ending.length();
String url = s.uri();
String test = (url.substring(url.length()-len,url.length()));
Serial.println (test);
if(url.substring(url.length()-len,url.length()) == ending) {
return true;
} else return false;
}
and the stack error along with the translation:
3fff0380: ffffffff 3ffeea18 3ffee9f4 40207100
3fff0390: 00000004 3ffeea18 3ffee9f4 4020530d
3fff03a0: 3fff168c 0000000f 00000001 3ffef468
3fff03b0: 00000000 3fffdad0 3ffef470 00000030
3fff03c0: 00000000 3fffdad0 3ffef470 00000030
3fff03d0: 00000000 3fffdad0 3ffef470 3fff1674
3fff03e0: 0000000f 00000000 3fff165c 0000000f
3fff03f0: 00000001 3fff180c 0000000f 00000003
3fff0400: 3fff17f4 0000000f 0000000e 402031c4
3fff0410: 3ffeea34 00000000 3ffef480 00000000
3fff0420: 00000001 402037b4 3fff1714 3ffef480
3fff0430: 00000000 00000000 3ffee9f4 3ffef470
3fff0440: 000001a3 3ffeea18 3ffee9f4 40204433
3fff0450: 3ffe8608 00000000 000003e8 4302a8c0
3fff0460: 00000000 3fff190c 3fff0448 feefeffe
3fff0470: 3fffdad0 00000000 3ffef468 40202094
3fff0480: 3fffdad0 00000000 3ffef468 402076f4
3fff0490: feefeffe feefeffe 3ffef480 40100718
Decoding 8 results
0x40207100: String::String(String const&) at C:\Users\cat0005\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/WString.cpp line 519
0x4020530d: ESP8266WebServer::_parseRequest(WiFiClient&) at C:\Users\cat0005\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WebServer\src/Parsing.cpp line 123
0x402031c4: WiFiClient::~WiFiClient() at C:\Users\cat0005\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi\src/WiFiClient.cpp line 149
0x402037b4: FunctionRequestHandler::canHandle(HTTPMethod, String) at C:\Users\cat0005\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WebServer\src/ESP8266WebServer.cpp line 299
0x40204433: ESP8266WebServer::handleClient() at C:\Users\cat0005\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WebServer\src/ESP8266WebServer.cpp line 299
0x40202094: loop at C:\Users\cat0005\Downloads\Arduino\GPIO_webserver_for_Hbridge/GPIO_webserver_for_Hbridge.ino line 129
0x402076f4: loop_wrapper at C:\Users\cat0005\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/core_esp8266_main.cpp line 56
0x40100718: cont_norm at C:\Users\cat0005\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/cont.S line 109