Здравствуйте друзья. Я только начал осваивать программирование возникли сложности. Есть модуль управления реле через вэб, но хотелось бы добавить логин и пароль на вход на веб страницу.
Есть 2 скетча, оба работают без проблем, но совместить у меня не выходит.
Тот что на авторизацию - пароль и логин 000000 и 000000, меняется только програмно, но меня устраивает, хотя бы так. Образцов построения авторизации на ардуино и 8266 в нете не так уж и много, точнее Я нашёл один, тот что ниже, так что методом научного тыка разобраться мне не удалось. Спасибо заранее, кто поможет.
Код авторизации
Есть 2 скетча, оба работают без проблем, но совместить у меня не выходит.
Тот что на авторизацию - пароль и логин 000000 и 000000, меняется только програмно, но меня устраивает, хотя бы так. Образцов построения авторизации на ардуино и 8266 в нете не так уж и много, точнее Я нашёл один, тот что ниже, так что методом научного тыка разобраться мне не удалось. Спасибо заранее, кто поможет.
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
MDNSResponder mdns;
// Wi-Fi
const char* ssid = "****************************";
const char* password = "*************************";
byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(192,168,1,170);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80);
int D0_pin = 16;
void setup(void){
// preparing GPIOs
pinMode(D0_pin, OUTPUT);
digitalWrite(D0_pin, LOW);
delay(100);
Serial.begin(115200);
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
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());
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", [](){
server.send(200, "text/html", webPage());
});
server.on("/socket1On", [](){
digitalWrite(D0_pin, HIGH);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket1Off", [](){
digitalWrite(D0_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
String webPage()
{
String web;
web += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"utf-8\"><title>ESP 8266</title><style>button{color:red;padding: 10px 27px;}</style></head>";
web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">ESP8266 Web Server</h1><div>";
//++++++++++ LED-1 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----LED 1----</p>";
if (digitalRead(D0_pin) == 1)
{
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</div>";
}
else
{
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</div>";
}
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket1On\"><button>ON</button></a> <a href=\"socket1Off\"><button>OFF</button></a></div>";
// ++++++++ LED-1 +++++++++++++
// ========REFRESH=============
web += "<div style=\"text-align:center;margin-top: 20px;\"><a href=\"/\"><button style=\"width:158px;\">REFRESH</button></a></div>";
// ========REFRESH=============
web += "</div>";
return(web);
}
Код авторизации
Код:
// Авторизация на Web сервере микроконтроллера https://it4it.club/topic/13-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BD%D0%B0-web-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0/ //
void loop() {
WiFiClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString += c;
if (c == '\n' && currentLineIsBlank) {
if (readString.lastIndexOf(F("Authorization: Basic MDAwMDAwOjAwMDAwMA=="))>-1) { // MDAwMDAwOjAwMDAwMA== 0000 0000 http://base64.ru/ через разделитель двоеточие ":" //
if (readString.lastIndexOf(F("GET /favicon.ico"))>-1) {
client.println(F("HTTP/1.0 404 Not Found"));
}
else {
client.println(F("HTTP/1.0 200 OK"));
client.println(F("Content-Type: text/html"));
client.println(F("Pragma: no-cache\r\nRefresh: 30\r\n"));
client.println(F("<html><head><meta charset=UTF-8\"><title>Arduino - iT4iT.CLUB</title>"));
client.println(F("<style>body,table,tr,td{font-style:normal;font-family:verdana;font-size:11px;}body{background-color:#FFEBD5;}</style></head><body>"));
client.print(F("Arduino on <a href=\"https://it4it.club\">iT4iT.CLUB</a>"));
client.println(F("</body></html>"));
}
}
else {
client.println(F("HTTP/1.0 401 Unauthorized"));
client.println(F("WWW-Authenticate: Basic realm=\"Arduino - iT4iT.CLUB\""));
}
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(30);
readString = "";
client.stop();
}
}
Последнее редактирование: