RFID System
Overview

RFID System Overview

Parlevel uses UHF RFID (860–960 MHz, EPC Gen 2) to track inventory in real time. Tags are attached to bottles, kegs, or other assets. Readers detect tags passively — no battery required in the tags.

Components

ComponentRole
Chainway U300Multi-port UHF RFID reader. Reads EPC, TID, and user/reserved banks
U300 Relay APKAndroid bridge app. Polls reader → forwards events to Parlevel
Parlevel AppStores events, classifies fluid levels, displays live inventory
SupabasePersistent store for tag assignments, events, and per-location config

Tag data banks

Each EPC Gen 2 RFID tag has four memory banks:

BankPurposeUsed for
EPCTag identifier (12–24 bytes)Primary product identifier in Parlevel
TIDChip serial number (read-only)Identifying tag family (e.g. AZN3120-AFR)
UserGeneral purpose storageNot currently used
ReservedKill/access passwords + sensor dataMoisture/fluid level (word 12)

Event flow

Reader detects tag


Relay APK polls /inventory


POST /api/rfid/u300/ingest  (tag EPC + metadata)


Parlevel saves rfid_event row

       ├──► Zone/Storeroom inventory updates

       └──► Moisture poll reads Reserved bank word 12


            classifyFromHistory() → fluid level badge

Per-location configuration

Every RFID setting can be overridden per location via the RFID tab in the location settings page. This includes:

  • U300 reader URL and relay token
  • Ingest endpoint and key
  • RF link profile and antenna power
  • Which antenna ports are active (1–8)
  • Tag family for moisture sensing
  • Kill password

See Environment Variables for the full list and priority order.