es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener múltiples valores de los sensores con http.GET()

Tengo un archivo php en mi sitio web que devuelve la lectura de un sensor. Anteriormente, estaba obteniendo esta lectura y mostrándola en mi monitor serie utilizando el código siguiente:

http.begin("http://<mi_sitio_web>/fetch_sensor.php");
  int httpCode = http.GET();                                                                 
  if (httpCode > 0) {
    String payload = http.getString();   
    SensorReading = payload.toInt();
    Serial.print("Lectura del sensor =");
    Serial.print(SensorReading); 
    Serial.println();
  }

Ahora he actualizado mi archivo php para devolver lecturas de varios sensores. Las lecturas se devuelven separadas por comas, como 23, 66, 82, 100.

Estoy buscando actualizar mi código para que las lecturas devueltas por el archivo php se asignen como SensorReading1, SensorReading2, SensorReading3, etc.

Busco la ayuda de expertos…
¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asignar las múltiples lecturas devueltas por el archivo PHP actualizado como variables separadas, puedes hacer lo siguiente:

    1. Cambia la asignación de la variable payload para dividir la cadena por el delimitador de coma:
    String payload = http.getString();
    String readings[4]; // asumiendo que se devuelven 4 lecturas
    int i = 0;
    while (payload.indexOf(',') != -1) { // bucle mientras se encuentre el delimitador de coma
      readings[i] = payload.substring(0, payload.indexOf(',')); // extrae la subcadena hasta el delimitador
      payload = payload.substring(payload.indexOf(',') + 1); // elimina la subcadena extraída y el delimitador de payload
      i++;
    }
    readings[i] = payload; // extrae la última lectura que no tiene un delimitador de coma
    
    1. Asigna cada lectura a una variable separada:
    SensorReading1 = readings[0].toInt();
    SensorReading2 = readings[1].toInt();
    SensorReading3 = readings[2].toInt();
    SensorReading4 = readings[3].toInt();
    

    Tu código actualizado debería lucir algo así:

    “`java
    http.begin(“http:///fetch_sensor.php”);
    int httpCode = http.GET();
    if (httpCode > 0) {
    String payload = http.getString();
    String readings[4]; // asumiendo que se devuelven 4 lecturas
    int i = 0;
    while (payload.indexOf(‘,’) != -1) { // bucle mientras se encuentre el delimitador de coma
    readings[i] = payload.substring(0, payload.indexOf(‘,’)); // extrae la subcadena hasta el delimitador
    payload = payload.substring(payload.indexOf(‘,’) + 1); // elimina la subcadena extraída y el delimitador de payload
    i++;
    }
    readings[i] = payload; // extrae la última lectura que no tiene un delimitador de coma

    SensorReading1 = readings[0].toInt();
    SensorReading2 = readings[1].toInt();
    SensorReading3 = readings[2].toInt();
    SensorReading4 = readings[3].toInt();

    Serial.print(“Lectura del Sensor 1=”);
    Serial.print(SensorReading1);
    Serial.println();
    Serial.print(“Lectura del Sensor 2=”);
    Serial.print(SensorReading2);
    Serial.println();
    Serial.print(“Lectura del Sensor 3=”);
    Serial.print(SensorReading3);
    Serial.println();
    Serial.print(“Lectura del Sensor 4=”);
    Serial.print(SensorReading4);
    Serial.println();
    }
    “`

Comments are closed.