1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| #include <WiFi.h>
#include <HTTPClient.h>
const char *ssid = "AP-ESP32"; // le nom du réseau
const char* dataString = "payload"; // le nom du paramêtre pour la requête GET ou dans le POST (format formulaire)
String texte_a_envoyer = "blablablablabla";
const size_t tailleMaxReq = 4000;// au départ à 200
char requete[tailleMaxReq + 1];
const uint32_t tempsDeSommeil = 5000000ul; // temps en µs ici 5s pour le test
void repos() {
WiFi.disconnect();
esp_sleep_enable_timer_wakeup(tempsDeSommeil);
/// Serial.println("\n-----------\nA bientôt"); Serial.flush();
esp_deep_sleep_start();
}
bool detectionReseau(const char* target) {
uint8_t n = WiFi.scanNetworks();
if (n != 0)
for (int i = 0; i < n; ++i)
if (strcmp(target, WiFi.SSID(i).c_str()) == 0) return true;
return false;
}
void setup() {
Serial.begin(115200); delay(500);
/// Serial.println();
WiFi.mode(WIFI_STA);
WiFi.disconnect(); // oublie l'ancien réseau
if (esp_sleep_get_wakeup_cause() == ESP_SLEEP_WAKEUP_TIMER) //Serial.println("Réveillé par le timer.");
if (detectionReseau(ssid)) { // si on a trouvé le réseau cherché
WiFi.begin(ssid); // on va s'y connecter (ici pas de mot de passe)
byte n = 0;
while (WiFi.status() != WL_CONNECTED) { // on attend au max 5 secondes (10x 500ms) la connexion
delay(500);
if (n++ >= 10) break;
}
if ((WiFi.status() == WL_CONNECTED)) { // Si on est connecté alors on envoie une requête GET puis une POST
HTTPClient http;
IPAddress gateway = WiFi.gatewayIP();
// on bâtit l'URI pour le serveur sous la forme "http://192.168.4.1/"
char serveurURL[40] = "http://";
strncat(serveurURL, gateway.toString().c_str(), 40); // on ajoute l'adresse IP
strncat(serveurURL, "/", 40); // et le '/' de fin
/*
// ENVOI D'UNE REQUETE SOUS FORME DE GET
Serial.println("-----------");
snprintf(requete, tailleMaxReq, "%s?%s=%lu", serveurURL , dataString, millis() ); // le payload c'est la valeur de millis()
Serial.print("Envoi Requête GET : "); Serial.println(requete);
http.begin(requete);
if (http.GET() > 0) { // le code de retour de la requête GET
Serial.print("Réponse du serveur : "); Serial.println(http.getString()); // ==> vous devriez voir ici la réponse à la requête
} else {
Serial.println("Erreur requête HTTP");
}
http.end();
*/
// ENVOI D'UNE REQUETE SOUS FORME DE POST
/// Serial.println("-----------");
WiFiClient client;
http.begin(client, serveurURL);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
snprintf(requete, tailleMaxReq, "%s=%s", dataString,texte_a_envoyer ); // le payload c'est un texte "millis vaut xxxx"
/// Serial.print("Requête POST : ");
///Serial.println(requete);
int httpResponseCode = http.POST(requete);
Serial.print("Code réponse HTTP POST : ");
Serial.println(httpResponseCode);
http.end();
} else {
/// Serial.print("Impossible de rejoindre le réseau WiFi : "); Serial.println(ssid);
}
} else {
/// Serial.print(ssid); Serial.println(" non détecté.");
}
repos();
}
void loop() {} |
Partager