Software¶
Architettura¶
La logica di controllo è centralizzata e si integra con Home Assistant. I dispositivi (termostati e collettore) utilizzano firmware basato su ESPHome, che permette un'integrazione nativa con Home Assistant e una configurazione flessibile.
Comunicazione¶
Il sistema utilizza due canali di comunicazione:
| Canale | Protocollo | Scopo |
|---|---|---|
| Primario | WiFi + API ESPHome | Configurazione, telemetria, comandi da Home Assistant |
| Fallback | ESP-NOW | Comunicazione diretta termostati ↔ collettore (senza router) |
Entità esposte in Home Assistant¶
| Entità | Tipo | Descrizione |
|---|---|---|
| climate.*_climatizzazione | climate | Termostato |
| sensor.*_temperatura_reale | sensor | Temperatura ambiente |
| sensor.*_umidita_reale | sensor | Umidità ambiente |
| sensor.*_stato_sistema | sensor | Stato operativo |
| sensor.*_ultimo_errore | sensor | Ultimo errore rilevato |
| sensor.*_cronologia_errori | sensor | Storico errori |
| umber.*_temperatura_salvata | ||
| umber | Setpoint di riferimento | |
| umber.*_soglia_umidita | ||
| umber | Soglia per blocco funzionamento | |
| switch.*_modalita_controllata | switch | Abilitazione controllo centralizzato |
| utton.*_rinnovo_modalita | utton | Rinnovo timer controllo centralizzato |
| utton.*_reset_allarme_collettore | utton | Reset allarme collettore |
| utton.*_reset_allarme_circolatore | utton | Reset allarme circolatore |
| utton.*_reset_errori | utton | Reset errori |
| light.*_led_stato | light | LED di segnalazione |
Logica di controllo centralizzata¶
Parametri configurabili per zona¶
| Parametro | Tipo | Descrizione |
|---|---|---|
| Peso | Numero | Importanza della zona |
| Inclusione | Booleano | Inclusione/esclusione della zona |
| Delta guardia giorno | Numero | Temperatura di mantenimento (fascia giorno) |
| Delta guardia notte | Numero | Temperatura di mantenimento (fascia notte) |
| Delta lavoro giorno | Numero | Temperatura di funzionamento (fascia giorno) |
| Delta lavoro notte | Numero | Temperatura di funzionamento (fascia notte) |
| Temperatura salvata | Numero | Setpoint di riferimento |
| Soglia pesi | Numero | Soglia di attivazione collettiva |
Flusso decisionale¶
- Raccolta dati: temperatura reale, setpoint, azione, modalità per ogni zona
- Calcolo domanda: per ogni zona, guardia = setpoint - delta_guardia; se temp <= guardia - 0.5 → richiede calore; somma pesi
- Priorità: zone già in funzione hanno priorità
- Decisione collettiva: se somma_pesi >= soglia_pesi → attiva tutte
- Emergenza individuale: se temp <= guardia - 0.4 → attiva singola zona
- Esecuzione: imposta setpoint di lavoro per le zone da attivare, setpoint di guardia per le zone da disattivare
Segnalazioni LED¶
Le segnalazioni variano a seconda della configurazione e possono essere personalizzate. A titolo di esempio:
| Stato | Segnalazione tipica |
|---|---|
| Funzionamento attivo | Colore fisso |
| Standby | Colore fisso diverso |
| Problemi minori | Lampeggio lento |
| Errori gravi | Lampeggio rapido |
| Allarmi | Lampeggio specifico |
Le funzioni di segnalazione sono configurabili e adattabili alle proprie esigenze.
File di configurazione¶
I file di configurazione ESPHome sono pubblici su GitHub nel repository climaoro-components.
| File | Link |
|---|---|
| Config principale termostato (esempio italiano) | termostato_esempio.yaml |
| Config principale termostato (esempio inglese) | termostato_example.yaml |
| Package termostato | packages/termostato.yaml |
| Package termostato con display | packages/termostato_display.yaml |
| Config principale collettore (esempio italiano) | collettore_esempio.yaml |
| Config principale collettore (esempio inglese) | collettore_example.yaml |
| Package collettore | packages/collettore.yaml |
| Package zona | packages/zona.yaml |
Il file secrets.yaml (chiavi WiFi e API) non viene pubblicato: va creato localmente per ogni installazione.