Pannello di controllo touch avanzato basato su ESP32-S3 e LVGL. Gestione domotica completa, controllo accessi tramite NFC e interfaccia grafica reattiva con supporto temi Chiaro/Scuro.
Il progetto utilizza ESPHome per pilotare un display touch, offrendo un'interfaccia utente fluida creata con LVGL.
- Gestione Illuminazione: Controllo relè su due pagine dedicate (Ingresso, Soppalco, Ufficio Agenti, Bagno e Cucinino).
- Sale Riunioni: Gestione dedicata con icone specifiche (lampada da terra/soffitto) per Sala Riunioni 1 e 2.
- Climatizzazione (HVAC): Controllo centralizzato Fancoil (Elettrovalvola e Ventola) tramite un pulsante "Master" gigante.
- Master Switch: Funzione "Spegni Tutto" sequenziale con delay intelligente (100ms) per evitare picchi di carico.
- Dual Theme Engine: Supporto nativo per Dark Mode (scuro) e Light Mode (chiaro). I colori sono completamente personalizzabili via YAML e cambiano istantaneamente senza riavvio.
- Standby Intelligente: Dimming automatico della luminosità (o spegnimento totale) dopo un timeout configurabile.
- Navigazione Fluida: 6 Pagine scorrevoli con animazioni di transizione
OUT_LEFT/OUT_RIGHT.
- Lettore Badge: Integrazione con modulo PN532 (I2C) per scansione badge dipendenti.
- Integrazione API HR: Invio automatico del token letto via HTTP POST al server aziendale (
hr-omega.datipro.it) per la registrazione presenze. - Feedback Visivo: Popup dedicato con stato lettura, invio e risposta dal server.
| Componente | Specifiche nel progetto |
|---|---|
| Microcontrollore | ESP32-S3 DevKitC-1 (16MB Flash, 8MB PSRAM Octal) |
| Display | Pannello RGB 800x480 (Driver rpi_dpi_rgb) |
| Touchscreen | Resistivo XPT2046 (SPI) |
| NFC Reader | Modulo PN532 (connessione I2C su GPIO 43/44) |
L'aspetto grafico e i comportamenti di base possono essere modificati direttamente tramite codice agendo sulla sezione substitutions all'inizio del file YAML. Non è necessario modificare il codice C++ o LVGL complesso.
Ecco il blocco di configurazione principale dove puoi cambiare colori, tempi e dimensioni:
substitutions:
name: scheda-bianca-aeureka
friendly_name: scheda-bianca-aeureka
# --- IMPOSTAZIONI STANDBY ---
modalita_standby: "dimmer" # Opzioni: "spegni" (tutto nero) o "dimmer" (luce bassa)
livello_luminosita_dimmer: "30%" # Intensità luce in modalità dimmer (es. 5%, 10%, 20%)
# --- IMPOSTAZIONI TEMA (PALETTE DI BASE) ---
scelta_tema: "scuro" # "chiaro" o "scuro"
colore_sfondo_scuro: "0x000000" # Nero puro
colore_sfondo_chiaro: "0x655e56" # Grigio originale
colore_testo_scuro: "0x808080" # Grigio pulsanti (quando spenti)
colore_testo_chiaro: "0x000000" # Nero
colore_testo_pulsante_on: "0x000000" # Nero (testo su giallo quando acceso)
colore_pulsante_acceso: "0xFFC108" # Giallo/Ambra
colore_testo_standby: "0x655e56" # Colore testo in standby
# --- IMPOSTAZIONI TEMPI (SCALABILI) ---
tempo_idle_spegnimento: "15s"
tempo_transizione_pagine: "700ms"
tempo_animazione_home: "600ms"
SpegniTuttoDelay: "100ms"
tempo_visualizzazione_nfc: "10s"
# --- IMPOSTAZIONI POSIZIONI E DIMENSIONI (SCALABILI) ---
visibilita_hitbox: "0%" # Cambia in 0% per uso normale, aumentalo per debug
distanza_icone_bordo_x: "10"
posizione_home_x: "-5"
posizione_home_y: "5"
posizione_tema_x: "5"
posizione_tema_y: "5"
dimensione_icone: "80x80"
dimensione_home: "65x65"
dimensione_tema: "65x65"
dimensione_power: "80x80"
dimensione_icone_riunioni: "160x160"
# --- POSIZIONE OROLOGIO E DATA (SCALABILI) ---
clock_y_offset: "-30"
date_y_offset: "60"
power_y_offset: "160"