L'intervalle d'au moins 15s est à réa dans le code , soit par delay() soit par l'utilisation de millis, soit dans mon cas par la durée de mise en sommeil profond (deep-sleep).
Sans librairie ThingSpeak j'ai plutôt fait des requêtes GET dans ce style :
// connection TCP au serveur désignée par 'host','port'
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("erreur de connection");
Serial.println("attente x sec...");
delay(10);
}
// préparer la requete GET à ThingSpeak
String url = "/update?key=";
url += thingspeak_key;
url += "&field1=";
url += String(vbatt);
url += "&field2=";
url += String(temp_celsius);
url += "&field3=";
url += String(duree); // envoi dure session complète précédente (@ramRTC)
// envoyer requete GET au serveur
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
//lire la réponse ThingSpeak
String line = client.readStringUntil('\r');
client.println(line);
Serial.println("fermeture de la connection");
client.stop();