Хочу сделать веб морду точки доступа на 8266 чтобы с нее можно было читать новости, скачивать файлы с квитанциями и управлять освещением силовые реле. Это все хочу разместить в Гаражном кооперативе. дабы людей было проще оповещять
Если скачивание файлов можно сделать без FS.h подскажите как. сейчас у меня работает вот такой скетч
Поделитесь примером странички для FSwebserver-a, думаю подобное кто то делал
Если скачивание файлов можно сделать без 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);
}
}
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, думаю подобное кто то делал