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>
62 lines
1.8 KiB
C
62 lines
1.8 KiB
C
#pragma once
|
|
|
|
struct SystemState {
|
|
// --- PV ---
|
|
float pv = 0.0f; // Tension PV (V)
|
|
float pvCurrent = 0.0f; // Courant PV (A)
|
|
|
|
// --- Batterie ---
|
|
float battery = 0.0f; // Tension (V)
|
|
float batTemperature = 0.0f; // Température (°C)
|
|
uint8_t batSOC = 0; // Charge restante (%)
|
|
uint8_t batStatut = 0; // 0=arrêt 1=float 2=boost 3=égalisation
|
|
bool batSousVoltage = false;
|
|
bool batSurVoltage = false;
|
|
|
|
// --- Sortie de charge (load) ---
|
|
float loadVoltage = 0.0f; // Tension (V)
|
|
float loadCurrent = 0.0f; // Courant (A)
|
|
float loadPower = 0.0f; // Puissance (W)
|
|
|
|
// --- Énergie (kWh, calculées par l'Epever) ---
|
|
float energieGenJour = 0.0f; // Générée aujourd'hui
|
|
float energieGenTotal = 0.0f; // Générée total
|
|
float energieConJour = 0.0f; // Consommée aujourd'hui
|
|
float energieConTotal = 0.0f; // Consommée total
|
|
|
|
// --- Ensoleillement ---
|
|
bool sun = false; // true = jour
|
|
bool sunHistoryValid = false;
|
|
uint8_t sunHistoryCount = 0;
|
|
uint8_t sunHistoryHead = 0;
|
|
bool sunHistoryState[5] = {};
|
|
char sunHistoryTime[5][20] = {};
|
|
|
|
// --- Horloge interne Epever ---
|
|
bool epeverClockOk = false;
|
|
uint8_t epeverSecond = 0;
|
|
uint8_t epeverMinute = 0;
|
|
uint8_t epeverHour = 0;
|
|
uint8_t epeverDay = 0;
|
|
uint8_t epeverMonth = 0;
|
|
uint16_t epeverYear = 0;
|
|
bool espClockOk = false;
|
|
|
|
// --- Relais ---
|
|
bool relay1 = false;
|
|
bool relay2 = false;
|
|
|
|
// --- Boutons DI ---
|
|
bool di1 = false;
|
|
bool di2 = false;
|
|
|
|
// --- Mode ---
|
|
bool autoMode = true; // true = automatique, false = manuel
|
|
|
|
// --- Santé RS485 ---
|
|
bool rs485_ok = false;
|
|
unsigned long last_update = 0;
|
|
};
|
|
|
|
extern SystemState state;
|