Rongta 80mm printer: driver, role-based failover, live status monitoring
Add the rongta PrinterDevice driver (ESC/POS over raw TCP 9100) and the device-agnostic pieces around it: - Roles + failover: each printer declares a role (entry-dispenser/booth- receipt) and failoverRank; printer-routing.ts picks the best healthy printer and falls back outside->booth for entry tickets (never the reverse). - Live status: MonitorableDevice.readStatus()/PrinterStatus capability. The Rongta driver scrapes the device's own /prn_stat.htm (Cover/Cutter/Paper End/Near End/Off-Line) rather than hand-decoding DLE EOT, whose reply bytes on this clone don't match the canonical ESC/POS bit layout (verified on hardware) -- avoids a false-healthy. Maps to ready/degraded/offline, fail safe on an unreachable or unexpected page. - Server PrinterMonitor polls enabled printers (PRINTER_POLL_MS, default 5s), caches latest, emits "printer-status" on change. Exposed via GET /api/printers/status and an SSE stream for the booth UI. Verified against 10.0.10.6: ready when healthy, offline when unreachable (no throw), bus emits on change and suppresses unchanged reads. Wiki: new rongta-printer entity, printer-roles-failover and printer-status-monitoring concepts; BOM/index/log updated.
This commit is contained in:
+22
@@ -205,3 +205,25 @@ config write, relay fire, and userset.cgi itself all return 200 unauthenticated
|
||||
inbound-auth setting (only session_en, which bricks the read API). So rotating the
|
||||
login is COSMETIC, not a boundary — the signed event log remains the real
|
||||
guarantee. Recorded in [[dingtian-relay]] (new Hardening section).
|
||||
|
||||
## [2026-06-14] ingest | Rongta 80mm printer driver + printer roles/failover
|
||||
- Added `rongta` PrinterDevice driver (ESC/POS over raw TCP 9100); registered in registry.
|
||||
- Decision: ≥2 printers per lane by role (entry-dispenser outside, booth-receipt inside);
|
||||
entry ticket fails over outside→booth (asymmetric — receipts never print outside).
|
||||
- Selection logic lives in packages/devices/printer-routing.ts (orderForRole, printWithFailover).
|
||||
- One unit verified reachable at 10.0.10.6:9100 from host (TCP connect OK).
|
||||
- New pages: [[rongta-printer]], [[printer-roles-failover]]. Updated [[bom]], [[index]].
|
||||
- Open: all-printers-down policy belongs to the (not-yet-built) entry flow, not the printer layer.
|
||||
|
||||
## [2026-06-14] ingest | Live printer status monitoring
|
||||
- Added MonitorableDevice.readStatus()/PrinterStatus capability in packages/devices.
|
||||
- Rongta readStatus() scrapes the device's own /prn_stat.htm (Cover/Cutter/Paper End/Near End/
|
||||
Off-Line) — chosen over hand-decoding DLE EOT because this clone's DLE EOT bytes don't match
|
||||
the canonical ESC/POS bit layout (verified on hardware; risk of false-healthy).
|
||||
- Server PrinterMonitor: polls enabled monitorable printers (PRINTER_POLL_MS, default 5s),
|
||||
caches latest, emits "printer-status" on change. API: GET /api/printers/status + SSE stream.
|
||||
- Verified live: 10.0.10.6 -> ready (all flags clear); unreachable host -> offline (no throw);
|
||||
bus emits on change, suppresses unchanged. Full repo typechecks (8/8).
|
||||
- New page: [[printer-status-monitoring]]. Updated [[rongta-printer]], [[index]].
|
||||
- Open: capture the page's actual text for an ACTIVE fault (pull paper / open cover) to confirm
|
||||
the Yes flip; wire degraded/offline into failover + entry-flow all-down policy.
|
||||
|
||||
Reference in New Issue
Block a user