a8f0d6ccba
Fonctionnalités : - Lecture RS485 Modbus Epever Tracer 4210N (115200 bps, FC03/FC04/FC16) - Moteur de règles JSON (LittleFS) — commande automatique des relais - Interface web mobile-first (dashboard, règles, config, historique, EPEVER, debug) - WiFi AP+STA simultanés avec reconnexion automatique et portail captif - mDNS configurable (pv.local par défaut) - Configuration registres EPEVER depuis l'UI (18 registres holding) - Historique basse/haute résolution avec graphes canvas - VPN WireGuard optionnel (désactivé par défaut, config via UI) - OTA firmware + filesystem via ElegantOTA - Deep sleep / économie d'énergie Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
54 lines
2.0 KiB
C++
54 lines
2.0 KiB
C++
#include <WiFi.h>
|
|
#include <DNSServer.h>
|
|
#include <Arduino.h>
|
|
#include "config.h"
|
|
|
|
static DNSServer dnsServer;
|
|
|
|
static void onWifiEvent(WiFiEvent_t event, WiFiEventInfo_t info) {
|
|
switch (event) {
|
|
case ARDUINO_EVENT_WIFI_AP_STACONNECTED:
|
|
Serial.printf("[WiFi] Client connecté — MAC %02X:%02X:%02X:%02X:%02X:%02X clients: %d\n",
|
|
info.wifi_ap_staconnected.mac[0], info.wifi_ap_staconnected.mac[1],
|
|
info.wifi_ap_staconnected.mac[2], info.wifi_ap_staconnected.mac[3],
|
|
info.wifi_ap_staconnected.mac[4], info.wifi_ap_staconnected.mac[5],
|
|
WiFi.softAPgetStationNum());
|
|
break;
|
|
case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED:
|
|
Serial.printf("[WiFi] Client déconnecté — MAC %02X:%02X:%02X:%02X:%02X:%02X clients: %d\n",
|
|
info.wifi_ap_stadisconnected.mac[0], info.wifi_ap_stadisconnected.mac[1],
|
|
info.wifi_ap_stadisconnected.mac[2], info.wifi_ap_stadisconnected.mac[3],
|
|
info.wifi_ap_stadisconnected.mac[4], info.wifi_ap_stadisconnected.mac[5],
|
|
WiFi.softAPgetStationNum());
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void demarrerWifi() {
|
|
WiFi.onEvent(onWifiEvent);
|
|
WiFi.mode(WIFI_AP);
|
|
WiFi.softAPConfig(WIFI_IP, WIFI_GATEWAY, WIFI_SUBNET);
|
|
|
|
if (strlen(WIFI_PASSWORD) > 0) {
|
|
WiFi.softAP(WIFI_SSID, WIFI_PASSWORD);
|
|
} else {
|
|
WiFi.softAP(WIFI_SSID); // AP ouvert
|
|
}
|
|
|
|
Serial.printf("[WiFi] AP démarré — SSID: %s IP: %s MAC: %s\n",
|
|
WIFI_SSID,
|
|
WiFi.softAPIP().toString().c_str(),
|
|
WiFi.softAPmacAddress().c_str());
|
|
|
|
// Captive portal : tous les noms DNS → 192.168.4.1
|
|
dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
|
|
dnsServer.start(53, "*", WIFI_IP);
|
|
Serial.println("[WiFi] DNS captive portal démarré (port 53)");
|
|
}
|
|
|
|
void traiterDNS() {
|
|
dnsServer.processNextRequest();
|
|
}
|