An early wrong assumption named the QR/RFID access reader "GEE" / "GEE/Fondvision" / "GEE-QR-ER80" (and summarized a raw GEE PDF as its datasheet). There is no GEE device — it's the Dingtian DT-008 (dingtian-tech.com/en_us/qr_code_reader.html), the same vendor as the relay board, which is why it integrates the identical HTTP-GET-push way. Code: - Driver symbol geeQrReaderDriver → dingtianQrReaderDriver; label → "Dingtian DT-008 QR/RFID reader (HTTP push)"; comments/description rewritten to the real DT-008 facts (Wiegand 26/34, TCP/IP, USB, RS485 — not RS-232; QR/barcode + ID/IC/NFC — not DataMatrix/1D). - Persisted driverId "gee-qr-reader" → "dingtian-qr-reader" (the registry lookup key + the row created on assign in qr-reader.ts). - Migration 0015 rewrites existing devices.driver_id rows so configured readers keep resolving (applied to the dev DB — 2 rows; the booth applies it on boot). Behaviour is unchanged: naming + the persisted id only. Wiki + memory: - Renamed entities/gee-qr-er80.md → dingtian-dt008-reader.md and sources/gee-qr-er80.md → dingtian-dt008.md; rewrote both to the real DT-008 product-page specs while KEEPING all the verified-on-hardware protocol facts (cjihao serial, .jsp path, Connection: close). Fixed every cross-reference + "GEE" mention in 6 other pages. Memory gee-reader-serial-binding → dingtian-reader-serial-binding. The only surviving "GEE" mentions are deliberate naming-correction notes, the raw PDF filename, and the append-only log history. Full workspace build/lint/test green; dev DB readers verified resolving to the registered dingtian-qr-reader driver. Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
2.1 KiB
type, tags, sources, updated
| type | tags | sources | updated | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| source |
|
|
2026-06-28 |
Source: Dingtian DT-008 QR Code Reader (product page)
Vendor product page for the Dingtian DT-008 QR/barcode/RFID access reader — https://www.dingtian-tech.com/en_us/qr_code_reader.html. This is the reader the project actually has on hand for the ticket-encoding / RFID-subscription paths. Entity: dingtian-dt008-reader. Same vendor as the dingtian-relay.
Supersedes a mis-identified source. The project originally summarized
raw/GEE-QR-ER80 QR Code Access Control Reader.pdfas if the reader were a "GEE-QR-ER80" (GEE NFC LIMITED). That was a wrong early assumption — the device is the Dingtian DT-008. Several facts in that PDF (RS-232, DataMatrix/1D, a Linux SDK) do not match the real hardware and were dropped. The HTTP-push protocol facts, however, were later verified on the actual device (see dingtian-dt008-reader "Verified on hardware").
Key takeaways (DT-008 product page)
- Scans: QR / barcode (simple) and ID/IC/NFC cards. Read ~0.2 s, range 0–10 cm.
- Interfaces: Wiegand 26/34, TCP/IP, USB, RS485. (For our integration: HTTP over TCP/IP.)
- Power: 9–16 V DC, 800 mA. Size: 86×86×42 mm. Temp: −30…70 °C.
- Wiegand pinout: Red(power), Black(GND), Green(D0), White(D1), Blue(LED), Yellow(BEEP).
- Reporting: "QR Code HTTP GET" — the reader HTTP-GETs a configured host on each scan; the host
replies the verdict (drives beep/output). Vendor ships a QR Code config tool + HTTP-GET demo
code (C++/C#/PHP) and an SDK (
QRCode_sdk.zip). See qrcode-sdk for the protocol we implement.
How we use it
Host-in-the-loop, synchronous HTTP: reader GETs /qa/mcardsea.<ext> with its serial (cjihao);
our endpoint (apps/server/src/routes/qr-reader.ts) decides and replies the SDK verdict, and emits
a read event for the access flows. Full integration + the on-hardware findings (the .jsp path
extension, Connection: close requirement, serial resolution) are in dingtian-dt008-reader.