Bonjour à tous,
j'arrive dans le monde de l'Arduino et j'y prends goût!
Pour commencer, j'emprunte du code ici et là et j'apprends.
C'est ce que j'ai fait ici avec, d'une part un code pour météo vers serveur web, d'autre part un code de serveur web local à ESP32.
Bref, j'ai ESP32 à programmer de la façon suivante:
- il doit répondre aux visites sur le port 80
- il doit aussi envoyer des informations à un site web externe où les données reçues depuis ESP32 seront traitées en PHP ( donc: un autre serveur lui aussi répondant au port 80).
Voici mon code résumé:
#include <ESP8266WiFi.h>
#include "SparkFunBME280.h"
#include <dhtnew.h>
const char* meteoHost = "meteo.cartefoi.net"; //Site de destination des données
const int meteoPort = 80;
void setup() {
//Rien de particulier ici
void loop() {
WiFiClient client = server.available();
if (client) {
///Le bout suivant fonctionne bien, la page web est bien affichée lorsque je visite le site depuis un ordinateur ... donc ESP32 réagit parfaitement
Serial.println("Nous avons de la visite");
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
////blabla ... on envoie le code de page web
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}
//Une fois par minute nous enregistrons les données sur cartefoi.net
if ((millis() - precCartef) > intervalCarte) {
msg = versCartefoiMeteo();
}
}
String versCartefoiMeteo() {
WiFiClient clientCarte;
msg = "Tentative de pousser sur " + String(meteoHost) + " ...";
if (!clientCarte.connect(meteoHost, meteoPort)) {
msg += "échouée!";
} else {
msg += " amor¸e";
//blabla, ce que je dois faire pour enregistrer mes données sur le site
//Mise à jour des informations sur cartefoi.net
String url = "/update.php?key=";
url += apiKeyIn;
url += "\r\n";
// Send request to the server
clientCarte.print(String("GET ") + url + " HTTP/1.1\r\nHost: " + meteoHost + "\r\nConnection: close\r\n\r\n");
msg += ", et ... ¡complétée!";
}
precCartef = millis();
return msg;
}
Le résultat obtenu (le contenu de la variable msg) est toujours: « Tentative de pousser sur meteo.cartefoi.net ...échouée! »
Donc ma connexion au serveur distant ne fonctionne pas. Pourquoi!?!?!
C'est ici que ça ne passe pas :
WiFiClient clientCarte;
if (!clientCarte.connect(meteoHost, meteoPort)) {
}
Comme si je ne pouvais pas avoir deux objets de la classe WIFIClient.
Ce n'est pas une faute de frappe, une parenthèse manquante ni une variable non-définie, le correcteur de code l'aurait relevée au moment de compiler. Je bloque.
Merci de me lire et de m'aider.