//https://medium.com/@valdiney/ligando-e-desligando-led-por-via-do-wifi-usando-esp8266-node-mcu-4b0ef85ce6a3 //https://www.arduinoportugal.pt/controlo-leds-atraves-pagina-html-nodemcu-marco-2017/ // https://lededitpro.com/esp8266-nodemcu-access-point-for-a-web-server/ #include const char* ssid = "TP-Link_688A"; // Nome da Rede const char* password = "debarbamiguel"; //Password da rede int ledPinR = 2; // GPIO2 do ESP8266 e D4 do NodeMCU int ledPinG = 14; // GPIO14 do ESP8266 e D5 do NodeMCU int ledPinB = 13; // GPIO13 do ESP8266 e D7 do NodeMCU WiFiServer server(80); // Porto 80 void setup() { Serial.begin(115200); delay(10); pinMode(ledPinR, OUTPUT); // Define o D7 como saída pinMode(ledPinG, OUTPUT); // Define o D7 como saída pinMode(ledPinB, OUTPUT); // Define o D7 como saída digitalWrite(ledPinR, LOW); // O LED começa desligado digitalWrite(ledPinG, LOW); // O LED começa desligado digitalWrite(ledPinB, LOW); // O LED começa desligado Serial.println(); Serial.print("Connecting to "); // Mensagem apresentada no monitor série Serial.println(ssid); // Apresenta o nome da rede no monitor série WiFi.begin(ssid, password); // Inicia a ligação a rede while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); // Enquanto a ligação não for efectuada com sucesso é apresentado no monitor série uma sucessão de “.” } Serial.println(""); Serial.println("WiFi connected"); // Se a ligação é efectuada com sucesso apresenta esta mensagem no monitor série // Servidor server.begin(); // Comunicação com o servidor Serial.println("Servidor iniciado"); //é apresentado no monitor série que o servidor foi iniciado Serial.print("Use o seguinte URL para a comunicação: "); Serial.print("http://"); Serial.print(WiFi.localIP()); //Abrindo o Brower com este IP acedemos á pagina HTML de controlo dos LED´s, sendo que este IP só está disponível na rede à qual o ESP8266 se encontra ligado Serial.println("/"); } const char index_html[] PROGMEM = R"rawliteral(

ESP8266 DHT Server

Temperature %TEMPERATURE% °C

Humidity %HUMIDITY% %

)rawliteral"; void loop() { WiFiClient client = server.available(); if (!client) { // Verifica se o cliente está conectado ao servidor, executa este ciclo até estar conectado return; } Serial.println("novo cliente"); //Apresenta esta mensagem quando o cliente se liga ao servidor while(!client.available()){ delay(5); } String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // Operação do pedido int value = LOW; if (request.indexOf("/LEDR=ON") != -1) { digitalWrite(ledPinR, HIGH); value = HIGH; } if (request.indexOf("/LEDR=OFF") != -1) { digitalWrite(ledPinR, LOW); value = LOW; } if (request.indexOf("/LEDG=ON") != -1) { digitalWrite(ledPinG, HIGH); value = HIGH; } if (request.indexOf("/LEDG=OFF") != -1) { digitalWrite(ledPinG, LOW); value = LOW; } if (request.indexOf("/LEDB=ON") != -1) { digitalWrite(ledPinB, HIGH); value = HIGH; } if (request.indexOf("/LEDB=OFF") != -1) { digitalWrite(ledPinB, LOW); value = LOW; } // Inicialização da página HTML - Retorno do resposta client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println(""); client.println(""); client.print("Estado dos LED´s: "); if(value == HIGH) { // Se está ligado apresenta “on” client.print("On"); } else { client.print("Off");// Se está desligado apresenta “Off” } client.println("

"); client.println("");// Ligar o LED corresponde Turn On client.println("
"); // Desligar o LED corresponde Turn Off client.println(""); client.println("
"); client.println(""); client.println("
"); client.println(""); delay(5); Serial.println("Cliente desconectado"); // Depois do cliente efectuar o pedido apresenta esta mensagem no monitor série Serial.println(""); }