Probleme avec la librairie UIPEthernet

Bonjour,
j'essaie tant bien que mal à communiquer avec un logiciel d'un fabriquant de light en DMX et j'y parviens avec la librairie UIPEthernet et un module ENC28J60...

Je parviens à communiquer avec le logiciel du fabriquant avec le code suivant par contre j'ai de grosse latence qui impacte l’exécution de ma carte Arduino Nano ou même 2560...

Pouvez vous jeter un œil à mon code est me dire si vous voyez quelque chose d'anormale ???
Excusez moi pour les erreur, je suis débutant...

#include <UIPEthernet.h>

EthernetClient client;

int NombreAleatoire = 0;

signed long next;

uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};

String MsgString;
String StringERRORNOTLOGGED = “ERROR|NOT LOGGED”;
String StringERRORBADPASSWORD = “ERROR|BAD PASSWORD”;
String StringHELLO;
String StringHELLOA2SMDP;
String StringBPM;
String StringBEAT;
String StringBEAT_ON;
String StringBEAT_OFF;
String StringCUE;
String StringBUTTON_PRESS;
String StringBUTTON_RELEASE;
String StringFADER_CHANGE;
String StringBUTTON_LIST;

void setup() {

Serial.begin(115200);

Ethernet.begin(mac);

Serial.print("localIP: ");
Serial.println(Ethernet.localIP());
Serial.print("subnetMask: ");
Serial.println(Ethernet.subnetMask());
Serial.print("gatewayIP: ");
Serial.println(Ethernet.gatewayIP());
Serial.print("dnsServerIP: ");
Serial.println(Ethernet.dnsServerIP());

next = 0;

}

void loop() {

int i;

if (((signed long)(millis() - next)) > 0)
{
next = millis() + 1;
Serial.println(“Connexion Client…”);
// replace hostname with name of machine running tcpserver.pl
// if (client.connect(“server.local”,5000))
if (client.connect(IPAddress(192,168,10,4),7348))
{
Serial.println(“Client connecté”);

// Envoyer l’identifiant et mot de passe via HELLO|A2S|1234
// Le simple fait d’appeler la méthode println(…) au lieu de print(…)
// ajoute CR (’\r’) et LF (’\n’) à la chaîne envoyée.
client.println(“HELLO|A2S|1234”); // Envoyé la demande de connexion

Serial.print(“HELLO|A2S|MDP envoyé”);
Serial.println();

client.println(“DATA from Client”);
while(client.available()==0)
{
if (next - millis() < 0)
goto close;
}
int size;
while((size = client.available()) > 0)
{
uint8_t* msg = (uint8_t*)malloc(size);
size = client.read(msg,size);
// Serial.write(msg,size);

/*
// Permet de décoder le mot recu en fonction de sa taille
Serial.print(size);
Serial.print(" : ");
for(int car=0;car<size;car++) {
Serial.write(msg[car]);
Serial.write(’=’);
Serial.print(msg[car], HEX);
Serial.write(’ ');
}
Serial.println();
*/

// Compare string1 à string2 et retourne 0 si egal
// size - 2 car CRLF donc 2 caractères à la fin du string
if (strncmp(msg,“ERROR|NOT LOGGED”,(size-2)) == 0)
{
Serial.print(“ERROR NOT LOGGED”);
Serial.println();
// goto close;
} // Fin du if (strncmp(msg,“ERROR|NOT LOGGED”,(size-2)) == 0)

if (strncmp(msg,“ERROR|BAD PASSWORD”,(size-2)) == 0)
{
Serial.print(“ERROR BAD PASSWORD”);
Serial.println();
// goto close;
} // Fin du if (strncmp(msg,“ERROR|BAD PASSWORD”,(size-2)) == 0)

if (strncmp(msg,“HELLO”,(size-2)) == 0)
{
Serial.print(“HELLO Recu”);
Serial.println();
// goto close;
} // Fin du if (strncmp(msg,“ERROR|BAD PASSWORD”,(size-2)) == 0)

if (strncmp(msg,“BEAT_ON”,(size-2)) == 0)
{
Serial.print(“BEAT_ON Recu”);
Serial.println();
client.println(“BEAT”); // Envoyé la demande de connexion
Serial.print(“BEAT envoyé”);
Serial.println();
} // Fin du if (strncmp(msg,“BEAT_ON”,(size-2)) == 0)

free(msg);
}
close:
//disconnect client
Serial.println(“Client deconnecte”);
client.stop();
}
else
Serial.println(“Probleme connexion client”);
}
}

[/code]

Merci d’avance

Tu t'es emmêlé les pinceaux dans ton message : la balise CODE doit encadrer le code pas le message. Peux-tu éditer ton post ?

if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)

Pfff, c'est moche ce truc !
Ecris plutôt :

if ( strcmp ( msg, "ERROR|NOT LOGGED\r\n" ) == 0 )

Bonjour,
j’essaie tant bien que mal à communiquer avec un logiciel d’un fabriquant de light en DMX et j’y parviens avec la librairie UIPEthernet et un module ENC28J60…

Je parviens à communiquer avec le logiciel du fabriquant avec le code suivant par contre j’ai de grosse latence qui impacte l’exécution de ma carte Arduino Nano ou même 2560…

Pouvez vous jeter un œil à mon code est me dire si vous voyez quelque chose d’anormale ???
Excusez moi pour les erreur, je suis débutant…

#include <UIPEthernet.h>

EthernetClient client;

int NombreAleatoire = 0;

signed long next;

uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};

String MsgString;
String StringERRORNOTLOGGED = "ERROR|NOT LOGGED";
String StringERRORBADPASSWORD = "ERROR|BAD PASSWORD";
String StringHELLO;
String StringHELLOA2SMDP;
String StringBPM;
String StringBEAT;
String StringBEAT_ON;
String StringBEAT_OFF;
String StringCUE;
String StringBUTTON_PRESS;
String StringBUTTON_RELEASE;
String StringFADER_CHANGE;
String StringBUTTON_LIST;


void setup() {

  Serial.begin(115200);

  Ethernet.begin(mac);

  Serial.print("localIP: ");
  Serial.println(Ethernet.localIP());
  Serial.print("subnetMask: ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("gatewayIP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("dnsServerIP: ");
  Serial.println(Ethernet.dnsServerIP());

  next = 0;

}

void loop() {

  int i;

  if (((signed long)(millis() - next)) > 0)
    {
      next = millis() + 1;
      Serial.println("Connexion Client...");
// replace hostname with name of machine running tcpserver.pl
//      if (client.connect("server.local",5000))
      if (client.connect(IPAddress(192,168,10,4),7348))
        {
          Serial.println("Client connecté");

// Envoyer l'identifiant et mot de passe via HELLO|A2S|1234
// Le simple fait d'appeler la méthode println(...) au lieu de print(...)
// ajoute CR ('\r') et LF ('\n') à la chaîne envoyée.
     client.println("HELLO|A2S|1234"); // Envoyé la demande de connexion
     
     Serial.print("HELLO|A2S|MDP envoyé");
     Serial.println();

         
          client.println("DATA from Client");
          while(client.available()==0)
            {
              if (next - millis() < 0)
                goto close;
            }
          int size;
          while((size = client.available()) > 0)
            {
              uint8_t* msg = (uint8_t*)malloc(size);
              size = client.read(msg,size);
//              Serial.write(msg,size);


/*
// Permet de décoder le mot recu en fonction de sa taille
  Serial.print(size);
  Serial.print(" : ");
  for(int car=0;car<size;car++) {
    Serial.write(msg[car]);
    Serial.write('=');
    Serial.print(msg[car], HEX);
    Serial.write(' ');
  }
  Serial.println();
*/

// Compare string1 à string2 et retourne 0 si egal
// size - 2 car CRLF donc 2 caractères à la fin du string
    if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
    {
        Serial.print("ERROR NOT LOGGED");
        Serial.println();
//        goto close;
    } // Fin du if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
   

    if (strncmp(msg,"ERROR|BAD PASSWORD",(size-2)) == 0)
    {
        Serial.print("ERROR BAD PASSWORD");
        Serial.println();
//        goto close;
    } // Fin du if (strncmp(msg,"ERROR|BAD PASSWORD",(size-2)) == 0)
   

    if (strncmp(msg,"HELLO",(size-2)) == 0)
    {
        Serial.print("HELLO Recu");
        Serial.println();
//        goto close;
    } // Fin du if (strncmp(msg,"ERROR|BAD PASSWORD",(size-2)) == 0)

    if (strncmp(msg,"BEAT_ON",(size-2)) == 0)
    {
        Serial.print("BEAT_ON Recu");
        Serial.println();
        client.println("BEAT"); // Envoyé la demande de connexion
        Serial.print("BEAT envoyé");
        Serial.println();
    } // Fin du if (strncmp(msg,"BEAT_ON",(size-2)) == 0)
 
              free(msg);
            }
close:
          //disconnect client
          Serial.println("Client deconnecte");
          client.stop();
        }
      else
        Serial.println("Probleme connexion client");
    }
}

modifié

à Biggil, cela est plus propre certes mais cela ne change pas grand chose, mon code est lent et ralenti tout mon programme qui lui tournait bien avant que j’envoie des données en tcp…

mon code complet:

  #include <UIPEthernet.h>

  EthernetClient client;
  EthernetServer server = EthernetServer(7348);

  uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};

  int MSEGQ7AnalogPin = A0; // Lecture du MSEGQ7 sur entrée analoguique 0 pour le BPM.
  int InputRvAnalogPin = A1; // Lecture du potentiometre sur entrée analoguique 1.  
  int InputSignalFiltreAnalogPin = A2; // Lecture du signal Filtré par RC sur entrée analoguique 2 pour le BEAT.  
//  int InputSignalAnalogPin = A6; // Lecture du MSEGQ7 du signal d'entrée sur entrée analoguique 6 pour le BPM.  

  int StrobePin = 2; // Strobe du MSEGQ7 sur entrée digitale 2.
  int ResetPin = 3; // Reset du MSEGQ7 sur entrée digitale 3.
  int LedPin1 = 4; // Pin de la Led1 pour detection Beat.
  int LedPin2 = 5; // Pin de la Led2 pour detection BPM.
  int LedPin3 = 6; // Pin de la Led3 pour detection perso AFA du BPM.
  int LedPin4 = 7; // Pin de la Led4 pour detection de la détection de la variation de Bass.
  int LedPin5 = 8; // Pin de la Led5 pour detection de la détection de la variation de Bass 2.
  int LedPin6 = 9; // Pin de la Led6 pour detection perso AFA du Beat.

  int SpectrumValue[7]; // Pour stocker les valeures A/D du MSEGQ7.
  int InputValue; // Pour stocker la valeur du signal d'entrée.
  int InputRv; // Pour stocker la valeur lue du potentiometre sur entrée analoguique 1.
  int ResultatCompMSEGQ7AGC;  // Pour stocker la valeur de comparaison entre le signal d'entrée et le resultat du MSEGQ7 pour l'AGC.
//  int InputSignal; // Pour stocker la valeur du signal d'entrée.

  float InputSignalFiltre; // Pour stocker la valeur lue du signal Filtré par RC sur entrée analoguique 2.
  int CoefficientCalculBeat = 100; // 96  Sensibilité de la détection du Beat en %.
  float CoefficientCalculBass = 96; // 96  Sensibilité de la détection des Basses.
  float ResultatCalculBass; // Resultat du Calcul des Basses.
  int ResultatCalculBass2; // Resultat du Calcul des Basses.
  float AgcValeurMappeInput;   // Variable de sortie de la macro pour l'AGC.
  float AgcValeurConvertieInput;   // Variable de sortie de la macro pour l'AGC.

