Problème avec SPIFFS sur ESP32

Bonjour hbachetti, je suis un étudiant en BTS et je travail actuellement sur un ESP32. Pourriez vous peut etre jetez un œil à mon utilisation du spiffs car il ne fonctionne pas. j'ai beau chercher partout impossible de le faire fonctionner.

je vous remercie.

Oui, sans problème.

Voila mon problème, d'abord je tiens a informer que je travail sur windows avec VScode, j'utilise le module PlatformIO car j'ai compris de l'utilisation de SPIFFS se faisais bien avec se module.
Mon travail consiste a faire communiquer une horloge RTC d'un ESP32 avec le navigateur d'un utilisateur se connectant au wifi de l'ESP32. En bref le navigateur dois envoyé l'heure sous forme de formulaire pour mettre a jour l'heure et la date de l'ESP32.

Voici se que j'ai (main.cpp et index.html):

#include <WiFi.h>
#include <SPIFFS.h>
#include <ESPAsyncWebServer.h>
#include <Adafruit_I2CDevice.h>
#include <SPI.h>

const char* ssid = "notre AP";
const char* password = "MotdepasseAP";

AsyncWebServer server(80);

void setup()
{
   Serial.begin(9600);
   Serial.println("\n[*] Creating AP");
   WiFi.mode(WIFI_AP);
   WiFi.softAP(ssid, password);
   Serial.print("[+] AP Created with IP Gateway ");
   Serial.println(WiFi.softAPIP());

 Serial.println("\nConnected to WiFi");
 IPAddress myIP = WiFi.softAPIP();
 Serial.print("Adresse IP de l'AP : ");
 Serial.println(myIP);

 if (!SPIFFS.begin(true)) {
   Serial.println("Erreur lors de l'initialisation du système de fichiers SPIFFS");
   return;
 }
  server.begin();

 server.on("/html", HTTP_GET, [](AsyncWebServerRequest *request){
   request->send(SPIFFS, "/index.html", "text/html");
 });

server.on("/page2", HTTP_GET, [](AsyncWebServerRequest *request) {
    String html2 = "<html><body>";
    html2 += "<h1>Nouvelle page</h1>";
    request->send(200, "text/html", html2);
    });
}

void loop() {
 // rien à faire dans la boucle loop() lors de l'utilisation d'un serveur Web
}
<!DOCTYPE html>
<html lang="fr">
<head>
  <link rel="shortcut icon" href="#">
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ESP32 RTC Sync</title>
</head>
<body onload="syncTime()">
  <h1>Syncing time with ESP32</h1>
  <script>
    function syncTime() {
      var currentTime = new Date();
      var date = currentTime.toISOString().slice(0,10);
      var time = currentTime.toISOString().slice(11,19);

      var xhr = new XMLHttpRequest();
      xhr.open("POST", "/setTime", true);
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xhr.send("date=" + date + "&time=" + time);
    }
  </script>
</body>
</html>

le wifi fonctionne correctement mais envoie sur une page vierge, comme s'il n'arrivais pas a lire le fichier.html
'/page' elle s'affiche correctement

Je suppose que le schéma de partitionnement est correct ?
Je sais faire cela avec ARDUINO IDE (menu Outils / Partition Scheme), pas avec PlatformIO.
SPIFFS.begin() ne génère pas d'erreur ?

Le titre est-il affiché dans la page ?

je suis justement en voie d'essayer avec arduino ide en suivant un tuto, mais non aucune erreur dans le code.

Non le titre n'est pas affiché la page est vraiment vide un vide

je vais essayer avec arduino IDE ca sera sans doute plus simple pour vous et moi je pense.
y'aurais t'il un autre moyen de communiquer car étant nouvel utilisateur je n'est droit qu'a 3 reponses

La marche à suivre (avec ARDUINO IDE) :

  • le fichier index.html doit être situé dans un sous-répertoire data du projet
  • choisir le schéma de partitionnement (le schéma par défaut convient)
  • charger index.html dans SPIFFS (menu Outils / ESP32 Sketch Data Upload)

Avec ARDUINO IDE, pour avoir accès au menu ESP32 Sketch Data Upload, il faut installer un plugin : ESP32 Sketch Data Upload

1 Like

Bonjour à vous,
Petite précision mais non des moindres, l'IDE Arduino dernière mouture (2.3.2) ne gère pas SPIFFS.
Il faut installer la version 1.8.19 qui elle, fonctionne très bien pour ce genre d'usage.
@+

C'est vrai que j'ai oublié de préciser, j'utilise encore 1.8.19.

1 Like

re-bonjour, désolé d'envahir tout les sujet mais étant nouvel utilisateur je peut envoyer que 3 réponses par sujet, aurez vous un autre moyen de communiquer ?
Enfin sur arduino IDE j'ai d'installer le plugin et placer dans les outils comme dit mais data uploader n'apparais toujours pas

ne fais pas cela, si il y a des restrictions, c'est pour une raison, en violant une règle du forum, tu t'expose à des sanctions.

Peut-être mais on ne squatte pas le fil de discussion de ces petits camarades c'est totalement improductif car tu fais travailler les gens 2 fois et on a n'a pas un historique complet des échanges.
La bonne solution aurait été de créer un fil de discussion dédié à ton problème.

Ok, ca marche si tu remplace ta ligne originale par celle là:

server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
   request->send(SPIFFS, "/index.html");
 });

Mais comme on le disait dans notre précédente discussion avec hbachetti :
Petite précision mais non des moindres, l'IDE Arduino dernière mouture (2.3.2) ne gère pas SPIFFS.
Il faut installer la version 1.8.19 qui elle, fonctionne très bien pour ce genre d'usage.
@+

Ok, ca marche si tu remplace ta ligne originale par celle là:

server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
   request->send(SPIFFS, "/index.html");
 });

j'ai installé le pugin et l'ai plaér dans le dossier tools d'arduino IDE mais l'outil Data Uploader n'apparait pas, je ne peux donc pas utilisé le SPIFFS.
j'ai vraiment suivie a la lettre les tutos écrits et vidéos mais rien à faire ca n'apparait pas.
De l'aide serais super, merci

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

@h-morquin03 les doublons sont interdits, au mieux se post sera fusionner avec les autres, au pire, tu risque de te faire suspendre :frowning:

Tu installe IDE 1.8.19,
tu copie le fichier esp32fs.jar ici
C:\Users\Alain\Documents\Arduino\tools\ESP32FS\tool\esp32fs.jar
bien sûr tu remplace Alain par ton répertoire perso...
ET tu lis bien les posts au dessus, j'ai testé le code que je t'ai donné au dessus et ca fonctionne....