0.7.0: assenza con date, conto alla rovescia del boost, catalogo rifatto
- AwayDialog.qml: popup con inizio e fine (Dialog, ValueButton, DatePickerDialog: componenti e proprieta' verificati nella guida Silica dell'SDK). Il tasto Assenza apre il popup invece di mandare il comando; - conto alla rovescia 30:00 -> 00:00 in Home e in copertina, con i secondi dell'impianto (AiraJson::countdown + timer che si riallinea a ogni lettura); - commandPayload accetta campi extra (start/end); - catalogo: lupdate leggeva solo i C++ e marcava 151 voci QML come obsolete. Ora src e qml espliciti: 197 stringhe, 0 non tradotte; - versione 0.7.0 (spec, main.cpp), PROTOCOL, README/PIANO, post per il forum.
This commit is contained in:
+47
-4
@@ -399,7 +399,50 @@ uno resta senza argomento obbligatorio si vede lì (74/74). Provato dal vivo con
|
||||
un `ping` (200, con la ricezione dall'impianto) e con un boost fuori intervallo,
|
||||
respinto con 400 **prima** di partire.
|
||||
|
||||
**Stato attuale (0.6.9).** 85/85 verifiche del nucleo, 74/74 del bridge,
|
||||
191/191 stringhe tradotte, `qmllint` pulito, contratto UI↔bridge rispettato.
|
||||
All'impianto è stato inviato un solo comando, di prova e innocuo: un `ping`
|
||||
diagnostico, che non cambia nulla. Nessun comando di regolazione è mai partito.
|
||||
## 11. Assenza con le date e conto alla rovescia del boost — v0.7.0
|
||||
|
||||
**Richieste dell'utente (11/10/2026), da applicare come dati:**
|
||||
|
||||
1. il **boost** deve essere di **30 minuti**;
|
||||
2. l'**assenza** si imposta da un **popup con data di inizio e fine**;
|
||||
3. durante l'assenza l'impianto **tiene la casa a 15 °C** e **riprende
|
||||
normalmente il giorno prima del rientro**;
|
||||
4. mentre il boost è in corso si deve vedere un **conto alla rovescia da 30:00 a
|
||||
00:00**.
|
||||
|
||||
## 12. Conseguenze dell'uso reale (0.7.0)
|
||||
|
||||
Deciso con l'uso, non in anticipo:
|
||||
|
||||
- il **boost** è di **mezz'ora** (era un'ora);
|
||||
- l'**assenza** non è più "N giorni": si scelgono **due date** in un popup, e la
|
||||
casa resta a **15 °C**;
|
||||
- mentre il boost corre, **conto alla rovescia** in Home e in copertina.
|
||||
|
||||
Resta aperto: il popup chiede *inizio* e *fine*, dove "fine" è il giorno in cui
|
||||
l'impianto ricomincia a scaldare (nell'uso di Carlo: il giorno prima del rientro).
|
||||
Se preferisce indicare il *rientro* e far togliere un giorno all'app, è una riga.
|
||||
|
||||
**Come è stato fatto (0.7.0).**
|
||||
- Bridge: i comandi con durata hanno il loro ramo e i default in cima al file;
|
||||
per l'assenza `_periodo_assenza` legge `start` ed `end` (AAAA-MM-GG) e li
|
||||
traduce in `current_time`/`end_time`. La fine è la **mezzanotte del giorno
|
||||
indicato nel fuso dell'impianto** (`PLANT_TZ = Europe/Rome`, dichiarato dallo
|
||||
stato): da lì la pompa riprende il programma. Il fuso della *macchina* non si
|
||||
usa: alle date di cambio ora sbaglia di un'ora (lo hanno visto i test).
|
||||
- Bridge: `/summary` espone `boost_active` e `boost_remaining_seconds`, calcolati
|
||||
dalla fine del boost letta dall'impianto (`hot_water_boost.end_time`). Il conto
|
||||
alla rovescia dell'app si basa su quelli, non su quando l'app ha visto partire
|
||||
il comando: se il boost l'ha avviato il telefono di casa o l'app ufficiale, il
|
||||
numero è comunque giusto.
|
||||
- App: `AwayDialog.qml` (Dialog + due `ValueButton` + `DatePickerDialog`, come
|
||||
nell'esempio della guida Silica), il conto alla rovescia in Home sotto le
|
||||
letture e in copertina al posto dell'obiettivo dell'acqua calda. La formattazione
|
||||
`mm:ss` sta in `AiraJson::countdown` (C++, verificata in `tests/core_test.cpp`),
|
||||
i secondi li fa scorrere un timer del client, che si riallinea a ogni rilettura.
|
||||
- Catalogo: `lupdate harbour-aira.pro` leggeva solo i C++ e marcava 151 voci QML
|
||||
come obsolete (l'italiano sarebbe rimasto a metà senza accorgersene). Ora:
|
||||
`lupdate src qml -ts translations/harbour-aira-it.ts`. 197 stringhe, 0 non
|
||||
tradotte.
|
||||
|
||||
|
||||
|
||||
+4
-2
@@ -37,6 +37,8 @@ Valori pronti per la dashboard.
|
||||
"manual_mode": false,
|
||||
"force_heating": false,
|
||||
"force_heating_remaining": "0s",
|
||||
"boost_active": false,
|
||||
"boost_remaining_seconds": 0,
|
||||
"inline_heater": false,
|
||||
"hot_water_heating": true,
|
||||
"configured_modes": "PUMP_MODE_STATE_HEATING",
|
||||
@@ -153,9 +155,9 @@ Risposta: `{"ok": true, "id": "...", "result": {...}}`.
|
||||
| `set_hot_water_target` | 45–60 | temperatura ACS obiettivo |
|
||||
| `set_heating_setpoint` | 5–30 | temperatura obiettivo della casa (zona, default 1) |
|
||||
| `set_cooling_setpoint` | 5–30 | temperatura obiettivo del raffrescamento (zona, default 1) |
|
||||
| `hot_water_boost_on` / `hot_water_boost_off` | minuti, 15–240 (default 60) | boost ACS una tantum |
|
||||
| `hot_water_boost_on` / `hot_water_boost_off` | minuti, 15–240 (default 30) | boost ACS una tantum |
|
||||
| `hot_water_heating_on` / `hot_water_heating_off` | minuti, 15–1440 (default 60) | riscaldamento ACS |
|
||||
| `away_mode_on` / `away_mode_off` | giorni, 1–60 (default 7) | modalità assenza |
|
||||
| `away_mode_on` / `away_mode_off` | `start` ed `end`, AAAA-MM-GG | assenza con date; la casa resta a 15 °C |
|
||||
| `night_mode_1h` | — | night mode per un'ora |
|
||||
| `force_heating_on` / `force_heating_off` | minuti, 15–240 (default 60) | riscaldamento forzato |
|
||||
| `heating_on` / `heating_off` | — | funzione riscaldamento |
|
||||
|
||||
Reference in New Issue
Block a user