feat(P4): Cold Extraction am Touch-Display + RX-Zeilenlimit-Fix (1.1.0 / S3 5.3.2)
Display-Seite der kalten Extraktion: Schalter unter "Modi" auf der Temperatur-Seite mit Erklärzeile, eigener Slot in der Statuszeile direkt hinter der Sicherheitsmeldung, "Cold Extraction - Heizen aus" in der Wasser-Kachel statt eines unerreichbaren Sollwerts, unterdrückter Aufheiz-Countdown, "Vorbenetzung" als erste Phase des kalten Bezugs, Parameter-Anzeige auf der Brew-Seite und "(kalt)"-Markierung in der Statistik (kalte Bezüge zählen nicht in die mittlere Dauer). Bug-Fix P4: PROTO_RX_LINE_MAX lag bei 2048 Bytes, während die State-Zeile der S3 bereits rund 2,1 KB erreicht. Mit langem Status-, Profil- oder SSID-Text lag sie darüber — dann wurde die ganze Zeile verworfen und das Display fror auf dem letzten Stand ein, ohne dass die Verbindung als tot erkannt wurde. Limit jetzt 4096 Bytes; der Puffer bleibt bei 2 KB reserviert, weil der interne RAM knapp ist und eine Arduino-String nicht ins PSRAM alloziert werden kann. S3 5.3.2: Sperrgrund und transiente Meldung gehen als Codes (cxBlock/cxNotice) statt als Klartext ans Display, dazu cxPreInf für die Phasenleiste. Der bis zu 110 Byte lange Freitext hätte die State-Zeile über das Zeilenlimit gedrückt; die Texte rendert jetzt das Display, analog zur Trennung statusKey/statusText. Auf dem OLED und in den ack-Antworten bleibt der Klartext unverändert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
57b7969f8b
commit
e8edc8eb30
@@ -387,8 +387,20 @@ Aus `getTouchUartStatus()`. Für sprach-unabhängige UI-Logik/Icons auf dem P4 v
|
||||
| `cxResting` | bool | Zwangspause des Pumpenschutzes läuft (Bezug läuft weiter) |
|
||||
| `cxMaxTemp` | float | Freigabeschwelle in °C (für eigene Hinweistexte am Display) |
|
||||
| `cxTarget` | float | Zielgewicht in g |
|
||||
| `cxPreInf` | float | Vorbenetzung in s (für die Phasenleiste des kalten Bezugs) |
|
||||
| `cxMaxSecs` | float | Sicherheits-Timeout des Bezugs in s |
|
||||
| `cxMessage` | string | Sperr-/Abbruchmeldung, leer = keine (läuft nach ~6 s selbst ab) |
|
||||
| `cxBlock` | uint8 | Sperrgrund (siehe unten), `0` = frei |
|
||||
| `cxNotice` | uint8 | transiente Meldung, `0` = keine (läuft nach ~6 s selbst ab) |
|
||||
|
||||
`cxBlock`: `0` frei, `1` nicht freigeschaltet, `2` Standby, `3` Wartungsmodus,
|
||||
`4` Reinigungsassistent, `5` PID-Tuning, `6` Sensorfehler, `7` Wasserkessel zu warm.
|
||||
|
||||
`cxNotice`: `0` keine, `1` Start abgewiesen (Grund steht in `cxBlock`), `2` Bezug wegen
|
||||
fehlenden Zulaufs beendet, `3` Umschalten während eines Bezugs abgelehnt.
|
||||
|
||||
Bewusst **Codes statt Klartext**: Die State-Zeile muss unter dem Zeilenlimit des P4 bleiben
|
||||
(`PROTO_RX_LINE_MAX`; sie liegt real bereits bei ~2,1 KB), und die Texte gehören ins Display —
|
||||
dieselbe Trennung wie bei `statusKey`/`statusText`.
|
||||
|
||||
Während `cxShot` folgt die Phase weiterhin `piState`: `1` = Vorbenetzung, `3` = Hauptbezug
|
||||
(gepulst). Eine Pause-Phase (`2`) gibt es bei der kalten Extraktion nicht.
|
||||
|
||||
Reference in New Issue
Block a user