#include <HTTPClient.h>
#include <WiFi.h>
#include <ESP32Servo.h>
#define Button 4
#define red_pin 14
#define green_pin 13
#define blue_pin 12
#define SPWM 17
Servo servo;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* serverAddress = "host.wokwi.internal";
float pos = 0.0;
int state = 0;
int laststate = 0;
String isOpen = "ouvert";
bool porteAffichee = false;
void envoyerDonnees(bool porteOuverte) {
if (WiFi.status() == WL_CONNECTED && checkServerConnection()) {
sendToServer(porteOuverte);
}
}
bool checkServerConnection() {
WiFiClient client;
bool success = client.connect(serverAddress, 3000);
if (!success) {
Serial.println("Erreur lors de la connexion au serveur");
}
return success;
}
void sendToServer(bool porteOuverte) {
HTTPClient http;
// Données à envoyer
String dataToSend = "type=circuit3&isOpen=" + String(isOpen);
// Connexion au serveur
http.begin(serverAddress, 3000); // Spécifiez le port 3000 pour HTTPS
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
// Envoi de la requête POST
int httpResponseCode = http.POST(dataToSend);
if (httpResponseCode > 0) {
Serial.print("HTTP Reponse code : ");
Serial.println(httpResponseCode);
} else {
Serial.println("Erreur lors de l'envoi");
}
http.end();
}
void setup() {
Serial.begin(115200);
Serial.println("Solution IOT Part I!");
WiFi.begin(ssid, password);
pinMode(Button, INPUT_PULLUP);
pinMode(red_pin, OUTPUT);
pinMode(green_pin, OUTPUT);
pinMode(blue_pin, OUTPUT);
servo.attach(SPWM);
servo.write(pos); // Initialize the bras's position to 0 (leftmost)
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
state = digitalRead(Button);
if(state == LOW && laststate == HIGH){
if(pos == 0){
servo.write(90);
digitalWrite(red_pin,HIGH);
digitalWrite(green_pin,LOW);
digitalWrite(blue_pin,LOW);
pos = 90;
isOpen ="ferme";
} else {
servo.write(0);
digitalWrite(red_pin,LOW);
digitalWrite(green_pin,LOW);
digitalWrite(blue_pin,HIGH);
pos = 0;
isOpen ="ouvert";
}
// Mettre à jour la variable porteAffichee
porteAffichee = false;
envoyerDonnees(isOpen); // Envoyer l'état de la porte au serveur
delay(300); // Attendre pour éviter les rebonds
}
laststate = state;
// Afficher l'état de la porte si elle n'a pas déjà été affichée
if (!porteAffichee) {
afficherEtatPorte();
porteAffichee = true; // Mettre à jour la variable porteAffichee
}
}
}
void afficherEtatPorte() {
if (isOpen=="ouvert") {
Serial.println("Porte ouverte");
} else {
Serial.println("Porte fermée");
}
}