CYD-Scan-Panel¶
Ein Touch-Panel für Wand oder Schreibtisch, das die im Bridge
hinterlegten Scan-Profile auflistet und einen Scan per Tipp auslöst — das
hardware-unabhängige Gegenstück zur nur teilweisen Tastenunterstützung
des Kodak ScanMate i1120. Der vollständige
Entwurf steht in
Issue #9,
und alles Folgende ausführlicher in
firmware/esp32-panel/README.md
— einschließlich der Sicherheitsabwägungen, die diese Firmware eingeht,
um als ein einziges öffentliches Binary verteilbar zu sein.
| Board | ESP32-2432S028R („Cheap Yellow Display" / CYD) |
| Anzeige | 2,8" 320x240 ILI9341 TFT, resistiver XPT2046-Touch |
| Firmware | ESPHome, ohne eingebettete Geheimnisse — siehe unten |
| Hardware-Verifikation | Gegen echte Hardware geprüft; offene Punkte siehe README |
Installieren und verwalten¶
Flashen und Bluetooth-Einrichtung haben eigene Seiten, verlinkt oben auf der Site:
- Panel installieren — Firmware direkt aus dem Browser über USB flashen (Chrome/Edge, Web Serial).
- Panel verwalten — ein Panel über Bluetooth ins WLAN bringen (Chrome/Edge, Web Bluetooth).
- Firmware herunterladen
— die
.binfürs Upload-Formular des Dashboards, der Rückfallweg. Der normale Weg läuft inzwischen automatisch: Das Panel holt seine Firmware von der Bridge (siehe unten).
Diese Seite ist die Hardware-Referenz dahinter: was das Panel ist, wie es sich nach der Einrichtung verhält und was es weiterhin nicht kann.
Einrichtung, Schritt für Schritt¶
- Installieren — CYD per USB anschließen und von der Seite Panel installieren flashen; den seriellen Port auswählen, wenn Chrome oder Edge danach fragt.
- WLAN (Improv) — direkt nach dem Flashen führt der Installer im
selben Browser-Tab durch die Einrichtung per
Improv Wi-Fi: Netz auswählen,
Passwort eingeben. Das geht auch später über Bluetooth von der Seite
Panel verwalten. Findet das Panel kein
bekanntes Netz, öffnet es ersatzweise einen Hotspot
Scan Panel Setup(Passwortpanelsetup) mit Captive Portal. - Das panel-eigene Dashboard öffnen — sobald es eine IP hat (im
Router nachsehen oder im Protokoll der ESP Web Tools),
http://<panel-ip>/in einem Browser im selben Netz aufrufen. - Bridge URL und Bridge Token setzen — auf diesem Dashboard die
Adresse der scan-bridge eintragen (Host und Port, unter dem Sie
scan-bridgeveröffentlichen, etwahttp://<ihr-bridge-host>:18080) sowie ihren Bearer-Token — den Klartext, dessen SHA-256-Summe in Ihremauth.token_hashsteht und der in Ihren Passwortspeicher gehört, nicht in dieses Repository. Beides übersteht einen Neustart, nichts davon braucht ein erneutes Flashen. Sobald es gesetzt ist, wird die Bridge-Anzeige in der oberen Leiste grün „Bridge: OK", sobald die Bridge aufGET /readymit200antwortet — Profile geladen und Scanner-Backend erreichbar. Blau „Scanner: offline" heißt, die Bridge selbst hat geantwortet, nur das Scanner-Backend nicht; rot deckt jeden anderen Fall ab (falsche URL, Bridge aus, fehlkonfiguriert). Die vollständige Zustandstabelle steht im Abschnitt „Scope and known limitations" der Firmware-README. - Rastergröße (optional) — dasselbe Dashboard hat Grid Rows und
Grid Cols (je 1–3, Standard 2x3 — das heutige feste
Sechs-Tasten-Layout, unverändert, solange Sie nichts ändern). Erhöhen
Sie eines von beiden, um mehr Profile gleichzeitig zu sehen, bis zu
3x3 = 9. Hat die Bridge mehr Profile, als auf eine Seite passen,
blättern die Schaltflächen
<und>in der Fußzeile durch den Rest. - Touch-Kalibrierung — der eine Schritt, den der Browser-Installer
nicht übernehmen kann. Jedes Panel ist anders; siehe den Abschnitt
„Touch calibration" der README (braucht ein lokales
esphomeund ein erneutes Flashen, über USB oder OTA).
Bekannte Grenzen¶
Scans über 55 Sekunden lassen sich vom Panel aus nicht starten
http_request ist synchron: POST /scan hält die Hauptschleife des
Panels über den gesamten Scan, und eine Schleife, die nicht
innerhalb des Task-Watchdog-Fensters zurückkehrt, startet das Gerät
neu. ESPHome deckelt diesen Watchdog bei 60 Sekunden, deshalb liegt
der Client-Timeout des Panels bei 55 — bewusst darunter, damit der
Client zuerst aufgibt und das Panel überlebt, um einen Fehler zu
melden, statt mitten in der Anfrage getötet zu werden.
Ein längerer Scan meldet auf dem Panel Bridge unreachable. Der Scan selbst läuft trotzdem durch: Die Bridge hat die Anfrage bereits und stört sich nicht daran, dass der Aufrufer weg ist. Drei der vier ausgelieferten Profile erlauben 180, 300 und 600 Sekunden und sind vom Panel aus vorerst nicht erreichbar.
Die Lösung sind die /jobs-Endpunkte (Phase 1.4) — Scan auslösen,
Ergebnis pollen, Schleife nie halten. ESPHomes http_request hat
keinen asynchronen Modus als Alternative.
Kein eigenes Hochformat-Layout (das Tastenraster passt sich zwar beiden Ausrichtungen an, Kopf- und Fußzeile sind aber weiterhin auf Querformat festgelegt — siehe „Display orientation" in der Firmware-README), keine Abfrage laufender Aufträge, kein Kalibrierungsassistent auf dem Gerät und kein LVGL-Speicherbudget gegen Hardware belegt.
Zwei Punkte oben sind nur gegen die Konfiguration geprüft
Rastergröße über 2x3 hinaus und das Blättern (Schritt 5) bestehen
esphome config und esphome compile — mehr nicht. Dass ein 3x3-Raster
auf dem Glas lesbar bleibt und die </>-Schaltflächen sauber
umblättern, ist am Gerät nicht nachgewiesen.
Die dreifarbige Bridge-Anzeige (Schritt 4) ebenso: Die Farbwerte
lösen nachweislich wie beabsichtigt auf (grün 0x00A000, blau
0x0080FF, rot 0xE00000) und die Lambda, die den /ready-Körper
liest, ist schema-gültig. Ob die Anzeige tatsächlich blau wird, wenn
sane-runtime steht, und wieder grün, wenn es zurückkommt, hat
niemand ausprobiert.
Die Firmware-README führt beides unter „Scope and known limitations" mit derselben Einschränkung.
Updates kommen von der Bridge¶
Sobald das Panel seine Bridge URL kennt, fragt es dort nach neuerer Firmware und meldet sie auf dem eigenen Dashboard als Firmware Update. Die Schaltfläche Check for Update fordert die Bridge sofort auf, bei GitHub nachzusehen; das Panel liest die Antwort nach 8 s, 90 s und 660 s. Die letzte deckt den Fall ab, dass die Bridge ihren GitHub-Aufruf aufschieben musste — sie hält fünf Minuten Sperrfrist zwischen zweien ein — und danach ihr eigenes Zeitlimit ausgeschöpft hat.
Der Takt richtet sich danach, wie die letzte Prüfung ausging: jede Minute, solange keine erfolgreich war, alle 30 Minuten, sobald eine es war — und wieder jede Minute, sobald eine fehlschlägt. Eine verschwundene Bridge fällt damit erst bei der nächsten planmäßigen Prüfung auf, wenn deren Anfrage in ihr Zeitlimit läuft — also gut eine halbe Stunde später —, wird danach aber binnen etwa drei Minuten nach ihrer Rückkehr wieder gefunden. Ohne gesetzte Bridge URL prüft es gar nicht. Jede Prüfung ist eine kleine Anfrage an die eigene Bridge, nie an GitHub.
Das Panel spricht nie mit GitHub. Es kann es nicht: Neben WLAN,
Bluetooth-Stack, LVGL und dem eigenen Dashboard bleibt kein Speicher
mehr, um eine TLS-Sitzung anzulegen (MBEDTLS_ERR_SSL_ALLOC_FAILED) —
eine Speichergrenze, kein Zertifikatsproblem. Also fragt scan-bridge
alle fünf Stunden bei GitHub nach, lädt das Release, prüft es gegen
die SHA256SUMS des Releases und veröffentlicht es erst danach unter
http://<ihre-bridge>:18080/firmware/manifest.json. Eine Datei mit
falscher Prüfsumme wird verworfen, die Bridge liefert weiter aus, was
sie hatte — das Manifest kündigt also nie einen Build an, den die Bridge
nicht herausgeben kann.
Geprüft wird automatisch, installiert nur auf ausdrücklichen Klick. Die Begründung steht in ADR 0024 und ADR 0025. Das Upload-Formular im Dashboard bleibt als Rückfallweg — die Datei dafür gibt es hier.
Die vollständige, aktuelle Liste führt die Firmware-README unter „Scope and known limitations".