traitement des données en GET

Bonsoir, pour mon projet domotique où j utilise nrf24l01 comme moyen de communication entre mes modules j'ai souvant un soucis avec uint16_t qui n'est pas en char ou un int. Aujourd'hui je souhaite envoyer des donnés à mes différents modules via le web.
je récupères les informations dans l'url :

http://xx.xx.xx.xx/?module=2&led=on

if (c == '\n') {
       
 String cible;
  String module_id;
  String msg_module;
  char payload[23];
  uint16_t moduleID;
  
  cible = readString.substring (6,12); 
  module_id = readString.substring (13,14); 
  msg_module = readString.substring (15,38); 

    if(cible == "module"){

    msg_module.toCharArray(payload, 23);
    
    RF24NetworkHeader header(module_id);
    bool ok = network.write(header,&payload,sizeof(payload));
    if (ok)
      Serial.println("ok.");
    else
      Serial.println("failed.");
   }

erreur

serveur_v2.ino: In function 'void on_a_un_client()':
serveur_v2:227: error: no matching function for call to 'RF24NetworkHeader::RF24NetworkHeader(String&)'

lorsque je mets 1 ou X à la place de module_id mon code fonctionne. Mais je n'arrive pas à convertir le string en uint16_t pour l'utiliser dans le header. J'ai un niveau très bas en C et là je bloque vraiment.
merci d'avance

Voir là: toInt() - Arduino Reference
Evidemment avant de faire la conversion il faut isoler la valeur à convertir dans une nouvelle chaîne par un appel à substring.

merci je testerai ça dès que possible :slight_smile: merci beaucoup

Je n'ai pas réussi a utiliser StringToInt mais j'ai trouvé une autre solution. j'y suis presque, je n'arrive pas a faire une boucle pour stocker intégralité du msg, quand je test je n'ai une suite de chiffre comme résultat :frowning:

void on_a_un_client_id()
{
 if (client.connected()) { 
   while (client.available()) {
    
    if( client.find("GET /") ) {    
      while(client.findUntil("module", "\n\r")){     
      int cible = client.parseInt();
      char msg = client.read();
      char msg2 = client.read();
    
      
      Serial.print(" module cible : ");
      Serial.println(cible);
      Serial.print(" message ");
      Serial.print(msg);
      Serial.println(msg2); 
     
     /***/
     RF24NetworkHeader header(cible); 

     bool ok = network.write(header,&msg,sizeof(msg));
     if (ok)
      Serial.println("ok.");
     else
      Serial.println("failed.");
      
      /***/
       }
    }
    page_web(); 
    delay(1);
    client.stop();
   
    } // fin du client available
   } // --- fin if client connected
  }//Fin de la foncti

salut, il te manque des trucs pour la gestion du GET

  EthernetClient client = server.available();
  if (client) {
    String readString = String(60); 
    byte lenreadstr = 60;
    boolean clb = true;
    
    while (client.connected()) {
      if (client.available()) {
        char c = client.read(); //lit le caractère reçu
        if (readString.length() < lenreadstr) readString += c; //créé le message reçu

        if (c == '\n' && clb ) { //teste que le message reçu est complet
          if (readString.indexOf("GET /?") > 0) {
                   //ici on a le message complet, on peut l'analyser 
                    interprete(readString);
          }
          //ici on affiche la page HTML

          //fin de page envoyée
          client.stop();
          readString = "";
          break; 
        }
        //teste le caractère reçu pour savoir ou en est le message recu
        if (c == '\n') clb = true;
        else if (c != '\r') clb = false;
      } //fin if client available
    } // fin while client connect

cool merci je test ça :slight_smile: