fix(S3): Auswahl beim Aufwecken auch nach Kaltstart + Diagnose der Bedingungen (5.6.1)
Die Abfrage hängt an fünf Bedingungen gleichzeitig (freigeschaltet, Abfrage eingeschaltet, Display verbunden, Modus gerade aus, kein Wartungsmodus/Reinigung/ Tuning). Fehlt eine, passiert schlicht nichts, und von außen war nicht erkennbar welche. Die Seite /Cold-Extraction zeigt sie jetzt live mit Haken bzw. Kreuz an, dazu ob das Auswahlfenster gerade offen ist. Zusätzlich eine echte Lücke geschlossen: Die Abfrage kam nur beim Standby-Übergang. Wer die Maschine am Netzschalter einschaltet, durchläuft nie einen solchen Übergang — dieser Weg war nicht abgedeckt. Jetzt öffnet das Fenster einmal pro Laufzeit auch nach einem Kaltstart, sobald sich das Display gemeldet hat. Startet die Maschine in den Standby hinein, bleibt es beim Standby-Übergang. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8dcebaa22f
commit
49bdc686c4
@@ -1,3 +1,13 @@
|
|||||||
|
Version 5.6.1:
|
||||||
|
- Diagnose: Die Seite /Cold-Extraction zeigt jetzt live, welche Voraussetzungen der Abfrage beim
|
||||||
|
Aufwecken erfüllt sind (freigeschaltet, Abfrage eingeschaltet, Touch-Display verbunden, Modus
|
||||||
|
gerade aus, kein Wartungsmodus/Reinigung/Tuning) und ob das Auswahlfenster gerade offen ist.
|
||||||
|
Hintergrund: Die Abfrage hängt an fünf Bedingungen gleichzeitig - fehlt eine, passiert einfach
|
||||||
|
nichts, und es war von außen nicht erkennbar welche.
|
||||||
|
- Die Abfrage kommt jetzt auch nach einem Kaltstart, nicht nur nach dem Standby. Wer die Maschine
|
||||||
|
am Netzschalter einschaltet, durchläuft nie einen Standby-Übergang; dieser Weg war deshalb bisher
|
||||||
|
nicht abgedeckt. Startet die Maschine in den Standby hinein, bleibt es beim Standby-Übergang.
|
||||||
|
|
||||||
Version 5.6.0:
|
Version 5.6.0:
|
||||||
- Die Abfrage „Espresso oder Cold Extraction" kommt jetzt bei JEDEM Weg aus dem Standby, also auch beim
|
- Die Abfrage „Espresso oder Cold Extraction" kommt jetzt bei JEDEM Weg aus dem Standby, also auch beim
|
||||||
Aufwecken über den Schalter. Bisher war sie eine reine Vorab-Abfrage des Touch-Displays und erschien nur
|
Aufwecken über den Schalter. Bisher war sie eine reine Vorab-Abfrage des Touch-Displays und erschien nur
|
||||||
|
|||||||
+38
-1
@@ -369,7 +369,7 @@ Adafruit_SH1106G display = Adafruit_SH1106G(128, 64, &Wire);
|
|||||||
* Firmware-Informationen
|
* Firmware-Informationen
|
||||||
************************************************************************************/
|
************************************************************************************/
|
||||||
|
|
||||||
String version = "5.6.0";
|
String version = "5.6.1";
|
||||||
String versionHersteller = "Thomas Müller";
|
String versionHersteller = "Thomas Müller";
|
||||||
String versionHerstellerMail =
|
String versionHerstellerMail =
|
||||||
"<a href='mailto:thomas@mueller.black' class='info-link'>thomas@mueller.black</a>";
|
"<a href='mailto:thomas@mueller.black' class='info-link'>thomas@mueller.black</a>";
|
||||||
@@ -5456,6 +5456,21 @@ void loop() {
|
|||||||
coldExtractionWakeChoiceUntilMs = currentMillis + COLDEX_WAKE_CHOICE_MS;
|
coldExtractionWakeChoiceUntilMs = currentMillis + COLDEX_WAKE_CHOICE_MS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Gleiche Auswahl nach einem Kaltstart: Wer die Maschine am Netzschalter einschaltet,
|
||||||
|
// kommt nie durch den Standby-Uebergang - ohne diesen Zweig gaebe es dort keine Abfrage.
|
||||||
|
// Einmal pro Laufzeit, sobald sich das Display gemeldet hat.
|
||||||
|
static bool coldExtractionBootChoiceDone = false;
|
||||||
|
if (!coldExtractionBootChoiceDone && !standbyModeActive && touchUartClientActive &&
|
||||||
|
coldExtractionEnabled && coldExtractionAskOnWake && !coldExtractionModeActive &&
|
||||||
|
coldExtractionArmable()) {
|
||||||
|
coldExtractionBootChoiceDone = true;
|
||||||
|
coldExtractionWakeChoicePending = true;
|
||||||
|
coldExtractionWakeChoiceUntilMs = currentMillis + COLDEX_WAKE_CHOICE_MS;
|
||||||
|
} else if (!coldExtractionBootChoiceDone && touchUartClientActive && standbyModeActive) {
|
||||||
|
// Start in den Standby hinein: Der Standby-Uebergang uebernimmt die Abfrage.
|
||||||
|
coldExtractionBootChoiceDone = true;
|
||||||
|
}
|
||||||
|
|
||||||
// Auswahlfenster beenden: Zeit abgelaufen, Standby, oder es wird ohnehin schon bezogen
|
// Auswahlfenster beenden: Zeit abgelaufen, Standby, oder es wird ohnehin schon bezogen
|
||||||
if (coldExtractionWakeChoicePending) {
|
if (coldExtractionWakeChoicePending) {
|
||||||
if (standbyModeActive || coldExtractionModeActive || shotActive || shotSoftwareActive ||
|
if (standbyModeActive || coldExtractionModeActive || shotActive || shotSoftwareActive ||
|
||||||
@@ -7339,6 +7354,7 @@ static const char brewControlCX_Fields[] PROGMEM = R"rawliteral(
|
|||||||
<small class="toggle-description-input">(Beim Aufwecken aus dem Standby fragt das Touch-Display, ob normal geheizt oder kalt
|
<small class="toggle-description-input">(Beim Aufwecken aus dem Standby fragt das Touch-Display, ob normal geheizt oder kalt
|
||||||
extrahiert werden soll - so entscheidet man das bei jedem Aufwecken neu, ohne vorher die Web-UI zu bedienen.
|
extrahiert werden soll - so entscheidet man das bei jedem Aufwecken neu, ohne vorher die Web-UI zu bedienen.
|
||||||
Ohne angeschlossenes Touch-Display oder bei nicht freigeschalteter Funktion hat die Einstellung keine Wirkung.)</small>
|
Ohne angeschlossenes Touch-Display oder bei nicht freigeschalteter Funktion hat die Einstellung keine Wirkung.)</small>
|
||||||
|
{CX_ASK_DIAG}
|
||||||
|
|
||||||
<h3>Vorbenetzung</h3>
|
<h3>Vorbenetzung</h3>
|
||||||
<label for='cxPreInf'>Dauer (Sekunden):</label>
|
<label for='cxPreInf'>Dauer (Sekunden):</label>
|
||||||
@@ -7827,6 +7843,27 @@ void handleColdExtraction(AsyncWebServerRequest *request) {
|
|||||||
snprintf(buffer, sizeof(buffer), "%.1f", coldExtractionPumpRestSec);
|
snprintf(buffer, sizeof(buffer), "%.1f", coldExtractionPumpRestSec);
|
||||||
cxFieldsHtml.replace("{CX_PUMP_REST}", buffer);
|
cxFieldsHtml.replace("{CX_PUMP_REST}", buffer);
|
||||||
cxFieldsHtml.replace("{CX_ASK_CHECKED}", coldExtractionAskOnWake ? " checked" : "");
|
cxFieldsHtml.replace("{CX_ASK_CHECKED}", coldExtractionAskOnWake ? " checked" : "");
|
||||||
|
// Live-Status der Bedingungen: Die Abfrage haengt an mehreren Voraussetzungen gleichzeitig.
|
||||||
|
// Fehlt eine, passiert schlicht nichts - ohne diese Anzeige ist nicht erkennbar, welche.
|
||||||
|
{
|
||||||
|
String diag = "<br><small><b>Voraussetzungen der Abfrage:</b><br>";
|
||||||
|
auto flag = [](bool ok, const String& text) {
|
||||||
|
return String("<span style='color:") + (ok ? "#66CC66" : "#FFCC00") + ";'>" +
|
||||||
|
(ok ? "✔ " : "✘ ") + text + "</span><br>";
|
||||||
|
};
|
||||||
|
diag += flag(coldExtractionEnabled, "Funktion freigeschaltet");
|
||||||
|
diag += flag(coldExtractionAskOnWake, "Abfrage beim Aufwecken eingeschaltet");
|
||||||
|
diag += flag(touchUartClientActive, "Touch-Display verbunden");
|
||||||
|
diag += flag(!coldExtractionModeActive, "Cold-Extraction-Modus derzeit aus (sonst gibt es nichts zu fragen)");
|
||||||
|
diag += flag(coldExtractionArmable(), "Kein Wartungsmodus / Reinigung / PID-Tuning");
|
||||||
|
if (coldExtractionWakeChoicePending) {
|
||||||
|
long remainMs = (long)(coldExtractionWakeChoiceUntilMs - millis());
|
||||||
|
long remainSec = (remainMs > 0) ? ((remainMs + 999) / 1000) : 0;
|
||||||
|
diag += "<b style='color:#66CC66;'>Auswahlfenster ist gerade offen (noch " + String(remainSec) + " s).</b><br>";
|
||||||
|
}
|
||||||
|
diag += "</small>";
|
||||||
|
cxFieldsHtml.replace("{CX_ASK_DIAG}", diag);
|
||||||
|
}
|
||||||
|
|
||||||
if (coldExtractionEnabled) {
|
if (coldExtractionEnabled) {
|
||||||
String cxStatus;
|
String cxStatus;
|
||||||
|
|||||||
Reference in New Issue
Block a user