ESP8266 Connessione

Ciao

Ho costruito un progetto dove mi collego alle mie WiFi e mando dei comandi a dei moduli in varie zone, il tutto sembra abbastanza stabile, ed i comandi vengono inviati correttamente, il problema è che non riesco a catturare le risposte dai moduli, tra gli altri uso un modulo ETH484, che è una scheda relé, con il mio browser va bene, con LabView anche comunica perfettamente, tra l'altro usando esattamente le stesse stringhe di chiamata che uso con ESP8266, ma con quest'ultimo non riesco a catturare le risposte, ripeto il comando esce correttamente e l'azione viene eseguita, ma nessuna risposta.

Qui vi posto il codice del programma principale la funzione principale che non funziona è la "GetStatus":

Grazie

#include <ArduinoOTA.h>
#include <pulsanti.h>
#include <ESP8266WiFi.h>


const IPAddress staticIP(192,168,1,26);
const char* ssid1 = "w1";
const char* password1 = "p1";
const char* ssid2 = "w2";
const char* password2 = "p2";
const char* ssid3 = "w3";
const char* password3 = "p3";

IPAddress GMA(192,168,1,0);
IPAddress ETH(192,168,1,6);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
IPAddress E1(192,168,1,10);
IPAddress MD(31,11,33,162);
IPAddress DNS(8,8,8,8);
WiFiServer server(80);
WiFiClient client;
byte WifiMas=0;  //Macchina a stati per la connessione WIFI
unsigned long WifiT0=0; // tempi di attesa per la connessione wifi
unsigned long WifiT1=0;
unsigned int WId=0;
byte WiFiClMAS=0;
unsigned long WiFiClTo=0;
bool WiFiBo=false;
String WiFiSt="";
char WiFiCh=0;


byte NetMas=0;
unsigned long NetTo=0;
char NetRdC=0;
String NetCMDS="";
String NetPARS="";


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  while (!Serial){
    
  }

  InitPinKey();
  
}

void loop() {
//***************** CONNESSIONE WIFI ******************************************************
  if (WifiMas==0) {
    WifiMas=1;
    //digitalWrite(LED_BUILTIN, true);
  }else if (WifiMas ==1){
    if (WIFIScan()>0) {
      WiFi.config(staticIP, gateway, subnet, DNS);
      WiFi.hostname("E026");
      if (WId==1){
        WiFi.begin(ssid1, password1);
        WifiMas=4; 
      }else if (WId==2){
        WiFi.begin(ssid2, password2);
        WifiMas=4;
      }else if (WId==3){
        WiFi.begin(ssid3, password3);
        WifiMas=4;    
      }else{
        WifiMas=2;
      }     
    }
  }else if (WifiMas ==2){
    WiFi.disconnect();
    WifiMas=10;
  }else if (WifiMas ==4){
    //digitalWrite(LED_BUILTIN, false);
    WifiT0=millis()+6000;
    WifiMas=5;
  }else if (WifiMas ==5){  
    if (WiFi.status() == WL_CONNECTED){
      WifiMas=6;
    }
    if (millis()> WifiT0 ) {
      WifiMas=10;
    }
  }else if (WifiMas ==6){  
    //WiFi.setDNS(DNS);
    server.begin();
    WifiMas=100;
    ArduinoOTA.begin();
    Serial.println("Connected");
    //digitalWrite(LED_BUILTIN, true);
  }else if (WifiMas ==10){
    WifiT0=millis()+5000;
    WifiMas=11;
  }else if (WifiMas ==11){
    if (millis()> WifiT0) {
      ArduinoOTA.begin(false);
      //digitalWrite(LED_BUILTIN, false);
      server.close();
      WiFi.disconnect();
      WifiMas=0;
    }
  }else if (WifiMas ==100){
    ArduinoOTA.handle();
    if (WiFi.status() != WL_CONNECTED){
      WifiMas=10;
    }
  }
//**********************************************************************************

//********** SERVER ****************************************************************
  if (WifiMas ==100){ // Rete attiva e connessa
    if (NetMas==0){
      //client = server.available();
      if ((client) & (client.connected())){ // in ricezione
        Serial.println("Open Connection");
        NetMas=5;
        NetTo=millis()+3000;
      }else{
        client.stop();
      }
    }else if(NetMas==5){
      if (client.available()){
        NetRdC=client.read();
        if(NetRdC=='<'){ // comando <CMD-PAR>
          NetMas=10;
          NetTo=millis()+100;     
        }else if(NetRdC=='G'){
          NetMas=50;     
        }else if(NetRdC=='P'){
          NetMas=50;     
        }
      }
      if (millis()>NetTo){
        NetMas=200; // funzione del timeout di ricezione
        Serial.println("Primo Timeout");
      }
    }else if(NetMas==10){
      NetCMDS=client.readStringUntil('-');//
      NetPARS=client.readStringUntil('>');//
      Serial.println(NetCMDS);
      if (millis()>NetTo){
        NetMas=200; // funzione del timeout di ricezione
        Serial.println("Non ricevo giusto");
      }
      NetMas=20;
    }else if(NetMas==20){
      if (NetCMDS=="_L1"){
        SwitchLamp('2');
        client.println("<_L1-PAR>");
      }else if (NetCMDS=="EsT"){
        //GetData(1);
        client.println("<EsT-PAR>");
      }else if (NetCMDS=="MyIP"){
        MyPublicIP();  
      }
      NetMas=25;
      NetTo=millis()+300;     
    }else if(NetMas==25){
      if (millis()>NetTo){
        NetMas=0; // funzione del timeout di ricezione
        client.stop();
      }
    }else if(NetMas==50){
      NetTo=millis()+500;
      while (client.connected() || (millis()>NetTo) ) {
        char cll=client.read();
        Serial.print(cll);
      }
      NetMas=0; // funzione del timeout di ricezione
      client.stop();

    }else if(NetMas==200){
      client.stop();
      Serial.println("Timeout");
      NetMas=0;
    }
  // codice dentro rete
      
  
  }
// Codice fuori rete
  GetKey();




}//********** fine MAIN  ***************************


