Cliente Servidor con esp8266


          Se trata de crear una comunicación directa entre dos módulos esp8266 sin intermediación de un router. Configurando uno como servidor y otro como cliente. El servidor queda configurado por defecto con la IP 192.168.4.1 que es con la que se conecta el cliente.

          Los módulos empleados tiene incorparada una fotoresistencia y un diodo LED.

          Se ha programado de tal modo que al oscurecer la fotoresistencia del cliente se enciende el LED del servidor
//www.jopapa.me
//SERVIDOR
#include <ESP8266WiFi.h>

const char WiFiClave[] = "";  //Sin clave
const char AP_Nombre[] = "Jopapa_ESP8266";

const int LED_PIN = 15; // LED rojo
int val;
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  WiFi.mode(WIFI_AP);
  WiFi.softAP(AP_Nombre, WiFiClave);  
  server.begin();
}

void loop() {
  WiFiClient client = server.available();   // ¿Hay un cliente conectado?
  if (!client) { return;}
  String req = client.readStringUntil('\r');  // Lee la primera linea de la petición del cliente
  if (req.indexOf("/led/0") != -1) val=0;
  if (req.indexOf("/led/1") != -1) val=1;
  digitalWrite(LED_PIN, val); 
  client.flush();
//CLIENTE
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

const char* ssid     = "Jopapa_ESP8266";
const char* password = "";
const char* host = "http://192.168.4.1";
String val="0";
int analog;
const int ANALOG_PIN = A0; // pin analógico con fotoresistencia

HTTPClient http;

void rptaSrv(int httpCode){
  if(httpCode == 200) {
           String payload = http.getString();
           Serial.println(payload);
        } else {
            Serial.print("[HTTP] GET... failed, no connection or no HTTP server\n");
        }
}

void setup() {
  Serial.begin(115200);
  delay(10);
  Serial.print("Conectando a ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("WiFi conectada"); 
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop(){
  analog=analogRead(ANALOG_PIN);
  if (analog < 300){         //hay oscuridad y encenderá el LED rojo del servidor
    val="1";}
   else{
    val="0";
  }

if(WiFi.status() != WL_CONNECTED){
  WiFi.begin(ssid, password);
  delay(500);
}else{
  //HTTPClient http;
        Serial.print("[HTTP] begin...\n");
        // configure server y url
        http.begin("192.168.4.1", 80, "/led/"+val);   //HTTp
        int httpCode1 = http.GET();
        rptaSrv(httpCode1);
        delay(100);
//        http.begin("192.168.4.1", 80, "/led/1"); //HTTP
//        int httpCode2 = http.GET();
//        rptaSrv(httpCode2);
//        delay(1000);
//        http.begin("192.168.4.1", 80, "/read"); //HTTP
//        int httpCode3 = http.GET();
//        rptaSrv(httpCode3);
//        delay(1000);
       
    }
}
Menu