From 49bdc686c41df04fe0fa68f61d445a265cd182a9 Mon Sep 17 00:00:00 2001 From: raw-designs Date: Wed, 12 Aug 2026 02:33:35 +0200 Subject: [PATCH] fix(S3): Auswahl beim Aufwecken auch nach Kaltstart + Diagnose der Bedingungen (5.6.1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- Changelog.txt | 10 ++++++++++ Dual-PID.ino | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/Changelog.txt b/Changelog.txt index 2708f20..f2b8f51 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -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 diff --git a/Dual-PID.ino b/Dual-PID.ino index 33ebfcc..ff4d575 100644 --- a/Dual-PID.ino +++ b/Dual-PID.ino @@ -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 = "thomas@mueller.black"; @@ -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( (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.) + {CX_ASK_DIAG}

Vorbenetzung

@@ -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 = "
Voraussetzungen der Abfrage:
"; + auto flag = [](bool ok, const String& text) { + return String("" + + (ok ? "✔ " : "✘ ") + text + "
"; + }; + 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 += "Auswahlfenster ist gerade offen (noch " + String(remainSec) + " s).
"; + } + diag += "
"; + cxFieldsHtml.replace("{CX_ASK_DIAG}", diag); + } if (coldExtractionEnabled) { String cxStatus; -- 2.54.0