• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

FSWebServer И управление реле через ESP8266

Di_nax

New member
Хочу сделать веб морду точки доступа на 8266 чтобы с нее можно было читать новости, скачивать файлы с квитанциями и управлять освещением силовые реле. Это все хочу разместить в Гаражном кооперативе. дабы людей было проще оповещять

Если скачивание файлов можно сделать без FS.h подскажите как. сейчас у меня работает вот такой скетч
/*
Captive Portal by: M. Ray Burnette 20150831
See Notes tab for original code references and compile requirements
Sketch uses 300,640 bytes (69%) of program storage space. Maximum is 434,160 bytes.
Global variables use 50,732 bytes (61%) of dynamic memory, leaving 31,336 bytes for local variables. Maximum is 81,920 bytes.
*/

#include <ESP8266WiFi.h>
#include "./DNSServer.h" // Patched lib
#include <ESP8266WebServer.h>
#include <WiFiClient.h>

// GPIO, куда подключено реле
int rele1 = 2;
int rele2 = 16;
bool PowerRele1 = false;
bool PowerRele2 = false;

const byte DNS_PORT = 53; // Capture DNS requests on port 53
IPAddress apIP(10, 10, 10, 1); // Private network for server
DNSServer dnsServer; // Create the DNS object
ESP8266WebServer webServer(80); // HTTP server

String responseHTML = ""
"<!DOCTYPE html><html><head><title>CaptivePortal</title></head><body>"
"<h1>Hello World!</h1><p>This is a captive portal example. All requests will "
"be redirected here.</p></body></html>";


void setup() {
pinMode(rele1 , OUTPUT);
digitalWrite(rele1 , PowerRele1);
pinMode(rele2 , OUTPUT);
digitalWrite(rele2 , PowerRele2);
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP("GansChristianPenis");

// if DNSServer is started with "*" for domain name, it will reply with
// provided IP to all DNS request
dnsServer.start(DNS_PORT, "*", apIP);

// replay to all requests with same HTML
webServer.onNotFound( HTTP_handleRoot );
//webServer.onNotFound([]() {
// webServer.send(200, "text/html", responseHTML);
//});
webServer.begin();
}

void loop() {
dnsServer.processNextRequest();
webServer.handleClient();}
void HTTP_handleRoot(void){
bool statrele1 = false;
bool statrele2 = false;

// Реле 1
if( webServer.hasArg("statrele1") ){
if( strncmp(webServer.arg("statrele1").c_str(),"1",1) == 0 )
statrele1 = true;
}
else {
statrele1 = PowerRele1;
}

// Реле 2
if( webServer.hasArg("statrele2") ){
if( strncmp(webServer.arg("statrele2").c_str(),"1",1) == 0 )
statrele2 = true;
}
else {
statrele2 = PowerRele2;
}
// Формируем ШТМЛ страницу
String out = "";

out =
"<html>\
<head>\
<meta charset=\"utf-8\" />\
<title>ГК УДАЧА</title>\
<style>\
body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
</style>\
</head>\
<body>\
<h1>ВЫ НАХОДИТЕСЬ НА ТЕРРИТОРИИ ГК №9 УДАЧА</h1>\
<h2>Здравствуй друг :)</h2>\
";

// Для реле 1
if( statrele1 ){
out+="\
<h1>СВЕТИЛЬНИК №1 ВКЛЮЧЕН!</h1> <hr width=200 size=50 align=centre color=yellow><h2><a href=\"/?statrele1=0\">ВЫКЛЮЧИТЬ</a></h2>\
";
}
else {
out+="\
<h1>СВЕТИЛЬНИК №1 ВЫКЛЮЧЕН!</h1><hr width=200 size=50 align=centre color=green><h2><a href=\"/?statrele1=1\">ВКЛЮЧИТЬ</a></h2>\
";
}

// Для реле 2
if( statrele2 ){
out+="\
<h1>СВЕТИЛЬНИК №2 ВКЛЮЧЕН</h1><hr width=200 size=50 align=centre color=yellow><h2><a href=\"/?statrele2=0\">ВЫКЛЮЧИТЬ</a></h2>\
";
}
else {
out+="\
<h1>СВЕТИЛЬНИК №2 ВЫКЛЮЧЕН</h1><hr width=200 size=50 align=centre color=grey><h2><a href=\"/?statrele2=1\">ВКЛЮЧИТЬ</a></h2>\
";
}

// Общее
out+= "\
</body>\
</html>";
webServer.send ( 200, "text/html", out );


// Для реле 1
if( statrele1 != PowerRele1 ){
PowerRele1 = statrele1;
digitalWrite(rele1 , PowerRele1);

}
// Для реле 2
if( statrele2 != PowerRele2 ){
PowerRele2 = statrele2;
digitalWrite(rele2 , PowerRele2);

}
}

Поделитесь примером странички для FSwebserver-a, думаю подобное кто то делал
 
Сверху Снизу