//  float AgcValeurMappeBeat;   // Variable de sortie de la macro pour l'AGC.


  int AgcInputBass;   // Variable d'entrée de la macro pour l'AGC.
  int AgcInputBeat;   // Variable d'entrée de la macro pour l'AGC.

  int ResultatCompBeatBass;  // Pour stocker la valeur de comparaison entre les Beats et les Basses pour la détection perso AFA du signal a declencher les scenes DMX.
  int ResultatCompBass;  // Pour stocker la valeur de comparaison des Basses pour la détection perso AFA du signal a declencher les scenes DMX.

  float NewValueDetectVarBass;
  float OldValueDetectVarBass;
  int ValueDetectVarBass;
  int DetectionVarBass;
  int DetectionVarBass2;

  int DetectionVarBass3;

  
  int CoefDetectVarBass = 95; // En %
  int CoefVarBass = 80; // En %  
  float DifferenceVarBass;
  

  float NewValueVarEntree;
  float OldValueVarEntree;
  float EcartVarEntree; 
  float EcartVarEntree2; 
  float ValueVarEntree;


  int DetectionBeat;  // Pour stocker la detection du Beat.
  int DetectionBass;  // Pour stocker la detection des Basses. 

  int NewHigh = 0;
  int Counter = 0;
  int i;

  int BPM;
  int CalculBPM;
  
  int VariableCalculBPM;  
  int FrequenceCalculBPM;

  unsigned long previousMillis = 0;        // will store last time LED was updated
  const long Intervale = 500; // 100mS          // 1000 // interval at which to blink (milliseconds)
  int Compteur;
  int Delay;

  signed long next;

  String MsgString;
  String StringERRORNOTLOGGED = "ERROR|NOT LOGGED";
  String StringERRORBADPASSWORD = "ERROR|BAD PASSWORD";
  String StringHELLO;
  String StringHELLOA2SMDP;
  String StringBPM;
  String StringBEAT;
  String StringBEAT_ON;
  String StringBEAT_OFF;
  String StringCUE;
  String StringBUTTON_PRESS;
  String StringBUTTON_RELEASE;
  String StringFADER_CHANGE;
  String StringBUTTON_LIST;



