0.5.0: riordino come l'app ufficiale (home, Dati, Impianto)

- home: temperatura esterna e in casa/assente in alto, messaggio di stato,
  scheda impianto con temperatura stanza e acqua calda; comandi sotto
- pagina Dati: calore prodotto, elettricita' usata, COP acqua calda e
  riscaldamento, risparmio, CO2 evitata, Smart Tariff Control (mese per mese)
- pagina Impianto: stato, termostato a parete, versioni software, errori
- bridge 0.4.0: rotta /stats (servizio statistiche del cloud) e blocco
  dispositivo in /summary (ID breve, versioni, termostato)
- C++: parseStats, formatNumber, formatMoney, monthLabel (separatore e
  valuta secondo la lingua); 61/61 verifiche del nucleo
- anteprime aggiornate (dati, impianto) in inglese e italiano
This commit is contained in:
2026-10-10 08:59:03 +02:00
parent ec7333a185
commit 4f279a18b0
30 changed files with 2355 additions and 353 deletions
+64
View File
@@ -161,3 +161,67 @@ Non verificabile qui (serve il suo PC + il telefono): build RPM, istallazione, U
nuova) oppure sottodominio HTTPS pubblico con reverse proxy.
2. **Ambito della v0.1**: sola lettura (consigliata) oppure lettura + comandi ACS subito.
3. **Nome visibile dell'app**: default proposto "Aira" (pacchetto `harbour-aira`).
## 8. Riordino come l'app ufficiale — v0.5.0 (richiesta dell'utente, 10/10/2026)
L'utente ha allegato le schermate dell'app ufficiale (Home, dettaglio impianto,
Accessori, Impostazioni, Aira Intelligence, Dati) e ha chiesto di **riordinare le
informazioni allo stesso modo**. Piano scritto prima di toccare la UI, come da
convenzione.
### Cosa si può replicare (verificato con sonda di sola lettura)
Sonda `aira_stats_probe.py` (nessun comando inviato all'impianto): il cloud Aira
espone anche un **servizio statistiche** (`HeatPumpStatisticsService`) che la
libreria usava solo in parte. I numeri **coincidono con quelli dell'app ufficiale**:
| Dato dell'app ufficiale | Fonte | Valore reale letto | Coincide |
|---|---|---|---|
| Calore prodotto (questo mese) 70.8 kWh | `GetHeatPumpInsights` → `delivered_heat_wh` | 70 844 Wh | sì |
| Elettricità usata 29.3 kWh | `GetHeatPumpInsights` → `energy_consumption_wh` | 29 300 Wh | sì |
| Efficienza acqua calda 4.4 | `GetCop` mensile → `dhw_cop_value` | 4.42 (settembre) | sì |
| Efficienza riscaldamento: *Nessun dato* | `GetCop` → `room_heating_cop_value` | vuoto (solo ACS) | sì |
| Risparmio Smart Tariff Control €2.7 | `GetOptimisationSavings` → `rolling_month_optimisation` | € 2,71 | sì |
| Risparmi (ultimi 30 giorni) | `GetSavings` (180 gg) | € 95,46 + 153,9 kg CO₂ | sì |
| Dispositivo ID `1f4b26` | `heat_pump_id` (UUID) | `1f4b26c4-…` | sì |
| Versione software 3.30.1 | `versions.connectivity_manager` | 3.30.1 | sì |
| Versione piattaforma 6.10.0 | `versions.linux_build_id` | 6.10.0 | sì |
| Termostato a parete Aira · Zone 1 | `thermostats[]` | articolo 201884, zona 1, 22,8 °C, 73% UR | sì |
| Modalità Vacanza | `away_mode_enabled` | inattivo | sì |
**Resta fuori**: Wi-Fi, messaggi luminosi/LED, nucleo familiare, tariffe energia,
Aira Intelligence (comfort/risparmio) e le notifiche push. Sono funzioni che
dipendono da impostazioni dell'app ufficiale o da dati che il cloud non espone in
lettura (le tariffe servono per i *suoi* calcoli, non li leggiamo).
### Struttura nuova dell'app
Come l'app ufficiale: una **Home** con il dato esterno in alto e la scheda
dell'impianto, poi **Dati** e **Impianto** (al posto di Accessori + Riepilogo
impostazioni). La navigazione resta con il **menu pulley** di Silica e non con la
barra a tre tab in basso: la tab bar non è un pattern Sailfish e su Qt 5.6/Silica 5.1
andrebbe disegnata a mano.
1. **Home**: `esterno 16,8 °C` in alto a sinistra e stato assenza a destra; messaggio
di stato grande (derivato: errori, assenza, acqua calda in corso, riscaldamento in
corso, tutto regolare); **scheda impianto** — "Aira Pompa di calore · Connesso
tramite Cloud" con due righe (Temperatura interna con l'obiettivo, Acqua calda) e
la freccia che apre la pagina Impianto; sotto, i comandi (obiettivo casa, obiettivo
ACS e boost) che l'app ufficiale non ha e che restano il valore aggiunto nostro.
2. **Dati**: "Il tuo riscaldamento (questo mese)" con calore prodotto, elettricità
usata, efficienza (COP riscaldamento / acqua calda); "I tuoi risparmi" con il
risparmio totale del periodo, la CO₂ evitata e il risparmio Smart Tariff Control.
3. **Impianto**: stato (connessione, modalità, vacanza, messaggi luminosi, ultima
lettura), accessori (termostato: zona, temperatura, umidità, segnale, batteria),
versioni (piattaforma, connettività, controllo climatico, unità esterna, EEPROM,
dispositivo ID) ed errori.
### Lavoro
- **Bridge 0.4.0**: nuova rotta `/stats` (COP, risparmi, ottimizzazione, insight) e
blocco `device` in `/summary` (id breve, versioni, termostato, connessione);
cache breve lato bridge, perché sono chiamate al cloud più lente di `/state`.
- **App 0.5.0**: `MainPage` riordinata, nuove `DataPage.qml` e `InfoPage.qml`,
nuove stringhe nei due cataloghi, anteprime rigenerate, test del nucleo estesi al
parsing dei nuovi campi, versione e README aggiornati.
- Nessun comando nuovo all'impianto: tutto questo è **sola lettura**.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 44 KiB