yassmine hassouna
yassmine hassouna

Reputation: 11

ESP-NOW: Unable to Connect to Wi-Fi Network After Receiving Data

I'm using ESP-NOW to receive information from another ESP, and then I connect to a Wi-Fi network to send the data to my database. However, after receiving the data, the Wi-Fi status remains at 6 and it refuses to connect. There are no errors with the SSID or password, nor any hardware issues.

void setup() {
  Serial.begin(115200);
  configDeviceAP();
  InitESPNow();
  esp_now_register_recv_cb(OnDataRecv);
}
void configDeviceAP() {
  const char *SSID = "Slave_1";
  bool result = WiFi.softAP(SSID, "Slave_1_Password", CHANNEL, 0);
  if (!result) {
    Serial.println("AP Config failed.");
  } else {
    Serial.println("AP Config Success. Broadcasting with AP: " + String(SSID));
    Serial.print("AP CHANNEL ");
    Serial.println(WiFi.channel());
  }
}
void resetToClientMode() {
  WiFi.disconnect(true);
  WiFi.persistent(false);

  WiFi.mode(WIFI_STA);
  Serial.println(WiFi.status());
  Serial.println(WIFI_SSID);
  Serial.println(WIFI_PASSWORD);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
  Serial.println("Connected to WiFi.");
}

void OnDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) {
  DataStruct receivedData;
  memcpy(&receivedData, data, sizeof(DataStruct));
  Serial.print("Valeur humidité : ");
  Serial.println(receivedData.h);
  Serial.print("Valeur température : ");
  Serial.println(receivedData.t);
  Serial.println("");

  // Connect to WiFi and Firebase
  resetToClientMode();
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  Firebase.reconnectWiFi(true);

  // Enregistrez les données reçues dans la base de données Firebase
  Firebase.setInt(fbdo, "/Rooms/Room01/Temp", receivedData.t);
  Firebase.setInt(fbdo, "/Rooms/Room01/Humidity", receivedData.h);

  // Déconnectez-vous du réseau WiFi
  WiFi.disconnect(true); 
  WiFi.persistent(false);
  WiFi.mode(WIFI_OFF);
}

void loop() {
  // Chill
}

Upvotes: 1

Views: 423

Answers (0)

Related Questions