BigBrainParking/docs/zone-qr/README.md
Erik 2bdb59b49a
All checks were successful
build-apk / build (push) Successful in 30m18s
v0.2.6: fix kiosk-code scan resolution + add zone QR asset
ScanScreen.lookupCode tried getMetersByScannerCode first and let its thrown
error-envelope abort the whole lookup, so the getMetersByZoneName fallback never
ran; it also sent ZoneName in the scanned case (the API is case-sensitive — the
official app lowercases). Confirmed via live mitmproxy capture of the official
app: a scanned code resolves through ScannerCode, and ZoneName=dl (lowercase)
returns the zone.

Now tries ScannerCode -> ZoneName -> zonename(lowercased) -> TerminalSerNo, each
independent and non-fatal; only reports "Lookup failed" if every attempt errored.

Adds docs/zone-qr/ with the DL-Sandpoint QR (encodes ScannerCode "DL", works in
both BigBrainParking and the official app) and a how-to.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 19:08:49 +00:00

1.3 KiB

Zone QR codes

A parking-zone QR code just encodes the zone's ScannerCode as plain text. BigBrainParking's scanner (and the official ParkSmarter app) resolve that code to the zone. No URL, no wrapper — the raw scanner code is enough.

Make one

qrencode -o my-zone.png -s 14 -m 4 "<ScannerCode>"

<ScannerCode> is the zone's ScannerCode field (visible on the meter detail screen, or in a /api/Meter response). For the DL zone in Sandpoint it's DL:

qrencode -o DL-sandpoint.png -s 14 -m 4 "DL"

DL zone, Sandpoint

Which field to encode

Use ScannerCode — it's what physical kiosk QR stickers encode and the only field the official ParkSmarter app accepts when scanning.

  • ScannerCode works in BigBrainParking and the official app.
  • ZoneName (e.g. dl) — works as a fallback in BigBrainParking (case-sensitive server-side; the app tries the lowercased form too).
  • TerminalSerNo (e.g. 30004246) — uniquely identifies the terminal and works in BigBrainParking, but the official app rejects a bare serial ("not recognized as a ParkSmarter zone"), so don't use it for cross-app QR codes.

When BigBrainParking scans a code it tries, in order: ScannerCode → ZoneName → zonename(lowercased) → TerminalSerNo, each independently, so any of these resolve.