Problème programme ESP32 Web server

Bonjour,
j'essaie d'afficher mes valeurs de température et d'humidité sur un site web, pour ce faire j'ai trouvé un bon tuto :
ESP32 DHT11/DHT22 Web Server using Arduino IDE | Random Nerd Tutorials
et j'ai modifié son programme étant donné que je n'utilise pas le même que lui.
voici mon programme :


#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#include "WiFi.h"
#include "ESPAsyncWebServer.h"

#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C

const char* ssid = "";
const char* password = "";

AsyncWebServer server(80);

unsigned long delayTime;

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <style>
    html {
     font-family: Arial;
     display: inline-block;
     margin: 0px auto;
     text-align: center;
    }
    h2 { font-size: 3.0rem; }
    p { font-size: 3.0rem; }
    .units { font-size: 1.2rem; }
    .dht-labels{
      font-size: 1.5rem;
      vertical-align:middle;
      padding-bottom: 15px;
    }
  </style>
</head>
<body>
  <h2>ESP32 DHT Server</h2>
  <p>
    <i class="fas fa-thermometer-half" style="color:#059e8a;"></i> 
    <span class="dht-labels">Temperature</span> 
    <span id="temperature">%TEMPERATURE%</span>
    <sup class="units">&deg;C</sup>
  </p>
  <p>
    <i class="fas fa-tint" style="color:#00add6;"></i> 
    <span class="dht-labels">Humidity</span>
    <span id="humidity">%HUMIDITY%</span>
    <sup class="units">&percnt;</sup>
  </p>
</body>
<script>
setInterval(function ( ) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("temperature").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "/temperature", true);
  xhttp.send();
}, 10000 ) ;

setInterval(function ( ) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("humidity").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "/humidity", true);
  xhttp.send();
}, 10000 ) ;
</script>
</html>)rawliteral";

// Replaces placeholder with DHT values
float processor(const String& var){
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return bme.readTemperature();
  }
  else if(var == "HUMIDITY"){
    return bme.readHumidity();
  }
  return float();
}

void setup() {
    Serial.begin(115200);
    while(!Serial);    // time to get serial running
    Serial.println(F("BME280 test"));

    unsigned status;

     WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");

    Serial.println(WiFi.localIP());

    // Route for root / web page
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });
  server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", bme.readTemperature().c_str());
  });
  server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", bme.readHumidity().c_str());
  });

  // Start server
  server.begin();
  
    // default settings
    status = bme.begin();  
    // You can also pass in a Wire library object like &Wire2
    // status = bme.begin(0x76, &Wire2)
    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
        Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
        Serial.print("        ID of 0x60 represents a BME 280.\n");
 
        while (1) delay(10);
    }
    
    Serial.println("-- Default Test --");
    delayTime = 1000;

    Serial.println();
}


void loop() { 
    printValues();
    delay(delayTime);
}


void printValues() {
    Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    Serial.println(" °C");

    Serial.print("Pressure = ");

    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa");

    Serial.print("Approx. Altitude = ");
    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
    Serial.println(" m");

    Serial.print("Humidity = ");
    Serial.print(bme.readHumidity());
    Serial.println(" %");

    Serial.println();
}

J'ai ceci en message d'erreur : exit status 1
invalid conversion from 'const char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive]

J'ai regardé sur internet mais je n'ai pas trouvé quelqu'un avec le même problème que moi .
J'espère que vous pourrez m'aider.

Vous remerciant

Message déplacé à l'endroit indiqué dans les Règles du Forum Francophone qu'il faut sérieusement consulter !
C'est par ici : https://forum.arduino.cc/t/reglement-et-bonnes-pratiques-du-forum-francophone/861014

Quel est le problème ? j'ai regardé je ne vois pas ce que je fais de mal

Réalisation/projets finis ,
Présentations de projets/réalisations complets et fonctionnels.

Est en quelque sorte la vitrine d'exposition des réalisations abouties, pas le lieu pour poser des questions sur des réalisations en chantier.

D'où le déplacement opéré.....

1 Like

Lorsqu'on a un progamme relativement long qui plante, il faut isoler le défaut. Donc petit à petit réduire le programme à la section où ça plante (ici on ne voit même pas le numéro de ligne où vous prenez l'erreur). En général, en faisant ça on finit par trouver où est le problème. Et quand on ne trouve pas, on envoie le programme réduit à quelques lignes sur un forum pour demander de l'aide. Si vous copiez l'ensemble d'un programme tel que le vôtre, que vous avez copié/collé et modifié, vous espérez que quelqu'un va prendre le temps (peut être 2 mn mais peut-être 1 h) pour comprendre pourquoi votre modification a planté le programme original, qu'il faut aller chercher ailleurs et comparer avec le vôtre pour comprendre ce que vous avez modifié. Vous pensez que les gens un peu expérimentés sur ce forum qui lisent votre appel à l'aide n'ont que ça à faire ?

Il faudrait que tu répondes avec l'ensemble du message d'erreur donné par le compilateur, pas uniquement la dernière ligne. Pour cela tu peux utiliser le bouton qui de trouve à côté de la fenêtre de compilation, qui indique un truc du genre 'copier le message d'erreur'.

Le problème est que la fonction processor a un prototype précis :

String processor(const String& var);

Elle ne peut donc retourner un float, mais une String. Revoir le tutoriel.

Autre problème :
bme.readTemperature() et readHumidity() retournent un float, pas une String.

    request->send_P(200, "text/plain", String(bme.readTemperature()).c_str());
    request->send_P(200, "text/plain", String(bme.readHumidity()).c_str());

Il manque une parenthèse fermante, probablement ici :

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  } // ici

La fonction printValues devrait être placée avant loop().