restart each day to try bug fix, add delay for lost connexion wifi and mqtt

This commit is contained in:
Aurélien Gauthier 2022-06-02 00:21:41 +02:00
parent f0a0ccc395
commit d886bce090
2 changed files with 54 additions and 2 deletions

View file

@ -23,7 +23,8 @@
#define SENSORS_NUMBER 5 #define SENSORS_NUMBER 5
#define DHT22 22 #define DHT22 22
//comment for the test part this is the good frequency //comment for the test part this is the good frequency
#define TIME_TO_SLEEP 598 #define TIME_TO_SLEEP 598
//#define TIME_TO_SLEEP 28
#define US_TO_S_FACTOR 1000000 #define US_TO_S_FACTOR 1000000
#define R2 100 #define R2 100
#define R3 10 #define R3 10

View file

@ -36,10 +36,18 @@ void setupWIFI(const char *wifi_name, const char *password)
Serial.print("Connecting to "); Serial.print("Connecting to ");
Serial.print(wifi_name); Serial.print(wifi_name);
int cpttry = 10;
while (WiFi.status() != WL_CONNECTED) while (WiFi.status() != WL_CONNECTED)
{ {
delay(500); delay(500);
Serial.print('.'); Serial.print('.');
/* stop trying wifi connexion */
cpttry--;
if(cpttry == 0){
Serial.print("wifi: 10 try go to sleep");
sleep();
}
} }
Serial.println('\n'); Serial.println('\n');
Serial.println("Connection established!"); Serial.println("Connection established!");
@ -50,8 +58,16 @@ void setupWIFI(const char *wifi_name, const char *password)
void reconnect(void) void reconnect(void)
{ {
Serial.println("Connecting to MQTT Broker..."); Serial.println("Connecting to MQTT Broker...");
int cpttry = 10;
while (!MqttClient.connected()) while (!MqttClient.connected())
{ {
/* stop trying mqtt connexion*/
cpttry--;
if(cpttry == 0){
Serial.print("Mqtt: 10 try go to sleep");
sleep();
}
Serial.print("."); Serial.print(".");
if (MqttClient.connect(ESPNAME, MQTT_USER, MQTT_MDP)) // MQTT_MDP (mot de passe) if (MqttClient.connect(ESPNAME, MQTT_USER, MQTT_MDP)) // MQTT_MDP (mot de passe)
{ {
@ -126,7 +142,8 @@ unsigned long getTime() {
void writeMessage(char *txt, float *temp, float *hum, int number) void writeMessage(char *txt, float *temp, float *hum, int number)
{ {
int chargelvl = Battery.getBatteryChargeLevel(); int chargelvl = Battery.getBatteryChargeLevel();
time_t rawtime = TimeClient.getEpochTime(); //time_t rawtime = TimeClient.getEpochTime();
switch (number) switch (number)
{ {
@ -154,16 +171,50 @@ void writeMessage(char *txt, float *temp, float *hum, int number)
} }
} }
//-------------------- Condition --------------------//
bool ishour(int hours){
return hours <= (2 * TIME_TO_SLEEP) / 3600;
}
bool isminute(int minutes){
return minutes <= ((2 * TIME_TO_SLEEP) % 3600) / 60;
}
bool issecond(int secondes){
return secondes <= ((2 * TIME_TO_SLEEP) - 1 ) % 60;
}
//-------------------- Initialisation --------------------// //-------------------- Initialisation --------------------//
void setup() void setup()
{ {
Serial.begin(9600); Serial.begin(9600);
setupWIFI(SSID, PWD); setupWIFI(SSID, PWD);
setupMQTT(MQTT_ADDRESS, MQTT_PORT); setupMQTT(MQTT_ADDRESS, MQTT_PORT);
initSensors(sensors, SENSORS_NUMBER); initSensors(sensors, SENSORS_NUMBER);
TimeClient.begin(); TimeClient.begin();
TimeClient.forceUpdate(); TimeClient.forceUpdate();
/* Reboot one time per day */
int rawtime = (TimeClient.getEpochTime()) % 86400; // 86400 = 60sec*60minutes*24heures
int hours = rawtime / 3600, minutes = (rawtime % 3600) / 60 , secondes = rawtime % 60;
if( ishour(hours) && isminute(minutes) && issecond(secondes)){
ESP.restart();
}
/* ######### test time part #########
Serial.println('\n');
Serial.println(hours,DEC);
Serial.println(':');
Serial.println(minutes,DEC);
Serial.println(':');
Serial.println(secondes,DEC);
Serial.println('\n');
*/
} }