#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include "hal.h"
//Inicializacao so servidor http na porta 80
WiFiServer server(80);
//Status da GPIO
uint8_t status_gpio = 0;
void setup() {
initGPIO();
Serial.begin(115200);
Serial.println("Booting");
//Inicia o WiFi para modo AP (Access Point)
WiFi.mode(WIFI_AP);
/* Configura o AP
SSID
senha
canal (1-14)
esconder rede (0-nao 1-sim)
*/
//Configura o AP
WiFi.softAP("IoTStrip","control42",2,0);
//Logs na porta serial
Serial.print("AP IP: ");
Serial.println(WiFi.softAPIP());
server.begin();
}
void webserver_handle(void){
//Aguarda uma nova conexao
WiFiClient client = server.available();
if (!client) {
return;
}
Serial.println("Nova conexao requisitada...");
while(!client.available()){
delay(1);
}
Serial.println("Nova conexao OK...");
//Le a string enviada pelo cliente
String req = client.readStringUntil('\r');
//Mostra a string enviada
Serial.println(req);
//Limpa dados/buffer
client.flush();
//Trata a string do cliente em busca de comandos
if (req.indexOf("rele_on") != -1){
digitalWrite(LOAD, HIGH);
digitalWrite(LED_A, HIGH);
digitalWrite(LED_B, LOW);
status_gpio = HIGH;
} else if (req.indexOf("rele_off") != -1) {
digitalWrite(LOAD, LOW);
digitalWrite(LED_B, HIGH);
digitalWrite(LED_A, LOW);
status_gpio = LOW;
}
else {
Serial.println("Requisicao invalida");
}
//Prepara a resposta para o cliente
String buf = "";
buf += "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n";
buf += "<html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/>\r\n";
buf += "<title>Regua IoT</title>";
buf += "<style>.c{text-align: center;} div,input{padding:5px;font-size:1em;} input{width:80%;} body{text-align: center;font-family:verdana;} button{border:0;border-radius:0.3rem;background-color:#1fa3ec;color:#fff;line-height:2.4rem;font-size:1.2rem;width:100%;} .q{float: right;width: 64px;text-align: right;}</style>";
buf += "</head>";
buf += "<h3>Regua IoT</h3>";
//De acordo com o status da GPIO envia o comando
if(status_gpio)
buf += "<div><h4>Regua: </h4><a href=\"?function=rele_off\"><button>Desligar</button></a></div>";
else
buf += "<div><h4>Regua: </h4><a href=\"?function=rele_on\"><button>Ligar</button></a></div>";
buf += "<h4>Laboratorio Hacker de Campinas</h4>";
buf += "</html>\n";
//Envia a resposta para o cliente
client.print(buf);
client.flush();
client.stop();
Serial.println("Client disconectado!");
}
void loop() {
webserver_handle();
}
Olá Pedro,
Poderia me ajudar? Estou tentando incrementar o seu projeto, gostaria de adicionar ao projeto um push-bottom para que além de ligar a régua pela internet pudesse liga-la pelo botão físico acoplado a régua.