Hallo,
ich habe einen kleinen Asynch Webserver mit dem ich 2 Inputs an meinen Arduino senden kann und wenn beide gesendet wurden, beendet der Server. Soweit so gut.
Jetzt würde ich gerne wenn ich mich mit dem Server per Wlan verbinden, dass die IP im Browser automatisch geöffnet wird und wenn der Server beendet wird soll sich die Seite im Browser automatisch schließen.
Wäre jemand so nett mir da zu helfen bzw. Tips zu geben wie ich das mache?
Danke!!!
Hier mal mein Code soweit:
#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);
IPAddress local_IP(192, 168, 4, 22);
IPAddress gateway(192, 168, 4, 9);
IPAddress subnet(255, 255, 255, 0);
const char *ssid = "MyESPAP";
const char *password = "testpassword";
const char* PARAM_INPUT_1 = "Pfalnze";
const char* PARAM_INPUT_2 = "ID";
const char* inputMessage;
const char* input[1];
int taster = 7;
int tasterstatus = 0;
int count_jump = 0;
// 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="Pfalnze"><br>
input2: <input type="text" name="ID"><br>
<input type="submit" value="Submit"><br>
</form><br>
</body></html>)rawliteral";
void notFound(AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
}
void setup() {
Serial.begin(115200);
Serial.print("Setting soft-AP configuration ... ");
Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!");
Serial.print("Setting soft-AP ... ");
Serial.println(WiFi.softAP(ssid, password) ? "Ready" : "Failed!");
Serial.print("Soft-AP IP address = ");
Serial.println(WiFi.softAPIP());
server.begin();
server.onNotFound(notFound);
server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send_P(200, "text/html", index_html);
});
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest * request) {
int params = request->params();
for (int i = 0; i < params; i++) {
AsyncWebParameter* p = request->getParam(i);
if (p->isFile()) { //p->isPost() is also true
Serial.printf("FILE[%s]: %s, size: %u\n", p->name().c_str(), p->value().c_str(), p->size());
} else if (p->isPost()) {
Serial.printf("POST[%s]: %s\n", p->name().c_str(), p->value().c_str());
} else {
inputMessage = ("GET[%s]: %s\n", p->name().c_str(), p->value().c_str());
String input_string = inputMessage;
Serial.println("Input string"); //debuging
Serial.println(inputMessage); //debuging
Serial.println("Länge Input string"); //debuging
int str_len = input_string.length(); //debuging
Serial.println(str_len);
Serial.print("i "); //debuging
Serial.println(i); //debuging
if (str_len == 0 && i == 0) {
Serial.println("Pflanze keine eingabe");
request->send(200, "text/html", "Pflanze ist leer<br> Send Data to sensor again"
"<br><a href=\"/\">Send Input</a>");
count_jump = count_jump - 1;
Serial.print("count_jump "); //debuging
Serial.println(count_jump); //debuging
}
else if (str_len == 0 && i == 1) {
Serial.println("ID keine eingabe");
request->send(200, "text/html", "ID ist leer<br> Send Data to sensor again"
"<br><a href=\"/\">Send Input</a>");
count_jump = count_jump - 1;
Serial.print("count_jump "); //debuging
Serial.println(count_jump); //debuging
}
else {
Serial.println("Input Message const char*"); //debuging
Serial.println(inputMessage); //debuging
input[i] = inputMessage;
Serial.println("Input[] const char*"); //debuging
Serial.println(input[i]); //debuging
count_jump = count_jump + 1;
Serial.print("count_jump "); //debuging
Serial.println(count_jump); //debuging
if (count_jump == 2) {
Serial.println("Wifi disconnect");
WiFi.disconnect();
Serial.println("Server end");
server.end();
Serial.print("Input[0]");
Serial.println(input[0]); //debuging
Serial.print("Input[1]"); //debuging
Serial.println(input[1]); //debuging
//Serial.print("Input[2]"); //debuging
//Serial.println(input[2]); //debuging
}
}
}
}
//request->send(200, "text/html", index_html);
});
}
void loop() {}
danke
schönen tag euch!