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)
}
} |
Partager