Afficher température + pilotage relais

Bonjour à tous,
je possède un capteur de température DS18B20 et un relais. Le but de mon programme est de piloter un relais via une instruction envoyé sur internet et d'afficher la température à chaque pilotage de relais.
Le pilotage du relais fonctionne bien. En revanche, je n'arrive pas à afficher la température.
Est ce que vous savez d'où vient mon erreur ? J'ai un doute sur ces ligne là :

server.send(200, "text/plain", "Coupure regulateur DeltaDore, activation Arduino \r\n");
//Affichage temperature
getTemperature();
server.send(200, "text/plain", temperatureCString +"°C");

Programme entier :

    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <ESP8266WebServer.h>
    #include <ESP8266mDNS.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>

 
    #define ONE_WIRE_BUS 5
    const int Relais1 = 4;    // relais 1 


    // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
    OneWire oneWire(ONE_WIRE_BUS);
    
    // Pass our oneWire reference to Dallas Temperature. 
    DallasTemperature DS18B20(&oneWire);
    char temperatureCString[6];

    //initialisation des variables liées au wifi
    const char* ssid = "XXXX"; // remplacer par le SSID de votre WiFi
    const char* password = "XXXX"; // remplacer par le mot de passe de votre WiFi
    // the IP address for the shield:
    IPAddress ip(192, 168, 1, 200); // where xx is the desired IP Address
    IPAddress gateway(192, 168, 1, 1); // set gateway to match your network
    IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your network
    ESP8266WebServer server(80); // on instancie un serveur ecoutant sur le port 80
    

    void setup(void)
    {
        //Configuration des pins de la carte
        pinMode(Relais1,OUTPUT);    // Relais1


        //Initialisation des relais au démarrage
        digitalWrite(Relais1,LOW);
        
        //Configuration du wifi
        Serial.begin(115200);

        DS18B20.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
     
        // on demande la connexion au WiFi
        WiFi.config(ip, gateway, subnet);
        WiFi.begin(ssid, password);
        Serial.println("");
        // on attend d'etre connecte au WiFi avant de continuer
        while (WiFi.status() != WL_CONNECTED) 
        {
          delay(500);
          Serial.print(".");
        }
        // on affiche l'adresse IP qui nous a ete attribuee
        Serial.println("");
        Serial.print("IP address: ");
        Serial.println(WiFi.localIP());

        // on commence a ecouter les requetes venant de l'extèrieur
        server.begin();


        server.on("/ON", []()
        {
            server.send(200, "text/plain", "Coupure regulateur DeltaDore, activation Arduino \r\n");
			//Affichage temperature
			getTemperature();
			server.send(200, "text/plain", temperatureCString +"°C");
			
            digitalWrite(Relais1,HIGH);
        });

        server.on("/OFF", []()
        {
            server.send(200, "text/plain", "Coupure Arduino, activation regulateur DeltaDore");
						//Affichage temperature
			getTemperature();
			server.send(200, "text/plain", temperatureCString +"°C");
            digitalWrite(Relais1,LOW);
        });
    }

    void getTemperature() 
    {
      float tempC;
      do 
      {
        DS18B20.requestTemperatures(); 
        tempC = DS18B20.getTempCByIndex(0);
        dtostrf(tempC, 2, 2, temperatureCString);
        delay(100);
      } while (tempC == 85.0 || tempC == (-127.0));
    }
    
    void loop(void)
    {
      // A chaque iteration, on appelle handleClient pour que les requetes soient traitees
      server.handleClient();
    }

Merci pour votre aide.

Bonjour,

Comme son nom l'indique "temperatureCString" est une CString, c-à-d un tableau de char.
On ne peut pas concaténer deux CStrings avec "+", il faut utiliser strcat(). "+" sert à concaténer des Strings (l'objet, écrit avec une majuscule). Cela tombe bien car la méthode server.send attend un objet String et non une CString. Il faut donc tout basculer en String (avec les réserves d'usage, voir plus bas).

Enfin, le signe degré se dit "°" en html, le langage que comprennent les navigateurs.

Il vous faut donc écrire :

server.on("/ON", []()
        { String Bf = String("Coupure r&eacute;gulateur DeltaDore, activation Arduino \r\n");
            getTemperature();
            Bf = Bf + String(temperatureCString) + " &deg; C";
            server.send(200, "text/plain", Bf);
				
            digitalWrite(Relais1,HIGH);
        });

En prime, je vous ai rajouté l'accent en html sur "régulateur".
Même modif pour l'autre routine.

Un mot de précaution : la bibliothèque ESP8266WebServer.h est écrite en utilisant massivement les
Strings (Objet). Cela peut poser des problèmes de stabilité et de fiabilité. C'est très bien expliqué par
J-M-L dans un de ses posts, donc méfiance, surtout si vous voulez piloter un thermostat à distance...
Je mets la dernière main à un thermostat connecté sur ESP8266. Je le publierai dans quelques temps.

Bonne bidouille,

MicroQuettas