Merge pull request 'fix(S3): Auswahl beim Aufwecken auch nach Kaltstart + Diagnose der Bedingungen (5.6.1)' (#23) from fix/cold-extraction-auswahl-diagnose into main
This commit was merged in pull request #23.
This commit is contained in:
@@ -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:
|
||||
- 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
|
||||
|
||||
+38
-1
@@ -369,7 +369,7 @@ Adafruit_SH1106G display = Adafruit_SH1106G(128, 64, &Wire);
|
||||
* Firmware-Informationen
|
||||
************************************************************************************/
|
||||
|
||||
String version = "5.6.0";
|
||||
String version = "5.6.1";
|
||||
String versionHersteller = "Thomas Müller";
|
||||
String versionHerstellerMail =
|
||||
"<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;
|
||||
}
|
||||
}
|
||||
// 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
|
||||
if (coldExtractionWakeChoicePending) {
|
||||
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
|
||||
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>
|
||||
{CX_ASK_DIAG}
|
||||
|
||||
<h3>Vorbenetzung</h3>
|
||||
<label for='cxPreInf'>Dauer (Sekunden):</label>
|
||||
@@ -7827,6 +7843,27 @@ void handleColdExtraction(AsyncWebServerRequest *request) {
|
||||
snprintf(buffer, sizeof(buffer), "%.1f", coldExtractionPumpRestSec);
|
||||
cxFieldsHtml.replace("{CX_PUMP_REST}", buffer);
|
||||
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) {
|
||||
String cxStatus;
|
||||
|
||||
Reference in New Issue
Block a user