Вообще история такая, у себя в гаражах хочется сделать включение света (в будущем по таймеру) при помощи мобильного.
1. Организовать точку доступа, которая выводит простую HTML страничку на которой можно выбрать светильник который хочешь включить. (это я смог)
2. Сделать так чтобы набирая любой произвольный адрес (при подключении к этой точке доступа) я все равно попадал на свою страницу. Такое есть в маке когда просит послать СМС и у многих операторов ссобщение о нулевом балансе выходит вместо запрашиваемой странички.
Видел на youtube подобное решение, но там автор решил не выкладывать скетч, куда копать Я не знаю :-(
Вот скетч.
1. Организовать точку доступа, которая выводит простую HTML страничку на которой можно выбрать светильник который хочешь включить. (это я смог)
2. Сделать так чтобы набирая любой произвольный адрес (при подключении к этой точке доступа) я все равно попадал на свою страницу. Такое есть в маке когда просит послать СМС и у многих операторов ссобщение о нулевом балансе выходит вместо запрашиваемой странички.
Видел на youtube подобное решение, но там автор решил не выкладывать скетч, куда копать Я не знаю :-(
Вот скетч.
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <ESP8266WebServer.h>
#include <WiFiClient.h>
// GPIO, куда подключено реле
int rele1 = 12;
int rele2 = 13;
bool PowerRele1 = false;
bool PowerRele2 = false;
// параметры вашей WiFi сети. (Те что всегда вводите на тел. и планшете)
const char* ssid = "GKUDACHASVET";
const char* ip = "192,168,0,33";
ESP8266WebServer server(80);
void setup() {
pinMode(rele1 , OUTPUT);
digitalWrite(rele1 , PowerRele1);
pinMode(rele2 , OUTPUT);
digitalWrite(rele2 , PowerRele2);
// Подлючение к WiFi
IPAddress apIP(192,168,0,33);
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP,apIP,IPAddress(255,255,255,0));
WiFi.softAP(ssid);
Serial.begin(115200);
Serial.println();
Serial.print("IP address: ");
Serial.println(apIP);
//if(WiFi.waitForConnectResult() == WL_CONNECTED){
// Запускаем сервер
//MDNS.begin(host);
server.on ( "/", HTTP_handleRoot );
server.onNotFound ( HTTP_handleRoot );
server.begin();
}
// }
void loop() {
server.handleClient();
delay(50);
}
void HTTP_handleRoot(void) {
bool statrele1 = false;
bool statrele2 = false;
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
Serial.println("HTTP server started");
// Реле 1
if( server.hasArg("statrele1") ){
if( strncmp(server.arg("statrele1").c_str(),"1",1) == 0 )
statrele1 = true;
}
else {
statrele1 = PowerRele1;
}
// Реле 2
if( server.hasArg("statrele2") ){
if( strncmp(server.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>\
";
// Для реле 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+="\
<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+="\
<hr width=200 size=50 align=centre color=grey><h2><a href=\"/?statrele2=1\">ВКЛЮЧИТЬ</a></h2>\
";
}
// Общее
out+= "\
</body>\
</html>";
server.send ( 200, "text/html", out );
// Для реле 1
if( statrele1 != PowerRele1 ){
PowerRele1 = statrele1;
digitalWrite(rele1 , PowerRele1);
}
// Для реле 2
if( statrele2 != PowerRele2 ){
PowerRele2 = statrele2;
digitalWrite(rele2 , PowerRele2);
}
// Скобку оставить!
}
#include <ESP8266mDNS.h>
#include <ESP8266WebServer.h>
#include <WiFiClient.h>
// GPIO, куда подключено реле
int rele1 = 12;
int rele2 = 13;
bool PowerRele1 = false;
bool PowerRele2 = false;
// параметры вашей WiFi сети. (Те что всегда вводите на тел. и планшете)
const char* ssid = "GKUDACHASVET";
const char* ip = "192,168,0,33";
ESP8266WebServer server(80);
void setup() {
pinMode(rele1 , OUTPUT);
digitalWrite(rele1 , PowerRele1);
pinMode(rele2 , OUTPUT);
digitalWrite(rele2 , PowerRele2);
// Подлючение к WiFi
IPAddress apIP(192,168,0,33);
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP,apIP,IPAddress(255,255,255,0));
WiFi.softAP(ssid);
Serial.begin(115200);
Serial.println();
Serial.print("IP address: ");
Serial.println(apIP);
//if(WiFi.waitForConnectResult() == WL_CONNECTED){
// Запускаем сервер
//MDNS.begin(host);
server.on ( "/", HTTP_handleRoot );
server.onNotFound ( HTTP_handleRoot );
server.begin();
}
// }
void loop() {
server.handleClient();
delay(50);
}
void HTTP_handleRoot(void) {
bool statrele1 = false;
bool statrele2 = false;
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
Serial.println("HTTP server started");
// Реле 1
if( server.hasArg("statrele1") ){
if( strncmp(server.arg("statrele1").c_str(),"1",1) == 0 )
statrele1 = true;
}
else {
statrele1 = PowerRele1;
}
// Реле 2
if( server.hasArg("statrele2") ){
if( strncmp(server.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>\
";
// Для реле 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+="\
<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+="\
<hr width=200 size=50 align=centre color=grey><h2><a href=\"/?statrele2=1\">ВКЛЮЧИТЬ</a></h2>\
";
}
// Общее
out+= "\
</body>\
</html>";
server.send ( 200, "text/html", out );
// Для реле 1
if( statrele1 != PowerRele1 ){
PowerRele1 = statrele1;
digitalWrite(rele1 , PowerRele1);
}
// Для реле 2
if( statrele2 != PowerRele2 ){
PowerRele2 = statrele2;
digitalWrite(rele2 , PowerRele2);
}
// Скобку оставить!
}