113 lines
4.1 KiB
C++
113 lines
4.1 KiB
C++
#include <ESP8266WiFi.h>
|
||
#include <ESP8266WebServer.h>
|
||
|
||
|
||
ESP8266WebServer server(80);//Создадим веб сервер на 80 порту
|
||
bool LEDstatus = LOW;
|
||
byte led_brightness = 0;
|
||
|
||
void setup() {
|
||
Serial.begin(9600);// Настроим частоту Serial порта
|
||
delay(100);
|
||
pinMode(3, OUTPUT);// Настроим ножку светодиода на выход, чтобы управлять им
|
||
|
||
Serial.println("Connecting to ");
|
||
Serial.println("node");
|
||
//connect to your local wi-fi network
|
||
WiFi.mode(WIFI_STA);// Режим подключения к сторонней сети wi-fi
|
||
WiFi.begin("adm2", "98765432110");
|
||
// Ждем пока статус соеденения не будет равен WL_CONNECTED , что означает что еsp успешно подключена к сети
|
||
while (WiFi.status() != WL_CONNECTED) {
|
||
delay(1000);
|
||
Serial.print(".");
|
||
}
|
||
Serial.println("");
|
||
Serial.println("WiFi connected..!");
|
||
Serial.print("Got IP: "); Serial.println(WiFi.localIP());// Вывод ip esp
|
||
//Настройка путей и их обработчиков
|
||
server.on("/status", handle_status);
|
||
server.on("/ledon", HTTPMethod::HTTP_POST, handle_ledon);
|
||
server.on("/ledoff", HTTPMethod::HTTP_POST, handle_ledoff);
|
||
//Настройка обработчика ненайденного пути
|
||
server.on("/slider", HTTPMethod::HTTP_POST, handle_slider);
|
||
server.onNotFound(handle_NotFound);
|
||
//Запуск сервера
|
||
server.begin();
|
||
Serial.println("HTTP server started");
|
||
}
|
||
void loop() {
|
||
//Обработка запросов
|
||
server.handleClient();
|
||
//Включение/Выключение светодиода. Помните у esp инвертированная логика светодиода на плате, поэтому LOW означает включить светодиод
|
||
/*if(LEDstatus)
|
||
{analogWrite(6, LOW);}
|
||
else
|
||
{analogWrite(6, HIGH);}
|
||
*/
|
||
}
|
||
|
||
void handle_status() {
|
||
Serial.println("LED: ");
|
||
Serial.println(LEDstatus);
|
||
//Отправка
|
||
server.send(200, "text/plain", String(not(LEDstatus))+" "+String(led_brightness));}
|
||
|
||
void handle_slider(){
|
||
if(!server.hasArg("brightness") or floor(atof(server.arg("brightness").c_str())) <= 0 or floor(atof(server.arg("brightness").c_str())) >= 256 ){
|
||
server.send(400, "texp/plain", "Brightness argument must be 0<br<256");
|
||
}else{
|
||
led_brightness = floor(atof(server.arg("brightness").c_str()));
|
||
analogWrite(3, led_brightness);
|
||
server.send(200, "texp/plain", "Changed brightness to "+String(led_brightness));
|
||
|
||
}
|
||
}
|
||
void handle_ledon() {
|
||
if( ! server.hasArg("timeout")){
|
||
LEDstatus = 0;
|
||
led_brightness = (server.hasArg("brightness") and floor(atof(server.arg("brightness").c_str())) < 256 and floor(atof(server.arg("brightness").c_str())) > 0) ? floor(atof(server.arg("brightness").c_str())) : 255;
|
||
analogWrite(3, led_brightness);
|
||
server.send(200, "text/plain", String(not(LEDstatus)));
|
||
|
||
}else{
|
||
|
||
Serial.println("LED: 1");
|
||
Serial.println(server.arg("timeout").c_str());
|
||
LEDstatus = 0;
|
||
analogWrite(3, 255);
|
||
|
||
delay(atof(server.arg("timeout").c_str())*1000);
|
||
//Отправка
|
||
LEDstatus = 1;
|
||
analogWrite(3, 0);
|
||
server.send(200, "text/plain", String(not(LEDstatus))); //
|
||
}
|
||
}
|
||
|
||
void handle_ledoff() {
|
||
|
||
|
||
if( ! server.hasArg("timeout")){
|
||
LEDstatus = 1;
|
||
led_brightness = 0;
|
||
analogWrite(3, led_brightness);
|
||
server.send(200, "text/plain", String(not(LEDstatus)));
|
||
}else{
|
||
|
||
Serial.println("LED: 0");
|
||
Serial.println(server.arg("timeout").c_str());
|
||
LEDstatus = 1;
|
||
analogWrite(3, 0);
|
||
delay(atof(server.arg("timeout").c_str())*1000);
|
||
//Отправка
|
||
LEDstatus = 0;
|
||
analogWrite(3, led_brightness);
|
||
server.send(200, "text/plain", String(not(LEDstatus))); //Код состояния 200 - OK, тип - text/plain, cами данные - String(LEDstatus)
|
||
}
|
||
}
|
||
//Код состояния 200 - OK, тип - text/plain, cами данные - String(LEDstatus)
|
||
void handle_NotFound(){
|
||
//Отправка
|
||
server.send(404, "text/plain", "Not found"); //Код состояния 404 - не найдено, тип - text/plain, cами данные - "Not found"
|
||
}
|