-->
Page 1 of 1

Communication between 2 ESP-12e - problem with server.write

PostPosted: Thu Oct 20, 2016 9:45 am
by Cupca
Hello everyone. I have a problem with sending information by my ESP-12E which works as server to another modules which are clients.
My main ESP in AP mode is creating WiFi network for two others which are in STA mode.

Here is what I want to do:
1. At start I want to send information from server to everyone client
2. Information contains a client number from which server wants to get information
3. Each client compares received information with their own ID number
4. The client, who can talk, sends a packet of information to the server
5. After receiving information server again sends a request to all clients with next number

I know how to send information to the server from the client (at least I think I know, because now it's working), but I have problem with sending a message to all clients from the server. I'm trying to do this with "server.write()", but I don't receive anything in my client ESP with "client.readString()" function.

So here's finally my request - if you could tell me what I have to do to achieve my purpose, how to use "server.write()" correctly. I will be grateful for the anserws or helpful links.

I'm using Arduino Ide (arduino.cc) in 1.6.12 version with ESP addon 2.3.0.
Firmware of ESP v0.9.5.0 AT

Here's client code:
Code: Select all#include <ESP8266WiFi.h>

const char* ssid = "Pomiary";
const char* pass = "pomiar_mocy";
const int Port = 80;
IPAddress host(192,168,4,1);
WiFiClient client;                         

String req;

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.print("Connecting to: ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);                     
  WiFi.begin(ssid, pass);                   
  while (WiFi.status() != WL_CONNECTED) {   
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());             

}
//*********************************************************************
void loop() {

  if(WiFi.status() != WL_CONNECTED){
    Serial.println("reconnecting");
    WiFi.begin(ssid, pass);
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
    }
  }
  while(!client.connect(host, Port)){       
    Serial.println("\nCoonection failed");
    delay(500);
  }
  Serial.println("\nConnection successed");
   
  // reading from server
  if (client.connected()){
    req = client.readString();     // doesn't work
    Serial.println("reading...");
    Serial.println(req);
  }
   
   // sending to server
    client.print("esp no.1\n");
    delay(200);
   
}


And here's server's code:
Code: Select all#include <ESP8266WiFi.h>


const char *ssid = "Pomiary";
const char *pass = "pomiar_mocy";
const int httpPort = 80;

int  token= 1;                    //number of measuring device to ask
WiFiServer server(httpPort);
String req="";

void setup() {
  delay(500);
  Serial.begin(115200);
  Serial.println("Configuring AP");
  WiFi.mode(WIFI_AP);
  boolean result = WiFi.softAP(ssid,pass);
 
  if(result == true) Serial.println("Ready");
  else Serial.println("Failed!");
 
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.begin();
  Serial.println("HTTP server started");
}

void loop() {

//Serial.printf("Stations connected to soft-AP = %d\n", WiFi.softAPgetStationNum());

WiFiClient client = server.available();

  if (client.connected()) {
    Serial.println("Send token");
    server.write(token);
  }

  if(client.connected()){
     req = client.readString();
     Serial.println(req);
     server.write("Message\n");
     Serial.println("Send");
  }
  else{
    Serial.println("No clients connected");
  }

delay(1000);
}


P.s I apologize for my language skills, but English isn't my native

Re: Communication between 2 ESP-12e - problem with server.wr

PostPosted: Thu Oct 20, 2016 2:04 pm
by martinayotte
Your server code doesn't handle multiple client connections.
You need to maintain multiple clients in a global array.

Take a look how it is done in the Telnet Example :

https://github.com/esp8266/Arduino/blob ... Serial.ino

Re: Communication between 2 ESP-12e - problem with server.wr

PostPosted: Fri Oct 21, 2016 5:12 am
by Cupca
Thank you for your answer martinayotte. I will correct my code based on the given example and let you know if helped.