Version 5.3.1: - Cold Extraction ist jetzt persistent: Der Modus wird im EEPROM gespeichert und überlebt sowohl den Standby als auch einen Neustart. Zuvor wurde er beim Standby beendet und war nach dem Aufwachen aus - die Maschine heizte dann erst auf, obwohl der nächste kalte Bezug einen kalten Kessel braucht, und man musste auf das Abkühlen warten. Wer nur kalte Bezüge machen will, schaltet den Modus damit einmal ein und wieder aus, wenn er fertig ist. - Der Modus fällt nur weg, wenn auf /Brew-Control die Freischaltung entzogen wird oder ein Werksreset läuft. Solange er aktiv ist, heizt der Wasserkreis nicht - Dashboard, OLED („(COLD)" in der Wasserzeile) und Touch-Display zeigen das durchgehend an. Version 5.3.0: - Neu: Cold Extraction (kalte Extraktion). Die Maschine hat keinen Bypass um den Wasserkessel, kaltes Wasser kommt also nur bei kaltem Kessel am Puck an. Die Funktion wird deshalb über eine Temperaturschwelle freigegeben (Standard 30 °C, einstellbar 10–40 °C) und ist praktisch aus dem kalten Zustand heraus nutzbar. - Solange der Modus aktiv ist, heizt der Wasserkreis nicht (SSR gesperrt, Stellgröße und damit auch die dutyW-Telemetrie auf 0, I-Anteil der Wasser-PID eingefroren, Feed-Forward-Boost deaktiviert). Der Dampfkreis bleibt unberührt und darf weiter heizen. - Die Freigabe wird vor jedem Bezug neu geprüft, nicht nur beim Aktivieren: Da der Dampfkessel weiter heizt, kann der Wasserkessel über die Zeit über die Schwelle steigen. In diesem Fall wird der nächste Bezug abgewiesen (Meldung auf OLED, Touch-Display und im Web-Dashboard) - ein laufender Bezug wird nie abgebrochen. Hysterese von 5 °C, damit die Anzeige an der Schwelle nicht flattert; Sensorfehler sperrt die Funktion. - Der Fluss wird über Pumpen-Pulsung reduziert (Pulsperiode 200–5000 ms, Pumpenleistung 5–100 %), davor läuft eine einstellbare Vorbenetzung mit voller Pumpenleistung. Bezugsende über Zielgewicht oder Sicherheits-Timeout; Brew-by-Time/Brew-by-Weight und FlowGuard sind während einer kalten Extraktion bewusst außer Kraft (FlowGuard und Cold Extraction würden sonst um denselben Pumpen-Ausgang konkurrieren). - Pumpenschutz: Die Steuerung zählt die kumulierte Pumpen-Einschaltzeit und legt nach der eingestellten Laufzeit eine Zwangspause ein (Standard 60 s Laufzeit / 20 s Pause). Zusätzlich Stillstands-Erkennung - läuft die Pumpe bei aktiver Waage 15 s ohne Zulauf, wird der Bezug beendet (dichter Puck oder ausgelöster Pumpen-Thermoschutz). - Bedienung: Parameter auf der Seite /Brew-Control, Ein-/Ausschalten über das Web-Dashboard oder das UART-Touch-Display (neue Aktionen "startColdExtraction"/"stopColdExtraction"/"toggleColdExtraction"). Cold Extraction ist bewusst kein Profilfeld (maschinen- und situationsabhängig, wie der Feed-Forward); der Modus selbst wird nicht persistiert und ist nach einem Neustart immer aus. Standby beendet ihn. - Statistik: Kalte Bezüge werden im Log mit einem vierten CSV-Feld "C" gekennzeichnet, zählen in allen Stückzahlen mit, gehen aber NICHT in die durchschnittliche Bezugsdauer ein (Minuten statt Sekunden würden den Wert verzerren). Die Info-Seite weist die Anzahl separat aus, der Verlaufs-Download hat eine neue Spalte "Art". Ältere Logzeilen bleiben unverändert lesbar. - Neue additive State-Felder im UART-JSON (Protokoll bleibt v2): cxEnabled, cxActive, cxShot, cxAllowed, cxResting, cxMaxTemp, cxTarget, cxMaxSecs, cxMessage sowie "cx" pro Eintrag in usageStats; neuer statusKey "coldextraction". Ältere Display-Firmware ignoriert die Felder. Version 5.2.0: - Feed-Forward bei Bezug (Störgrößenaufschaltung) für den Wasserkessel: Während eines Bezugs wird der Heizung sofort ein einstellbarer Leistungs-Boost (0–100 % der Fenstergröße, 0 % = aus) aufgeschaltet, statt auf den vom Sensor gemeldeten Temperaturabfall zu warten. Die PID regelt nur noch den Restfehler; der Temperatur-Dip während des Shots wird deutlich kleiner. Einstellung auf der /PID-Seite („Feed-Forward bei Bezug"), gespeichert im EEPROM (bewusst kein Profilfeld, da maschinenabhängig). - Optional: I-Anteil der Wasser-PID während des Bezugs einfrieren. Verhindert das Aufladen des Integral-Anteils während des Shots und damit das Überschwingen nach Bezugsende. - Der Boost wirkt nur bei echten Bezügen (Hardware-Schalter oder Software-Start), nicht bei Spülen/Wartungsmodus/AutoTune. Sicherheitslogik unverändert: Sensorfehler, Übertemperatur-Abschaltung und „Heizen oberhalb Setpoint verhindern" haben weiterhin Vorrang; Deckelung auf die Fenstergröße. - Die Heizleistungs-Telemetrie (dutyW, u. a. für das Verlaufs-Chart des Touch-Displays) zeigt den Boost mit an - damit ist die Wirkung direkt im Chart kalibrierbar. Version 5.1.2: - Profil-Seite (Web-UI): Die neue „Aktives Profil"-Anzeige stand linksbündig außerhalb des Karten-Layouts. Sie nutzt jetzt den status-message-Stil der Seite (zentriert, max. 600 px, dezenter Rahmen) und fügt sich damit in das bestehende Layout ein; Profilname zusätzlich fett. Version 5.1.1: - Aktives Profil wird jetzt geführt und angezeigt: Die Steuerung merkt sich das zuletzt geladene bzw. gespeicherte Profil dauerhaft im EEPROM (überlebt Neustarts). Web-UI: Anzeige auf dem Dashboard über der Profil-Auswahl sowie auf der Profil-Seite (aktives Profil zusätzlich mit grünem Punkt in der Liste). - „Geändert"-Erkennung: Werden nach dem Laden profil-relevante Einstellungen geändert (Solltemperaturen, PID-Werte inkl. AutoTune-Ergebnis und AutoTune-Parameter, Boost, Eco, Dampfverzögerung, Fast-Heat-Up, Brew-Control, Piezo), erscheint hinter dem Profilnamen „✱ (geändert)". Reine Anzeige-/Systemeinstellungen (Anzeigemodus, Aufheizzeit, Licht, FlowGuard, Waage/Sensoren) lösen das bewusst nicht aus. - Profil löschen setzt die Anzeige zurück, wenn das gelöschte Profil das aktive war; Werksreset ebenso. - Neue additive State-Felder "profile" und "profDirty" im UART-JSON für das Touch-Display (Protokoll bleibt kompatibel, ältere Display-Firmware ignoriert die Felder) - Grundlage für die Profil-Schnellwahl am Display. Version 5.1.0: - Display-Auswahl in die Web-UI (/Sensoren) verlegt: Ohne Display / OLED (SH1106, I2C) / UART-Touch-Display. Der Compile-Schalter ENABLE_DISPLAY entfällt, die Einstellung wird im EEPROM gespeichert und ohne Neustart übernommen. Default ist "Ohne Display", damit die Steuerung ohne angeschlossene Anzeige immer sicher startet. - Boot-Schutz: Vor der OLED-Initialisierung wird per I2C-Probe (0x3C) geprüft, ob das Display wirklich angeschlossen ist. Ohne Antwort bleibt die Anzeige deaktiviert und die Steuerung bootet normal weiter - eine falsch gesetzte Display-Einstellung kann die Maschine damit nicht mehr blockieren. - UART-Touch-Anbindung (Serial1) wird nur noch initialisiert und bedient, wenn "UART-Touch-Display" gewählt ist. Version 5.0.12: - Neues additives Feld "piState" im State-JSON für das UART-Touch-Display (0=inaktiv, 1=Pre-Infusion, 2=Pause, 3=Hauptbezug): Die Pre-Infusion-Phasenleiste auf dem Display folgt damit quelltreu der echten Statemachine der Steuerung statt einer zeitbasierten Ableitung (Protokoll bleibt v2, ältere Display-Firmware ignoriert das Feld) - Wartungsmodus und Eco-Modus werden beim Wechsel in den Standby nun beendet (Eco wurde bereits beendet, der Wartungsmodus blieb bislang aktiv) - Bug-Fix: Im Wartungsmodus heizte der Dampfkreis trotz deaktivierter Heizung dauerhaft, wenn die Option „Permanent heizen bei Dampf-Bezug" aktiv war und Dampf bezogen wurde Version 5.0.11: - Bug-Fix: Dauerhafter Neustart (Panic/Exception) der Steuerung, sobald das UART-Touch-Display (P4) angeschlossen wurde. Ursache: Stack-Überlauf im loopTask – der 3000-Byte-Puffer für das State-JSON (touchUartSendState) sowie der Puffer für Profildetails (getProfileDetails) lagen auf dem Task-Stack (~8 KB) und liefen zusammen mit der Aufrufkette des hello-Handshakes über. Beide Puffer sind jetzt static (analog zu touchUartSendUsageStats). Der Pfad wird nur bei verbundenem Display ausgeführt, daher lief die Maschine ohne Display stabil. Version 5.0.10: - Sicherheits-Fix: Während eines Display-Firmware-Updates (P4) werden die Heizungen nun garantiert abgeschaltet. Zuvor konnte die zeitproportionale SSR-Steuerung während der Übertragung ausgebremst werden, sodass ein gerade eingeschaltetes Heizungs-SSR eingeschaltet blieb (Überhitzungsgefahr, z. B. zu hohe Wassertemperatur nach einem P4-Update). Zusätzlich wurde eine Ursache für einen verzögerten Neustart (Panic) nach P4-Updates entschärft (delay(1) statt yield(), damit die Regel-/Sicherheitsschleife während der Übertragung weiterläuft). Version 5.0.9: - Statistik-Seite für das UART-Display hinzugefügt Version 5.0.8: - Brew-by-Weight-Gewichtseingabelimit auf 150g erhöht, um auch Heißwasserbzug für Americano oder ähnliches via BBW zu ermöglichen Version 5.0.7: - ECO-Option „Nach Neustart/Power-On in Standby gehen" hinzugefügt Version 5.0.6: - UART-Touch-Display implementiert - Rettungsmodus (für Fehlerhafte Firmware-Updates) hinzugefügt Version 4.8.1: - Glättungs-Funktion im Waage-Modus kann nun über Sensoren im Webinterface aktiviert/deaktiviert werden Version 4.8.0: - Waage-Modus nochmals verbessert - Kalibrierungsassistent für die Wage zur Bestimmung des Kalibrierungsfaktors implementiert Version 4.7.0: - Unterstützung für Fully Kiosk-Endgeräte als Display hinzugefügt - Fragmente der alten Ultraschallsensor-Komponente entfernt - Nun nutzt auch die Desktop-Ansicht der Web-UI ein Hamburger-/Sandwich-Menü Version 4.6.0: - Waage weiter verbessert: - Median-von-3 gegen einzelne Ausreißer - Spike-Erkennung: - außerhalb eines Bezugs: Sprünge > 3.0 g werden zunächst verworfen - während Bezug: Sprünge > 10.0 g werden zunächst verworfen - kommt der große Sprung wiederholt, wird er akzeptiert, damit echte Änderungen nicht hängen bleiben - Reset der Filter bei Tara, Disconnect, Reconnect und Initialisierung - currentWeightReading wird jetzt nur noch zentral über die Filterfunktionen gesetzt Brew-by-Weight bleibt schnell, bekommt aber Schutz gegen einzelne Störimpulse. Performance-Kosten sind minimal: drei Float-Samples, ein Median-Vergleich und ein paar fabs()-Checks pro Waagenmessung. Version 4.5.2: - Waage-Anpassung: Im Waage-Modus wird jetzt ein geglätteter und etwas trägerer Wert angezeigt, während beim Brühen der schnelle Roh-Wert der Waage verwendet wird (dieser "schwankt" daher auch manchmal leicht) Version 4.5.1: - Bug-Fix: Beim X-Switch war noch ein Teil der alten Schalter-Logik enthalten, wodurch der X-Switch-Status nicht über die Web-UI geändert werden konnte - Zeit für Longpress ist nun über die Web-UI einstellbar Version 4.5.0: - Neues Feature in Brew Control eingeführt: FlowGuard Ermöglicht es, auch bei zu grober Mahlung durch Pulsen der Pumpe eine voreingestellte Ziel-Brühzeit zu erreichen - Style-Anpassungen für mobile Ansicht Version 4.4.2: - Neustart-Grund wird nun in der Web-UI unter Info erweitert angezeigt, um bei Fehlern eine bessere Diagnose durchführen zu können. Version 4.4.1: - Einstellbares Temperatur-Offset für den Zusatz-Temperatursensor (Gehäuse/Tassenablage) Version 4.4.0: - Neue Funktion "Offset-Kompensation" in den PID-Einstellungen: Bei negativem Temperatur-Offset wird in Display und Web-UI bis zur Referenzschwelle die Temperatur ohne Offset angezeigt; funktioniert auch nach dem Aufwachen aus dem Standby Version 4.3.5: - Dampf- und Wasserflush ist nun auch zeitgleich möglich, sowie Dampf-Flush auch während eines Espresso-Bezugs Version 4.3.4: - Wechsel in Eco-Modus passiert nun nicht mehr während eines Bezugs, der knapp an der Zeit für das Eco-Umschalten liegt - Button-Longpress von 2s auf 1s geändert Version 4.3.3: - Bug beim Tarieren des ersten Bezugs nach Maschinenstart / Aufwachen aus Standby behoben. Version 4.3.2: - Reinigungsassistent um weiteren Parameter ergänzt - Nun lässt sich auch die Pausenzeit zwischen den Zyklen einstellen. Zudem wurde die Erfolgsmeldung/Abschlussmeldung in der Web-UI wieder entfernt. Version 4.3.1: - Neue Funktion für "Dampf-Nicht heizen"-Setting bei Neustart und Aufwachen aus dem Standby in den Eco-Einstellungen Version 4.3.0: - Home-Assistant-Integration verbessert - Anzeige des Zusatz-Temperatursensors (Gehäuse/Tassenablage) nun im Display möglich - Dampf-Timer in Brew-Control-Settings einstellbar für automatisches Abschalten des Dampfs nach X Sekunden Version 4.2.8: - HX711 verbessert: bei aktivierter Waage + Brew-by-Weight wird vor Bezugsstart zuerst 1 Sekunde tariert; im Display erscheint dabei "Waage wird tariert..." - HX711 verbessert: beim Eintritt in den Waagenmodus wird nun ebenfalls automatisch tariert Version 4.2.7: - X-Switch erweitert: Short-Press und Long-Press können jetzt getrennt mit Funktionen belegt werden Version 4.2.6: - Hardware-Eingänge auf Tasterlogik umgestellt: Standby, Eco, X-Funktion, Bezug und Dampf arbeiten jetzt per Tastendruck statt per dauerhaftem Schalterzustand - Bezug- und Dampftaster unterstützen jetzt Long-Press: 2 Sekunden halten startet Wasser- bzw. Dampf-Flush - Alte Abhängigkeiten vom "Schalter zurückstellen" nach Auto-Stopp entfernt; Bezug/Dampf/Flush laufen jetzt konsistent über die Software-Logik - OLED-Anzeige ergänzt: bei aktivem "Dampf nicht heizen" wird statt der Dampf-Temperatur "Nicht heizen aktiv" angezeigt Version 4.2.5: - Home-Assistant-API ergänzt: eigene HTTP-Endpunkte für Status, Standby an/aus und "Jetzt aufheizen" - Standard-Kalibrierungsfaktor für HX711 geändert Version 4.2.4: - Heizung wird nach langem Standby beim Aufwecken wieder korrekt gestartet; PID-Zeitfenster werden beim Verlassen von Standby sauber resynchronisiert Version 4.2.3: - Standby auf reinen Software-Standby umgestellt; Hardware-Standby-Schalter arbeitet jetzt als Taster/Toggle - Display-Hinweis ergänzt, falls der Standby-Taster versehentlich gedrückt gehalten wird - Neue Timer-Seite in der Web-UI: beliebig viele Timer mit Wochentagen, aktiv/inaktiv sowie Standby an/aus - Timer werden auf FATFS gespeichert und nur bei synchronisierter NTP-Zeit ausgeführt Version 4.2.2: - Reinigungsassistent: Heizt Wasser nun vor Start der Zyklen auf 93 °C auf, Dampfheizung bleibt dabei aus - Reinigungsassistent: Status/Phase wird nun auch im Display angezeigt - Standby/Web-Override: Dampf-Startverzögerung startet nach Verlassen von Standby wieder korrekt neu - Standby: temporäre Eco- und Dampfverzögerungs-Overrides werden beim Standby-Wechsel zurückgesetzt Version 4.2.1: - Dampf-Timer wird nun auch (analog zum Shot-Timer) 3 Sekunden lang nach Timer-Ende im Display angezeigt - Temperatur-Profile können nun mit Leerzeichen und Umlauten gespeichert/angezeigt werden Version 4.2.0: - Reinigungsassistent im Bereich Service hinzugefügt Version 4.1.5: - Standby-Funktion kann über Web-UI temporär deaktiviert werden Version 4.1.4: - Umstellung von LittleFS zu FATFS aufgrund des 16MB-MC-Flash Version 4.1.3: - Dampf-Heizverzögerung zählt nun erst, wenn das Gerät im "Normalbetrieb" läuft und nicht Standby-Zeit - Standby-Zeit wird nicht mehr als Betriebszeit getrackt (verringert auch die Schreibzyklen im Speicher) - Flush-Funktion nun auch für den Dampf-Kreislauf Version 4.1.2: - Dashboard: Abstände verringert / kompakter gestaltet Version 4.1.1: - Einstellung für Licht-Aus/An im Standby - Versehentlich entfernte Funktion wiederhergestellt: Eco-Info im Display anzeigen - Eco-Option "Aufheizverzögerung per Bezugsschalter überspringen" wird jetzt korrekt persistent gespeichert - Display: Timeranzeige bei aktivem Dampf-Bezug und aktivem Flush ergänzt (Priorität: Shot > Dampf > Flush) - Service-Seite: Flush-Zeit ist jetzt einstellbar und persistent speicherbar (Standard: 3 Sekunden) - Eco-Timer wird nun auch durch Dampfbezug und Flush zurückgesetzt (nicht nur durch Shot) - UART-Touch-UI (ESP32-S3 7") angebunden: neues UART-Frame-Protokoll (HELLO/STATE/CHART) mit Live-Daten für Dashboard und Chart (M1) - UART-Touch-UI M2: ACTION_REQ/ACTION_ACK umgesetzt (Touch-Aktionen steuern jetzt direkt die Dashboard-Logik der Steuerung) Version 4.0: - Weitere Komfort-Funktionen (Licht, Dampf-Steuerung, Standby, Flush via Web-UI,...) - ESP8266-Support entfällt Version 3.7.1 - 2026-01-01 - Dashboard: Status zeigt verbleibende Minuten bis Eco-Start (z.B. "Eco-Modus in 43min") - Web-UI /ECO: neuer Toggle "Eco-Info auf dem Display anzeigen" - Display (Idle): optionales Layout mit Eco-Countdown bzw. "Eco-Modus aktiv"