Récupérer des données à partir de Thingspeak pour les afficher avec ESP32
Bonjour à Tous,
J'ai un projet ( uPesy ESP32C3 Basic Low Power ) à l'extérieur qui me permet de collecter quelques données comme :
T° eau
Humidité de l'air
Température de l'air
Niveau Batterie
Ces données sont transférées vers Thingspeak pour enregistrement via le protocole MQTT (extrait de l'envoi des infos) :
Code:
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
|
if (isWifiStarted)
{
while (WiFi.status() != WL_CONNECTED)
{
Serial.write('.');
delay(500);
}
Serial.println(" => Connecté");
Serial.print("adresse IP:"); Serial.println(WiFi.localIP());
isWifiReady = true;
if (isWifiStarted)
{
pubSubclient.setServer(server, 1883);
D_timestamp();
pubSubclient.connect(MQTT_CLIENT, MQTT_USER, MQTT_PASSWORD);
delay(10);
D_timestamp();
D_println("MQTT connected");
pubSubclient.loop();
D_print("MQTT Publish: ");
D_println(MQTT_TOPIC);
String topicString ="channels/" + String(MQTT_TOPIC) + "/publish";
String dataString = String("field1=" + String(temperature) + "&field2=" + String(humidity) + "&field3=" + String(batteryPercentage) + "&field4=" + String(piscine));
pubSubclient.publish(topicString.c_str(),dataString.c_str());
delay(100);
// si la mémoire RTC n'était pas valide, on la met à jour pour le prochain réveil
if (!isRtcValid) {
rtcData.channel = WiFi.channel();
memcpy(rtcData.ap_mac, WiFi.BSSID(), 6); // les 6 octets de l'adresse mac
// puis on met à jour le CRC dans la structure
rtcData.crc32 = calculateCRC32MPGE2((uint8_t*)&rtcData, sizeof rtcData - sizeof(uint32_t));
Serial.println(" Sauv config pour la prochaine fois en mémoire RTC. ");
printStructure(rtcData);
}
}
if (tensionBrute > seuilTensionBruteBasse)
{
D_timestamp();
D_println("Batterie OK. Dormir....");
D_printf("Battery Percentage: %i", batteryPercentage);
Serial.flush();
esp_sleep_enable_timer_wakeup(300000000ull); // on programme un réveil pour dans 5mn (en µs)
} else{
D_timestamp();
D_println("Batterie faible. Sommeil profond.");
D_printf("Battery Percentage: %i", batteryPercentage);
Serial.flush();
esp_sleep_enable_timer_wakeup(3600000000ull); // on programme un réveil pour dans 1h (en µs)
}
} |
Ce que je souhaite faire , ce serait d'avoir la possibilité de recueillir ces mêmes données pour les afficher en local sur (par ex) un ESP32-2432S028R
Quel serait selon vous l'architecture la plus appropriée de cet ESP32 pour réaliser ce projet
Merci par avance
Cordialement
pascal