#define WeatherCloudServer "188.164.196.110"
#define WeatherCloudID "xxxxxxxxxx"
#define WeatherCloudKey "xxxxxxxxxx"
if (wifiWethCloud.connect(WeatherCloudServer, 80)) {
Serial.println("La connexion à WeatherCloud a été acceptée.");
wifiWethCloud.print ("GET /v01/set");
wifiWethCloud.print ("/wid/"); wifiWethCloud.print(WeatherCloudID);
wifiWethCloud.print ("/key/"); wifiWethCloud.print(WeatherCloudKey);
wifiWethCloud.print ("/softwareid/"); wifiWethCloud.print ("v1PAmerciApg68390");
wifiWethCloud.print ("/temp/"); wifiWethCloud.print(contenu[0]); // température extérieure
wifiWethCloud.print ("/hum/"); wifiWethCloud.print(contenu[1]); // humidité relative
wifiWethCloud.print ("/bar/"); wifiWethCloud.print(contenu[2].toInt() * 10); // pression atmosphérique
// wifiWethCloud.print ("/dew/"); wifiWethCloud.print(dew); // point de rosée
// wifiWethCloud.print ("/heat/"); wifiWethCloud.print(heat);
// wifiWethCloud.print ("/battery/"); wifiWethCloud.print(Voltage * 10);
// wifiWethCloud.print ("/rain/"); wifiWethCloud.print(pluieJour * 10); // quantite de pluie dans une journee
// wifiWethCloud.print ("/rainrate/"); wifiWethCloud.print(pluieHeure * 10); // quantite de pluie dans une heure
// wifiWethCloud.print ("/chill/"); wifiWethCloud.print(windChill * 10); // refroidissement éolien
// wifiWethCloud.print ("/wspd/"); wifiWethCloud.print(mParSec(vitesseVent) * 10); // vitesse du vent en km/h
// wifiWethCloud.print ("/wdir/"); wifiWethCloud.print(angw); // direction du vent
// wifiWethCloud.print ("/wspdhi/"); wifiWethCloud.print(mParSec(vitesseRafale) * 10); //force des rafales - pointes de vent
//wifiWethCloud.print("/uvi/"); wifiWethCloud.print(Uvi * 10); // index uv x10 [0,160] 8.0->80 //indice UV
//wifiWethCloud.print("/solarrad/"); wifiWethCloud.print(Uvj * 10); // watts/m2 x10 [0,20000] 1050.0->10500 // wattage du soleil
wifiWethCloud.println("/ HTTP/1.1");
wifiWethCloud.print ("Host: ");
wifiWethCloud.println(WeatherCloudServer);
wifiWethCloud.println("Connection: close");
wifiWethCloud.println();
Serial.print ("Température envoyée: "); Serial.println(contenu[0]); // température extérieure
Serial.print ("Humidité envoyée : "); Serial.println(contenu[1]); // humidité relative
Serial.print ("Pression barométrique : "); Serial.println(contenu[2]); // pression atmosphérique
Serial.println("Données envoyées vers Weathercloud avec succès.\n");
wifiWethCloud.stop();
} else {
Serial.println("Erreur de connection à Weathercloud");
}
En terminal, je reçois confirmation de transmission ("Données envoyées vers Weathercloud avec succès.\n");
Mais, de toute évidence, mes données ne sont pas reçues par le serveur car aucune mise à jour n'a été publiée en 36 heures de transfert aux 60 secondes !
Dans le code de pg68390, je vois des multiplication par 10 des température et pression.
Est-ce qu'une pression trop basse ( 100hPa ou lieu de 100kPa - 1000 hPa ) pourrait disqualifier tout le transfert ?
12:11:10.368 -> La connexion à WeatherCloud a été acceptée.
12:11:10.433 -> Température envoyée: -2.69
12:11:10.433 -> Humidité envoyée : 72.31
12:11:10.433 -> Pression barométrique : 101.24
12:11:10.433 -> Données envoyées vers Weathercloud avec succès.
Ce me semble donc bon.
Pour lier mon appareil, il me fallut fournir un site web. L'appareil est lié mais le transfert de données ne fonctionne toujours pas.
J'ai inscrit marque et modèles comme « autres » puisque c'est ma ESP32cam qui transmet grâce via code ci-haut.
oui, j'ai bien copié et collé les ID et clef reçus de WeatherCloud dans mon code arduino.
Dans ce genre de cas, il est intéressant d'afficher l'URL que tu utilise sur le moniteur série, afin d'essayer cette URL à la main ou de vérifier celle-ci a ce que tu ferais dans un navigateur WEB.
Sinon dans cet documentation, il est indiqué que tu ne dois pas envoyer de nombre à virgule flottante ou des réels, mais des entiers, avec le dernier chiffre représentant le chiffre à après la virgule, c'est a dire que 72.31 doit être arrondis à 72.3 puis convertit en entier 723
Oh que c'est pertinent ça!
Mais où donc avez-vous trouvé cette documentation ? !!!!
J'en prends bonne note et corrigerai mes valeurs conformément à ce que vous écrivez ci-haut et ce que je trouverai dans la doc. C'est clair que mes chiffres ont besoin de retouche, car ils ont presque tous des virgules et des valeurs qui suivent ces virgules.
Merci à tous,
ça progresse très bien.
J'ai réussi un transfert de données en inscrivant l'adresse et ses données directement dans la barre d'un fureteur web (HTTP, port 80). Il ne me reste donc qu'à reconstruire cela dans mon programme Arduino.
Les valeurs retournées par la fonction de vérification comptent un beau «200» reçu du serveur comme si les valeurs avaient été enregistrées.
En fait, en plus de 3 heures de différents tests, une seule valeur a été engrangée par le serveur, avec le code ci-haut. Depuis: rien.
Bien sûr, si vous tentez de vérifier ma page sur WeatherCloud vous serez tenté de dire que ça fonctionne, mais c'est un trucage perso.
J'envoie mes données vers mon serveur (celui qui affichait précédemment et encore le fait-il la page Météo actuelle
Une tâche « CRON » fait passer les données de la page Météo actuelle à WeatherCloud.
Étant en réduction de mes activités web, je veux abandonner la page « météo actuelle » à la faveur de WeatherCloud. J'aimerais donc voir mon problème résolu.
L'URL que tu construit n'est pas la même que celle que tu as testé, c'est normal ?
ce que tu construit:
/v01/set/wid/monIDdappareil/key/maCLEFappareil/softwareid/v1PAmerciApg68390/temp/68/hum/687/bar/10022