Napsal jsem ti demo. Je funkční, právě jsem ho vyzkoušel.
Je redukováno kvůli přehlednosti. Kompiloval jsem ho v Arduino IDE 1.8.9. a nejnovějším ESP8266 Arduino Core 2.5.
Neřešil jsem nějakou pevnou IP adresu, je na tobě najít si modul na svým routeru, pokud ovšem používáš DHCP.
Také jsem neřešil kontrolu vstupních parametrů. Tu je třeba pochopitelně udělat před konverzí časového údaje na číslo. Předávám ti stringy, rozdělil jsem časový údaj na tři části, abys neměl s parsováním moc práce. Využívám báječné fičurky knihovny ESP8266WebServer.h, která je součástí jádra. Naštěstí, co mi fungovalo kdysi, funguje i nyní. Získávat parametry parsováním není úplně triviální. Co se týče HTML, o který tady vlastně jde, tak na to je nedostižný web
https://www.jakpsatweb.cz/, bez něj nedám ani ránu. Pro tebe je teď důležité to, co se týká formulářů, tedy "form". Není problém doplnit tenhle sketch o možnost aktualizace prostřednictvím OTA, tedy nahrávat sketche přes WiFi, to umím docela dobře. Co jsem zatím nedělal je https server. Pro tvoji informaci, tento sketch používá metodu POST, ale je možné parametrem HTTPMETOD nastavit GET. V příkladu také najdeš výstup parametrů na webovou stránku, je to číslo ESP8266 ID. Nezapomeň si jen přepsat SSID a password pro svůj router.
Mám u tebe pivo, dej vědět jaks dopadl.
Ještě doplním, že vložené hodnoty se pro kontrolu odesílají na sériový port.
Kód: Vybrat vše
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define HTTPMETHOD "POST" // Set "GET" or "POST" method
#define SERVERPORT 80
//const char* ssid = "YourSSID"; // Set your router SSID
//const char* password = "YourPassword"; // Set your router password
const char* ssid = "CYBORG"; // Set your router SSID
const char* password = "Pivo1234"; // Set your router password
String StringHOD;
String StringMIN;
String StringSEC;
String buff;
ESP8266WebServer HttpServer(SERVERPORT);
//-----------------------------------------------------------------
void setup(void) {
Serial.begin(9600);
WiFi.begin(ssid, password);
/* wait for WiFi connect */
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID());
Serial.print("IP address:\t");
Serial.println(WiFi.localIP());
HttpServer.on("/", HTTP_GET, SendPage);
HttpServer.on("/", HTTP_POST, GetParam);
HttpServer.onNotFound(handleNotFound);
HttpServer.begin();
//Serial.println("HTTP server started");
}
//-----------------------------------------------------------------
void loop(void) {
HttpServer.handleClient(); // Listen for HTTP requests from clients
}
//-----------------------------------------------------------------
void SendPage() {
buff = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
buff += "<html><head>\n";
buff += "<meta content=\"text/html; charset=utf-8\">\n";
buff += "<title>TIME INPUT</title></head><body>\n";
buff += "<center>\n";
buff += "<form action=\"/\" method=\"" + String(HTTPMETHOD) + "\">\n";
buff += "<h1>ESP8266 ID : " + String(ESP.getChipId()) + "<br>\n";
buff += "<input type=\"text\" size=2 name=\"HOD\" >:\n";
buff += "<input type=\"text\" size=2 name=\"MIN\" >:\n";
buff += "<input type=\"text\" size=2 name=\"SEC\" >:\n";
buff += "<input type=\"submit\" value=\"ODESLAT\">\n";
buff += "</h1></form></center></body></html>\n";
HttpServer.send(200, "text/html", buff);
}
/* Send HTTP status 404 Not Found */
void handleNotFound() {
HttpServer.send(404, "text/plain", "404: Not found");
}
/* Get params */
void GetParam(void) {
SendPage();
StringHOD = HttpServer.arg("HOD");
StringMIN = HttpServer.arg("MIN");
StringSEC = HttpServer.arg("SEC");
Serial.print(StringHOD);
Serial.print(":");
Serial.print(StringMIN);
Serial.print(":");
Serial.print(StringSEC);
Serial.println("***");
}