Detail WifiManager

This commit is contained in:
Serge NOEL
2026-09-21 18:43:29 +02:00
parent 49f1a3bddf
commit 542e568835
6 changed files with 175 additions and 50 deletions
+4
View File
@@ -2,6 +2,8 @@
#include <ESP8266WiFi.h>
#include "pins.h"
#include "wifi.h"
#include "mqtt.h"
#if defined(DEVICE_ROLE_BOAT)
constexpr const char *deviceRole = "boat";
@@ -35,6 +37,8 @@ void setup() {
pinMode(Pins::hallRudderSignal, INPUT);
#endif
WifiSetup();
setupMQTT();
Serial.printf("Stid maritime: role=%s, mode=%s, chip=%06X\n",
deviceRole, networkMode, ESP.getChipId());
Serial.println("Firmware skeleton ready; motors remain stopped.");
+10
View File
@@ -0,0 +1,10 @@
/**
* @file mqtt.cpp
* @brief Gestion de la communication MQTT
*/
void setupMQTT(void) {
// Initialisation du client MQTT
mqttClient.setServer(mqtt_server, 1883);
mqttClient.setCallback(mqttCallback);
}
+50 -50
View File
@@ -1,52 +1,3 @@
// #include <ESP8266WiFi.h> //https://github.com
// #include <DNSServer.h>
// #include <ESP8266WebServer.h>
// #include <WiFiManager.h> //https://github.com
// void WifiSetup(void)
// {
// Serial.begin(115200);
// // Objet WiFiManager
// WiFiManager wifiManager;
// // Optionnel : réinitialiser les paramètres enregistrés pour les tests
// // wifiManager.resetSettings();
// // Démarre un point d'accès nommé "FinistRC_Config" (sans mot de passe)
// // Si la connexion au Wi-Fi enregistré échoue, le portail s'ouvre
// if (!wifiManager.autoConnect("FinistRC_Config")) {
// // Option 1 : Utiliser le mode sombre intégré
// wifiManager.setClass("invert");
// Serial.println("Échec de la connexion et timeout du portail.");
// delay(3000);
// ESP.restart(); // Redémarre l'ESP en cas d'échec
// }
// // Si on arrive ici, l'ESP8266 est connecté au Wi-Fi
// Serial.println("Connecté au réseau Wi-Fi !");
// Serial.print("Adresse IP : ");
// Serial.println(WiFi.localIP());
// }
// #include <ESP8266WiFi.h>
// #include <DNSServer.h>
// #include <ESP8266WebServer.h>
// #include <WiFiManager.h>
// // Variables pour stocker les paramètres personnalisés
// char mqtt_server[40] = "brokermqtt.local";
// char api_token[32] = "votre_cle_ici";
// // Drapeau pour savoir s'il faut sauvegarder les données
// bool doiventSauvegarderConfiguration = false;
// // Fonction de rappel (callback) appelée lorsque l'utilisateur valide le formulaire
// void saveConfigCallback() {
// Serial.println("Configuration modifiée. Prêt à sauvegarder.");
// doiventSauvegarderConfiguration = true;
// }
void WifiSetup() {
Serial.begin(115200);
@@ -93,4 +44,53 @@ void WifiSetup() {
// // Personnaliser le menu du portail (ne garder que le scan Wi-Fi et l'extinction de l'AP par exemple)
// std::vector<const char *> menu = {"wifi", "exit"};
// wifiManager.setMenu(menu);
// wifiManager.setMenu(menu);
/*
#include <WiFiManager.h>
// 1. Déclarer l'objet WiFiManager globalement ou dans le setup
WiFiManager wm;
// 2. Déclarer les paramètres globalement pour y avoir accès partout
// Syntaxe : WiFiManagerParameter identifiant(id, label, valeur_par_defaut, longueur_max);
WiFiManagerParameter custom_api_key("api_id", "Cle API", "", 40);
WiFiManagerParameter custom_mqtt_server("mqtt_id", "Serveur MQTT", "192.168.1.50", 40);
void setup() {
Serial.begin(115200);
// 3. Ajouter les paramètres au portail WiFiManager
wm.addParameter(&custom_api_key);
wm.addParameter(&custom_mqtt_server);
// Lancement du portail captif
if (!wm.autoConnect("ESP_Config_AP")) {
Serial.println("Échec de connexion, redémarrage...");
delay(3000);
ESP.restart();
}
// -------------------------------------------------------------
// RECOVERY : ICI LE PORTAIL EST FERMÉ ET L'ESP EST CONNECTÉ
// -------------------------------------------------------------
Serial.println("\n--- Connexion reussie ! Recuperation des valeurs ---");
// On récupère les valeurs sous forme de chaîne de caractères (const char*)
String apiKey = custom_api_key.getValue();
String mqttServer = custom_mqtt_server.getValue();
Serial.print("Cle API saisie : ");
Serial.println(apiKey);
Serial.print("Serveur MQTT saisi : ");
Serial.println(mqttServer);
}
void loop() {
// Vous pouvez aussi y accéder à tout moment dans le loop() :
// String mon_api = custom_api_key.getValue();
delay(5000);
}
*/