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:
|
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