//------------------------------------------------- Funzioni --------------------------

void SendGMA(byte IpA, String MyCmd){
  GMA[3]=IpA;
  if (client.connect(GMA, 80)){
    client.print(MyCmd);
  }
  client.flush();
  if (client){
    while (client.connected()){
      while (client.available()){
        char cll=client.read();
        Serial.print(cll);
      }
    }
    //delay(100);
    client.flush();
    client.stop();
    Serial.println("--STOP--");
  }
}


void MyPublicIP(){
  String Ln1="";
  Serial.println("Connetto mdmecco...");
  if (client.connect("www.mdmecco.it", 80)){
    Serial.println("GET");
    client.print(F("GET /ghelfa/ip.php HTTP/1.1 \r\nContent-Type: text/html\r\nConnection: close\r\n\r\n"));
    //client.print(F("GET / HTTP/1.1 \r\nContent-Type: text/html\r\nConnection: close\r\n\r\n"));
  }
  //delay(150);
  while (client.connected()){
    //Serial.print("Cnm..");
    while (client.available()){
      //Serial.print("Available...");
      //Ln1 = client.readStringUntil('>');
      Ln1 = client.readString();
      Serial.println(Ln1);
    }
  }
  delay(50);
  Serial.println("");
  Serial.println("---END---");
  client.stop();
}

void GetStatus(){
  if (client.connect(ETH, 80)){
    Serial.println("Invio richiesta status");
    client.print(F("GET /status.xml"));
    client.print(F(" HTTP/1.1 \r\nContent-Type: text/html\r\nConnection: close\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\nOK\r\n"));
    client.flush();
    Serial.println("1");
    Serial.println("2");
    delay(300);
    while (client.connected()){
      //Serial.println("3");
      while (client.available()){
        Serial.println("4");
        char cll=client.read();
        //String line = clientb.readString();
        Serial.write(cll);
      }
    }
    client.flush();
    client.stop();
    Serial.println("--STOP--");
  }
}

void SwitchLamp(char Nl){  //Lampione
  if (client.connect(ETH, 80)){
    client.print(F("GET /io.cgi?led="));
    client.print(Nl);
    client.print(F(" HTTP/1.1 \r\nContent-Type: text/html\r\nConnection: close\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\n\r\n"));
    client.flush();
    while (client.connected()){
      while (client.available()){
        char cll=client.read();
        Serial.write(cll);
      }
    }
    client.flush();
    client.stop();
    Serial.println("--STOP--");
  }
}

int WIFIScan() {                                                                           //Scan delle Wifi
  int RssV=-1000;
  WId=0;
  WiFi.scanDelete();
  int n = WiFi.scanNetworks();
  if (n == 0){
  }else{
   for (int i = 0; i < n; ++i){
    if (WiFi.SSID(i)=="GGhelfa"){
     if (WiFi.RSSI(i) > RssV){
      RssV=WiFi.RSSI(i);
      WId=1;
     }
    }
    if (WiFi.SSID(i)=="WGhelfa"){
     if (WiFi.RSSI(i)> RssV){
      RssV=WiFi.RSSI(i);
      WId=2;
     }
    }
    if (WiFi.SSID(i)=="DGhelfa"){
     if (WiFi.RSSI(i)> RssV){
      RssV=WiFi.RSSI(i);
      WId=3;
     }
    }
   }
  }
  return WId;
}