void setup()
{



  IPAddress myIP(192,168,10,3);

  Ethernet.begin(mac,myIP);

  server.begin();

  Serial.begin(115200);

  Serial.print("localIP: ");
  Serial.println(Ethernet.localIP());
  Serial.print("subnetMask: ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("gatewayIP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("dnsServerIP: ");
  Serial.println(Ethernet.dnsServerIP());

  next = 0;

  pinMode(MSEGQ7AnalogPin, INPUT);
  pinMode(InputSignalFiltreAnalogPin, INPUT);

  pinMode(LedPin1, OUTPUT);
  pinMode(LedPin2, OUTPUT);
  pinMode(LedPin3, OUTPUT);  
  pinMode(LedPin4, OUTPUT);  
  pinMode(LedPin5, OUTPUT);  
  pinMode(LedPin6, OUTPUT);  
  
  pinMode(StrobePin, OUTPUT);
  pinMode(ResetPin, OUTPUT);
  analogReference(DEFAULT);

  digitalWrite(ResetPin, LOW);
  digitalWrite(StrobePin, HIGH);

  Serial.println("MSGEQ7 test par AFA.");





}





// 20 - 200hz Single Pole Bandpass IIR Filter
float bassFilter(float sample) {
    static float xv[3] = {0,0,0}, yv[3] = {0,0,0};
    xv[0] = xv[1]; xv[1] = xv[2]; 
    xv[2] = (sample) / 3.f; // change here to values close to 2, to adapt for stronger or weeker sources of line level audio  
    

    yv[0] = yv[1]; yv[1] = yv[2]; 
    yv[2] = (xv[2] - xv[0])
        + (-0.7960060012f * yv[0]) + (1.7903124146f * yv[1]);
    return yv[2];
}

// 10hz Single Pole Lowpass IIR Filter
float envelopeFilter(float sample) { //10hz low pass
    static float xv[2] = {0,0}, yv[2] = {0,0};
    xv[0] = xv[1]; 
    xv[1] = sample / 50.f;
    yv[0] = yv[1]; 
    yv[1] = (xv[0] + xv[1]) + (0.9875119299f * yv[0]);
    return yv[1];
}

// 1.7 - 3.0hz Single Pole Bandpass IIR Filter
float beatFilter(float sample) {
    static float xv[3] = {0,0,0}, yv[3] = {0,0,0};
    xv[0] = xv[1]; xv[1] = xv[2]; 
    xv[2] = sample / 2.7f;
    yv[0] = yv[1]; yv[1] = yv[2]; 
    yv[2] = (xv[2] - xv[0])
        + (-0.7169861741f * yv[0]) + (1.4453653501f * yv[1]);
    return yv[2];
}







void loop()
{

  OldValueDetectVarBass = NewValueDetectVarBass;
  OldValueVarEntree = NewValueVarEntree;

  LectureEntreesAnalogiques();
  DetectBeat();
  DetectBass();  
  CompBeatBpmAFA();

  DetectVarBass();

  CalculsAgcAFA(); // NE NECESSITE PAS D'AGC

  CalculsBPM();

//  AfficheValeurs();

  ComA2S2Live();
    
} // Fin du void loop()
void ComA2S2Live() 
{

  int i2;

  if (((signed long)(millis() - next)) > 0)
    {
      next = millis() + 10;
      Serial.println("Connexion Client...");
// replace hostname with name of machine running tcpserver.pl
//      if (client.connect("server.local",5000))
      if (client.connect(IPAddress(192,168,10,2),7348))
        {
//          Serial.println("Client connecté");

// Envoyer l'identifiant et mot de passe via HELLO|A2S|1234
// Le simple fait d'appeler la méthode println(...) au lieu de print(...) 
// ajoute CR ('\r') et LF ('\n') à la chaîne envoyée.
     client.println("HELLO|A2S|1234"); // Envoyé la demande de connexion
     
//     Serial.print("HELLO|A2S|MDP envoyé");
//     Serial.println(); 
          
          client.println("DATA from Client");
          while(client.available()==0)
            {
              if (next - millis() < 0)
                goto close;
            }
          int size;
          while((size = client.available()) > 0)
            {
              uint8_t* msg = (uint8_t*)malloc(size);
              size = client.read(msg,size);
//              Serial.write(msg,size);


/*
// Permet de décoder le mot recu en fonction de sa taille
  Serial.print(size);
  Serial.print(" : ");
  for(int car=0;car<size;car++) {
    Serial.write(msg[car]);
    Serial.write('=');
    Serial.print(msg[car], HEX);
    Serial.write(' ');
  }
  Serial.println();
*/

// Compare string1 à string2 et retourne 0 si egal
// size - 2 car CRLF donc 2 caractères à la fin du string pour strncmp car size
// sinon strcmp avec retour chariot + retour ligne (CRLF)
    if (strcmp(msg,"ERROR|NOT LOGGED\r\n") == 0)
//    if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
    {
        Serial.print("ERROR NOT LOGGED");
        Serial.println(); 
//        goto close;
    } // Fin du if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
    

//    if (strncmp(msg,"ERROR|BAD PASSWORD",(size-2)) == 0)
    if (strcmp(msg,"ERROR|BAD PASSWORD\r\n") == 0)
    {
        Serial.print("ERROR BAD PASSWORD");
        Serial.println(); 
//        goto close;
    } // Fin du if (strncmp(msg,"ERROR|BAD PASSWORD",(size-2)) == 0)
    

//    if (strncmp(msg,"HELLO",(size-2)) == 0)
    if (strcmp(msg,"HELLO\r\n") == 0)
    {
        Serial.print("HELLO Recu");
        Serial.println(); 
//        goto close;
    } // Fin du if (strncmp(msg,"ERROR|BAD PASSWORD",(size-2)) == 0)

//    if (strncmp(msg,"BEAT_ON",(size-2)) == 0)
    if (strcmp(msg,"BEAT_ON\r\n") == 0)
    {
        Serial.print("BEAT_ON Recu");
        Serial.println(); 
        client.println("BEAT"); // Envoyé la demande de connexion
        Serial.print("BEAT envoyé");
        Serial.println(); 
    } // Fin du if (strncmp(msg,"BEAT_ON",(size-2)) == 0)
          
              free(msg);
            }
close:
          //disconnect client
          Serial.println("Client deconnecte");
          client.stop();
        }
      else
        Serial.println("Probleme connexion client");
    }

} // Fin du void ComA2S2Live()

Bon, je change de librairie et de carte Arduino, je passe de Nano et ENC28J60 à MEGA 2560 et Ethernet Shield, la librairie semble énormément plus rapide pour les échanges tcp…

Le problème est que j’arrive à recevoir que le premier échange avec le logiciel tiers.

j’arrive à me connecter

je vérifie qu’on se conne au 192.168.10.3 port 7348

si oui j’envoie HELLO|A2S|MdP en TCP au logiciel

le logiciel me repond Hello

Et la, j’attends le mot BEAT_ON du soft mais je n’arrive pas à le lire, pouvez vous regarder mon code et me dire ce qui ne va pas, je passe des journées complètes dessus j’en peux plus… Merci d’avance

  #include <SPI.h>
  #include <Ethernet.h>


// Set values below to match your network needs:
  byte mac[] = {0x54,0x55,0x58,0x10,0x00,0x24};   // MAC Address
  byte ip[] = {192,168,10,3};                          // Network Address
  byte gateway[] = {192,168,10,1};                      // Gateway Address
  byte subnet[] = {255, 255, 255, 0};                  // Subnet Mask
  byte server[] = { 192,168,10,4 }; // ip server

  String readString;

  char MessageClient;
  int size;

  uint8_t* msg;

  int size2;

  uint8_t* msg2;
  
  signed long next;

  unsigned long previousMillis = 0;     

  const long interval = 100;

  EthernetClient client;                               // Define client


void setup()
{
  Serial.begin(115200);
  
  Ethernet.begin(mac, ip);          // Start the Ethernet connection
                                                // This is the maximum we can do with an UNO
   Serial.println("connection en cours...");
   
  delay(1000);
 
  

/*
  if (client.connect(server, 7348)) {
    Serial.println("connecté");
    client.println();
  } 
  else 
  {
    Serial.println("connection failed");
  }
*/
  
  next = 0;
} // Fin du void setup()                                                // A MEGA could easily handle more

void loop()
{


  if (((signed long)(millis() - next)) > 0)
    {
      next = millis() + 1;

    Serial.println("Connexion Client...");
    
  if (client.connect(server, 7348)) 
  {
    Serial.println("Client connecté");
    
//    client.println();

     client.println("HELLO|A2S|1234"); // Envoyé la demande de connexion
     
     Serial.print("HELLO|A2S|MDP envoyé");
     Serial.println(); 

  
          client.println("DATA from Client");
      
//     client.println();

          while(client.available()==0)
            {
              if (next - millis() < 0)
                goto close;
            }

          while((size = client.available()) > 0)
            {
              msg = (uint8_t*)malloc(size);
              size = client.read(msg,size);
              Serial.write(msg,size);
/*
// Permet de décoder le mot recu en fonction de sa taille
  Serial.print(size);
  Serial.print(" : ");
  for(int car=0;car<size;car++) {
    Serial.write(msg[car]);
    Serial.write('=');
    Serial.print(msg[car], HEX);
    Serial.write(' ');
  }
  Serial.println();
*/



//    if (strcmp(msg,"ERROR|NOT LOGGED\r\n") == 0)
    if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
    {
        Serial.print("ERROR NOT LOGGED Recu");
        Serial.println(); 
    } // Fin du if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
    

//    if (strcmp(msg,"ERROR|BAD PASSWORD\r\n") == 0)
    if (strncmp(msg,"ERROR|BAD PASSWORD",(size-2)) == 0)
    {
        Serial.print("ERROR|BAD PASSWORD Recu");
        Serial.println(); 
    } // Fin du if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
   

//    if (strcmp(msg,"BEAT_ON\r\n") == 0)
    if (strncmp(msg2,"BEAT_ON",(size2-2)) == 0)
    {
        Serial.print("BEAT_ON Recu");
        Serial.println(); 
    } // Fin du if (strncmp(msg,"BEAT_ON",(size-2)) == 0)

  
//    if (strcmp(msg,"HELLO\r\n") == 0)
    if (strncmp(msg,"HELLO",(size-2)) == 0)
    {
        Serial.print("HELLO Recu");
        Serial.println(); 
    } // Fin du if (strncmp(msg,"HELLO",(size-2)) == 0)
 

    } // Fin du if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
   

//    if (strcmp(msg,"BEAT_ON\r\n") == 0)
    if (strncmp(msg,"BEAT_ON",(size-2)) == 0)
    {
        Serial.print("BEAT_ON Recu");
        Serial.println(); 
    } // Fin du if (strncmp(msg,"ERROR|NOT LOGGED",(size-2)) == 0)
   

        free(msg);
        
            }
close:
          //disconnect client
          Serial.println("Client déconnecté");
          client.stop();

  } 
  else 
  {
    Serial.println("Erreur de connection");
  }


}

personne ???

Indente correctement ton code (Control-T) et supprime les lignes vides inutiles, ça augmentera tes chances d'être lu !