Pour extension couverture radio j ai pas. Tu peux tenter de l activer mais je pense pas que ce soit ca
A part ca je ne vois rien d autre d anomal ….
Bon on voit demain avec des prog de tests
Essaie le code ci dessous en suivant les log dans le moniteur serie de l arduino
Avant de compiler televerser dans l esp ( en dehors de ton montage routeur juste alimenté par l usb) tu mets bien entendu ton vrai ssid wifi et son mot de passe et aussi tu mets la bonne ip du shelly
A part ca je ne vois rien d autre d anomal ….
Bon on voit demain avec des prog de tests
Essaie le code ci dessous en suivant les log dans le moniteur serie de l arduino
Avant de compiler televerser dans l esp ( en dehors de ton montage routeur juste alimenté par l usb) tu mets bien entendu ton vrai ssid wifi et son mot de passe et aussi tu mets la bonne ip du shelly
Code :
#include <WiFi.h>
#include <HTTPClient.h>
// ⚡ Paramètres réseau
const char* ssid = "Ton_SSID";
const char* password = "Ton_MotDePasse";
// ⚡ Adresse IP locale du Shelly Pro EM
const char* shellyURL = "http://192.168.1.50/rpc/EM.GetStatus?id=0";
// Variables de test
unsigned long interval = 1000; // Intervalle en ms (démarrage à 1s)
unsigned long lastRequest = 0;
unsigned long serieStart = 0;
int successCount = 0;
int failCount = 0;
bool serieActive = false;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Connexion WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n✅ Connecté au WiFi !");
Serial.println("Début du test de charge Shelly Pro EM...");
// Initialiser la première série
serieStart = millis();
serieActive = true;
}
void loop() {
unsigned long currentMillis = millis();
if (serieActive && (currentMillis - lastRequest >= interval)) {
lastRequest = currentMillis;
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(shellyURL);
int httpCode = http.GET();
if (httpCode > 0) {
successCount++;
Serial.printf("✅ [%d ms] Réponse OK\n", interval);
} else {
failCount++;
Serial.printf("❌ [%d ms] Timeout ou erreur : %s\n", interval, http.errorToString(httpCode).c_str());
}
http.end();
}
}
// Vérifier si la série de 10 secondes est terminée
if (serieActive && (currentMillis - serieStart >= 10000)) {
int total = successCount + failCount;
float successRate = (total > 0) ? (successCount * 100.0 / total) : 0;
Serial.printf("\n? Résultats pour intervalle %d ms (10s) : %d réussites / %d requêtes (%.1f%%)\n\n",
interval, successCount, total, successRate);
// Préparer la prochaine série
interval = (interval > 50) ? interval - 50 : 50;
successCount = 0;
failCount = 0;
serieStart = currentMillis;
if (interval == 50) {
Serial.println("✅ Test terminé : atteint la limite basse (50 ms).");
serieActive = false;
}
}
}