
ESP8266 webserver formulář
Zdravím
Hledám způsob jak udělat jednoduchý formulář něco jako pro vložení SSID a hesla tady jsem něco našel ale nejsem si jistý
/*********
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-input-data-html-form/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*********/
#include <Arduino.h>
#ifdef ESP32
#include <WiFi.h>
#include <AsyncTCP.h>
#else
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#endif
#include <ESPAsyncWebServer.h>
AsyncWebServer server(80);
// REPLACE WITH YOUR NETWORK CREDENTIALS
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
const char* PARAM_INPUT_1 = "input1";
const char* PARAM_INPUT_2 = "input2";
const char* PARAM_INPUT_3 = "input3";
// HTML web page to handle 3 input fields (input1, input2, input3)
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
<title>ESP Input Form</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head><body>
<form action="/get">
input1: <input type="text" name="input1">
<input type="submit" value="Submit">
</form><br>
<form action="/get">
input2: <input type="text" name="input2">
<input type="submit" value="Submit">
</form><br>
<form action="/get">
input3: <input type="text" name="input3">
<input type="submit" value="Submit">
</form>
</body></html>)rawliteral";
void notFound(AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("WiFi Failed!");
return;
}
Serial.println();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// Send web page with input fields to client
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", index_html);
});
// Send a GET request to <ESP_IP>/get?input1=<inputMessage>
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
String inputMessage;
String inputParam;
// GET input1 value on <ESP_IP>/get?input1=<inputMessage>
if (request->hasParam(PARAM_INPUT_1)) {
inputMessage = request->getParam(PARAM_INPUT_1)->value();
inputParam = PARAM_INPUT_1;
}
// GET input2 value on <ESP_IP>/get?input2=<inputMessage>
else if (request->hasParam(PARAM_INPUT_2)) {
inputMessage = request->getParam(PARAM_INPUT_2)->value();
inputParam = PARAM_INPUT_2;
}
// GET input3 value on <ESP_IP>/get?input3=<inputMessage>
else if (request->hasParam(PARAM_INPUT_3)) {
inputMessage = request->getParam(PARAM_INPUT_3)->value();
inputParam = PARAM_INPUT_3;
}
else {
inputMessage = "No message sent";
inputParam = "none";
}
Serial.println(inputMessage);
request->send(200, "text/html", "HTTP GET request sent to your ESP on input field ("
+ inputParam + ") with value: " + inputMessage +
"<br><a href=\"/\">Return to Home Page</a>");
});
server.onNotFound(notFound);
server.begin();
}
void loop() {
}
A čím že si to nejsi jistý?
Ale já jsem si udělal na ESP8266 ESP-01 měření teploty čidlem DS18b20 který mě posílá teplotu po internetu ven , prozatím to mám připojeno pevně do mé domácí sítě ale já bych potřeboval aby se ti připojovalo i na druhé sítě něco jako WiFi relé chci to udělat tak abych mohl ty přihlašovací údaje vložit do formuláře . Tak proto si skoušim nebo hledám vhodný příklad. díky
No a čím si teda nejsi jistý?
Při překladu mě to vyhazuje chyby nemohu se pohnout dál
někdo kdo by mě pomohl fungujícím příkladem
předem dík
Jaké chyby?
To z tebe opravdu musíme stále tahat informace?
Tak jedine, co jsem pochopil, tak maš ESP8266 ESP-01 a na něm teploty čidlem DS18b2.
Zbytek jsem nepochopil.
Proč Ti posila teplotu po internetu ven?
Kam ven?
Na jake druhe sitě?
Ano teď to mám nastaveno na domácí síť a já potřebuji mít možnost aby jsem to mohl bez úpravy firmware a znovu nahrátí do do ESP8266 připojit na druhou WiFinu a proto potřebuji tam narvat webovský formulář
Něco takoveho?
https://randomnerdtutorials.com/wifimanager-with-esp8266-autoconnect-custom-parameter-and-manage-your-ssid-and-password/
Nebo třeba v češtině?
https://www.arduinoslovakia.eu/blog/2017/7/esp8266---ukladanie-hesiel-pomocou-wifimanager?lang=cs
To je věc
něco takového ještě nebudu skákat do stropu zítra to zkusím teď to píši na telefonu zatím díky
Je tam přiklad kdy se zavola WiFiManager po stisknutí tlačítka.
Nebo v zakladním sample pro ESP8266 je ve void setup toto
Uprav a dej mu třeba 50 pokusu a pokud se nepřipoji, zavolej WiFiManager.
Už jsem to několikrat použival a spokojený.
Tak já bych potřeboval spojit tyto dva projekty ten první projekt nastaví přístupové údaje do WiFi sítě pro druhý projekt který měří teplotu a posílá ji na thingspeak.com díky za pomoc
Takže potisící. Proč proboha screenshoty a ne zdrojový kód v textové podobě?
tak to máš textové podobě
díky za pomoc
Proč mám opět silný pocit, že řešíš jiný problém, než na jaký se ptáš?
Si přečti, co jsem Ti tu napsal, když jsem tu dal ten odkaz.
Takto Ti bude wifiManager najíždět při každém spouštění.
Ani sis nepřečetl, co tam píše, a plácl jsi tu první přiklad co tam je.
To delay(30000) je také pěkná prasarna a mělo by se to řešit přes millis nebo Timer.h.
Já bych potřeboval zdroják který je ve WiFi relé a to mě nikdo neposkytne asi .Ten včerejší nástřel to byl můj zoufalý pokus jak bych si to představoval
Máš pravdu nečetl jsem to pozorně ty myslíš dát to do podmínky
.A jak ta podmínka by měla vypadat přesnou syntaxi bych prosil já totiž jsem vyrostl na pascalu a delphi toto je jazyk C nebo něco podobného .Za druhé kde ten WiFiManager ukládá proměnné SSID a PASSWORD do paměti abych je mohl pak použít ? díky
Já jsem to upravil takto označeno ************* je to dobře? zatím nevím jak předávat SSID a PASSWORD ale to zatím neřeším
GPIO0 je na ESP-01 je při programování musí být na LOW ,jak zapojit tlačítko mám tam dát jako Pull UP odpor na zem nebo na 3V3 nebo to je zapnuto tímto pinMode(TRIGGER_PIN, INPUT_PULLUP)? díky