#include <WiFi.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#define lamp1 14
#define lamp2 12
#define lamp3 13
IPAddress server_addr(137, 255, 39, 21); // Adresse IP du serveur MySQL
int server_port = 16600; // Port du serveur MySQL
const char* db_user = "root"; // Nom d'utilisateur de la base de données
const char* db_password = "6996582074"; // Mot de passe de la base de données
const char* db_name = "Homelinks"; // Nom de la base de données
const char* ssid = "Wokwi-GUEST"; // SSID (nom) du réseau Wi-Fi
const char* password = ""; // Mot de passe du réseau Wi-Fi
WiFiClient client;
MySQL_Connection conn((Client *)&client); // Déclaration de la connexion MySQL
void setupWiFi() {
WiFi.begin(ssid, password, 6);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connexion au Wi-Fi en cours...");
}
Serial.println("Connexion au Wi-Fi établie !");
Serial.print("Adresse IP : ");
Serial.println(WiFi.localIP());
}
void setupDatabase() {
if (conn.connect(server_addr, server_port, db_user, db_password, db_name)) {
Serial.println("Connexion à la base de données établie !");
} else {
Serial.println("Échec de la connexion à la base de données...");
}
}
char* today() {
time_t now = time(NULL);
struct tm *t = localtime(&now);
char *date = (char*)malloc(sizeof(char) * 11);
strftime(date, 11, "%Y-%m-%d", t);
return date;
}
void executeQuery() {
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
char query[] = "SELECT datejour, heure, active, lampe FROM Actions";
cur_mem->execute(query);
RowValues row;
while (cur_mem->available()) {
row = cur_mem->getRow();
time_t now = time(NULL);
char *today_str = today();
for (int i = 0; i < row.num_fields; i++) {
if (strcmp(cur_mem->field_name(i), "datejour") == 0 && strcmp(row.values[i], today_str) != 0) {
break;
}
if (strcmp(cur_mem->field_name(i), "heure") == 0 && difftime(now, atol(row.values[i])) < 60 && i+2 < row.num_fields) {
if (strcmp(row.values[i+1], "1") == 0) {
digitalWrite(atoi(row.values[i+2]), HIGH);
} else {
digitalWrite(atoi(row.values[i+2]), LOW);
}
}
}
free(today_str);
}
delete cur_mem;
}
void setup() {
Serial.begin(9600);
setupWiFi();
setupDatabase();
pinMode(lamp1, OUTPUT);
pinMode(lamp2, OUTPUT);
pinMode(lamp3, OUTPUT);
}
void loop() {
executeQuery();
delay(1000);
}