Bonjour à toutes et à tous,
Le problème c'est de réussir à concaténer un float avec un texte en guillemets. Le float (t) doit être convertit en string (celsiusTemp) pour obtenir la requête HTTP ci-dessous:
http.begin("http://192.168.0.71/msg?msg=TEMPERATURE EXTERIEURE:"+ celsiusTemp);
Le problème en détail:
J'ai conçu un afficheur défilant composé de quelques modules matrices led 8x8.
Il est basé sur une puce LOLINV3 qui se connecte à mon réseau wifi.
L'afficheur fonctionne si on envoie un texte codé 'en dur' grâce à une simple requête HTTP comme celle ci-dessous:
http.begin("http://192.168.0.71/msg?msg=BONJOUR A TOUS !"); //HTTP
J'ai à l'extérieur de la maison, un capteur de température/humidité (DHT22) sur un autre ESP8266 connecté lui aussi au réseau wifi. Je souhaite donc envoyer la température extérieure sur mon afficheur défilant à l'aide d'une requête ressemblant à celle-ci:
http.begin("http://192.168.0.71/msg?msg=TEMPERATURE EXTERIEURE:" + celsiusTemp);
Le soucis c'est que la valeur obtenue avec la librairie DHT est un float qu'il faut donc convertir en chaine de caractères.
J'ai essayé le code ci dessous qui utilise la fonction dtostrf mais ça ne fonctionne pas.
Pour l'instant avec ce code j'ai l'erreur: invalid operands of types 'const char [46]' and 'char [7]' to binary 'operator+'
Déclarations des variables:
// Temporary variables
static char celsiusTemp[7];
static char fahrenheitTemp[7];
static char humidityTemp[7];
Dans le loop:
// LECTURE DU SENSOR DE TEMPERATURE DHT22
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Convertit les valeurs en celciusTemp, fahrenheitTemp et humidityTemp
float hic = dht.computeHeatIndex(t, h, false);
dtostrf(hic, 6, 2, celsiusTemp);
float hif = dht.computeHeatIndex(f, h);
dtostrf(hif, 6, 2, fahrenheitTemp);
dtostrf(h, 6, 2, humidityTemp);
// Requête HTTP
http.begin("http://192.168.0.71/msg?msg=BONJOUR A TOUS !"); //HTTP
Après de longues recherches sur le web, j'en conclu qu'il y aurait un bug qui fait que le char obtenu avec la fonction dtostrf n'est pas compatible avec ce que je veux faire.
Voilà, vous savez tout.
Merci d'avance pour toute aide, je suis coincé depuis plusieurs jours