#include <WiFi.h>
#include <FirebaseESP32.h>

// Définir les informations WiFi
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""

// Définir les informations Firebase
#define FIREBASE_HOST "data-esp32-c6ae2-default-rtdb.europe-west1.firebasedatabase.app"
#define FIREBASE_AUTH "AIzaSyBotY7sHUOAHutyOKhHV7VRtTYt16IIPQ4"

// Créer une instance de Firebase Data et de la configuration
FirebaseData firebaseData;
FirebaseAuth auth;
FirebaseConfig config;

// Initialisation du WiFi
void setupWiFi() {
  Serial.print("Connexion à : ");
  Serial.println(WIFI_SSID);

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("Connexion WiFi réussie");
  Serial.println("Adresse IP : ");
  Serial.println(WiFi.localIP());
}

// Setup de la connexion Firebase
void setup() {
  Serial.begin(115200);

  // Connexion au WiFi
  setupWiFi();

  // Configurer Firebase
  config.host = FIREBASE_HOST;
  config.signer.tokens.legacy_token = FIREBASE_AUTH;

  // Initialiser Firebase
  Firebase.begin(&config, &auth);
  Firebase.reconnectWiFi(true);

  // Vérifier que Firebase est prêt
  if (!Firebase.ready()) {
    Serial.println("Erreur de connexion à Firebase");
  } else {
    Serial.println("Firebase prêt à être utilisé !");
  }
}

void loop() {
  String message = "Bonjour, Firebase !";

// Envoi de la chaîne de caractères vers Firebase
if (Firebase.setString(firebaseData, "/test/message", message)) {
  Serial.println("Message envoyé avec succès : " + message);
} else {
  Serial.println("Erreur lors de l'envoi : " + firebaseData.errorReason());
}
  
  delay(10000);
}