0.6.2: pallino rosso solo per un allarme che ferma la macchina (avviso = ambra)

Il pallino era rosso per qualunque voce nell'elenco errori: un semplice avviso
(compressore limitato dalla temperatura esterna, caso reale del 10/10) sembrava
un guasto. Ora il ponte espone in /summary anche error_severity e
alarm_stopping, e il livello 3 (rosso) e' riservato agli allarmi che fermano la
macchina o di severita' CRITICAL/ERROR; avviso = ambra. Copertina allineata.

6 verifiche nuove nell'harness del nucleo (avviso/stop/critical/error/
precedenza sul modo attivo/gravita' ignota = ambra).
This commit is contained in:
2026-10-10 18:16:04 +02:00
parent 4050b3b5d7
commit a281a7e112
9 changed files with 108 additions and 13 deletions
+14 -1
View File
@@ -211,6 +211,19 @@ int errorCount(const QVariantMap &summary)
return summary.value(QStringLiteral("errors_count")).toInt();
}
// Allarme "serio": quello che ferma la macchina (flag del bridge, dai metadati
// della pompa) oppure una voce di severita' CRITICAL/ERROR. Un semplice avviso
// (WARNING: per esempio il compressore limitato dalla temperatura esterna) NON
// e' serio, e non deve accendere il pallino rosso. Senza i campi (bridge piu'
// vecchio) si resta prudenti sul colore: ambra, non rosso.
bool alarmSerious(const QVariantMap &summary)
{
if (flagValue(summary, QStringLiteral("alarm_stopping")))
return true;
const QString severita = summary.value(QStringLiteral("error_severity")).toString();
return severita == QStringLiteral("CRITICAL") || severita == QStringLiteral("ERROR");
}
bool pumpRunning(const QVariantMap &summary)
{
return summary.value(QStringLiteral("pump_active_state")).toString()
@@ -268,7 +281,7 @@ int statusLevel(const QVariantMap &summary)
if (summary.isEmpty())
return 1;
if (errorCount(summary) > 0)
return 2;
return alarmSerious(summary) ? 3 : 2;
if (flagValue(summary, QStringLiteral("away_mode"))
|| flagValue(summary, QStringLiteral("night_mode"))
|| flagValue(summary, QStringLiteral("force_heating")))
+4 -2
View File
@@ -38,8 +38,10 @@ QString stateShort(const QVariantMap &summary);
// "Relax: la pompa di calore funziona regolarmente").
QString stateLong(const QVariantMap &summary);
// Livello dello stato, per il colore della riga: 0 regolare, 1 modo attivo
// (assenza, notte, riscaldamento forzato), 2 errore sull'impianto.
// Livello dello stato, per il colore del pallino in Home:
// 0 regolare, 1 modo attivo (assenza, notte, riscaldamento forzato),
// 2 avviso (errori di severita' WARNING: la macchina lavora),
// 3 allarme serio (allarme che ferma la macchina, o severita' CRITICAL/ERROR).
int statusLevel(const QVariantMap &summary);
// Temperatura leggibile: "51,0" oppure "—" se il valore manca.