Der Aufweck-Dialog am Touch-Display wird zur Auswahl: "Womit aufwecken?" mit
"Espresso" (heizt normal auf) und "Cold Extraction (Wasser bleibt kalt)". Damit
lässt sich bei jedem Aufwecken neu entscheiden, ohne vorher die Web-UI zu bedienen.
Bei der kalten Variante wird der Modus scharf geschaltet, bevor der Standby endet —
der Wasserkreis heizt also gar nicht erst an.
Abschaltbar über die neue Einstellung "Abfrage beim Aufwecken" (EEPROM 982), zu
finden auf /Cold-Extraction und auf der Cold-Extraction-Seite des Displays. Ist sie
aus, erscheint wieder der bisherige Dialog. Ohne angeschlossenes Display oder bei
nicht freigeschalteter Funktion hat sie keine Wirkung. Neues Feld cxAskOnWake im
State und in saveBrew.
Dazu: Die Meldungstexte der kalten Extraktion sind jetzt mit echten Umlauten
geschrieben ("nicht möglich" statt "nicht moeglich"). Für das OLED übersetzt die
neue Hilfsfunktion oledUmlauts() sie beim Rendern nach CP437 — dort hätte UTF-8
sonst zwei Fehlzeichen je Umlaut ergeben, weshalb die Texte ursprünglich
transliteriert waren. Web-UI und Touch-Display stellen UTF-8 direkt dar.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
93 lines
4.9 KiB
C
93 lines
4.9 KiB
C
// =====================================================================================
|
|
// JC4880P443C-I-W - Touch-Display-Firmware fuer die Dual-PID-Siebtraegersteuerung
|
|
// config.h - zentrale Konfiguration (Pins, UART, Protokoll)
|
|
// =====================================================================================
|
|
//
|
|
// Ziel-Hardware: Guition JC4880P443C-I-W
|
|
// - MCU: ESP32-P4 (UI / LVGL)
|
|
// - WLAN: ESP32-C6 (hier NICHT genutzt - WLAN/Webinterface laufen auf der Hauptplatine)
|
|
// - Display: ST7701 (480 x 800 IPS, MIPI-DSI)
|
|
// - Touch: GT911 (kapazitiv, I2C)
|
|
// - Audio: ES8311 (optional)
|
|
//
|
|
// Diese Firmware ist ein reiner UART-Client. Quelle der Wahrheit ist die Hauptplatine
|
|
// (ESP32-S3, Dual_PID_FastHeatUp.ino). Siehe Doku/JC-Display_UART-Protokoll.md.
|
|
// =====================================================================================
|
|
|
|
#pragma once
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// Panel-Modus (C-sicher hier definiert, da auch board_bringup.c ihn liest)
|
|
// 0 = Stub-Modus (kein Display-Treiber; Protokoll/Logik-Test)
|
|
// 1 = echte Hardware (Hersteller-BSP; siehe README)
|
|
// -------------------------------------------------------------------------------------
|
|
#ifndef JC_USE_REAL_PANEL
|
|
#define JC_USE_REAL_PANEL 1
|
|
#endif
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// DIAGNOSE: interner UART-Loopback-Selbsttest
|
|
// 1 = TX wird chip-intern auf RX gelegt (kein Draht, keine Pin-Unsicherheit).
|
|
// -> Laeuft "RX byte" im Debug-Panel hoch, sind Firmware+UART ok und das
|
|
// Problem liegt definitiv an Pins/Verkabelung. Bleibt es 0, ist es die
|
|
// Firmware/UART-Seite. NACH dem Test wieder auf 0 setzen!
|
|
// -------------------------------------------------------------------------------------
|
|
#ifndef UART_SELFTEST_INTERNAL_LOOPBACK
|
|
#define UART_SELFTEST_INTERNAL_LOOPBACK 0
|
|
#endif
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// DIAGNOSE: gruenes On-Screen-Debug-Panel (UART-Zaehler/letzte Rohzeile)
|
|
// 0 = aus (normale UI). 1 = Panel unten einblenden (fuer UART-Fehlersuche).
|
|
// -------------------------------------------------------------------------------------
|
|
#ifndef SHOW_DEBUG_OVERLAY
|
|
#define SHOW_DEBUG_OVERLAY 0
|
|
#endif
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// UART zur Hauptplatine
|
|
// -------------------------------------------------------------------------------------
|
|
// Gegenseite (S3): Serial1, 230400 8N1, TX=GPIO43 / RX=GPIO44.
|
|
// Verkabelung gekreuzt: S3-TX(43) -> P4-RX, S3-RX(44) -> P4-TX, GND <-> GND.
|
|
//
|
|
// Pins laut Schaltplan "4_USB&IO.png" (Expand-IO-Header JP1). Frei herausgefuehrte
|
|
// P4-GPIOs dort: 52/51/50/49/35/34/33/32/31/30/29/28 (+ ES_I2C, +3V3/+5V/GND).
|
|
// Die rechte Header-Spalte (C6_U01TXD/C6_I10RXD/...) gehoert zum ESP32-C6 -> NICHT nutzen.
|
|
// Gewaehlt: P4-TX = GPIO33, P4-RX = GPIO31.
|
|
// JP1 GPIO33 (P4 TX) ----> S3 GPIO44 (RX)
|
|
// JP1 GPIO31 (P4 RX) <---- S3 GPIO43 (TX)
|
|
// JP1 GND ---- S3 GND
|
|
#define DISPLAY_UART_PORT Serial1
|
|
#define DISPLAY_UART_BAUDRATE 230400
|
|
#define DISPLAY_UART_TX_PIN 33
|
|
#define DISPLAY_UART_RX_PIN 31
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// Firmware
|
|
// -------------------------------------------------------------------------------------
|
|
#define DISPLAY_FW_VERSION "1.3.0" // Firmware-Stand der P4-Display-Steuerung (Info-Seite)
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// Protokoll
|
|
// -------------------------------------------------------------------------------------
|
|
#define PROTO_EXPECTED_VERSION 2 // muss zur S3-Firmware passen (TOUCH_UART_PROTOCOL_VERSION)
|
|
// Die State-Zeile der S3 kann mit langem Status-/Profil-/SSID-Text ueber 2 KB gehen. Wird
|
|
// das Limit erreicht, verwirft der Client die GANZE Zeile und das Display friert auf dem
|
|
// letzten Stand ein -> Reserve deutlich groesser als der reale Bedarf (~2,3 KB).
|
|
#define PROTO_RX_LINE_MAX 4096 // max. eingehende Zeilenlaenge (Bytes)
|
|
#define PROTO_HEARTBEAT_MS 5000 // Intervall fuer 'ping' (S3-Timeout = 15 s)
|
|
#define PROTO_HELLO_RETRY_MS 2000 // erneuter 'hello'-Versuch, solange nicht verbunden
|
|
#define PROTO_LINK_TIMEOUT_MS 8000 // ohne empfangene Nachricht -> Verbindung gilt als tot
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
// Display / LVGL
|
|
// -------------------------------------------------------------------------------------
|
|
// Querformat: Panel ist physisch 480x800, per Rotation 90 (pins_config.h) -> 800x480.
|
|
#define DISP_HOR_RES 800
|
|
#define DISP_VER_RES 480
|
|
#define LVGL_TICK_MS 5
|
|
|
|
// Debug-Ausgaben ueber USB-CDC (nicht ueber den Display-UART!)
|
|
#define DBG_SERIAL Serial
|
|
#define DBG_BAUD 115200
|