RFID - IOT Feed Integration

This documentation details the JSON schema and usage guidelines for capturing RFID tag location events. It also covers connection details for publishing to a Confluent Cloud Kafka topic using SCRAM/TLS.

1. JSON Schema

{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "DocumentLogEpcLocation", "type": "object", "properties": { "epc": { "type": "string", "description": "Electronic Product Code, a unique identifier for RFID tags." }, "x": { "type": "number", "description": "X coordinate of the tag's location (required if using x/y approach)." }, "y": { "type": "number", "description": "Y coordinate of the tag's location (required if using x/y approach)." }, "floorNumber": { "type": "number", "description": "Floor or elevation of the tag's location (required if x and y are provided)." }, "epochMillis": { "type": "integer", "description": "The time of the event in epoch milliseconds." }, "zoneId": { "type": "string", "description": "The zone within a facility where the tag was detected. If this is provided, x, y, and floorNumber are not required." }, "placeId": { "type": "string", "description": "A combination of a 2-character country code, an underscore, and a 4-character store number." }, "macAddress": { "type": "string", "description": "MAC address of the RFID reader." }, "rssi": { "type": "number", "description": "Received Signal Strength Indicator." } }, "required": [ "epc", "epochMillis", "placeId" ], "oneOf": [ { "required": ["zoneId"] }, { "required": ["x", "y", "floorNumber"] } ] }

2. Schema Document Fields

Field Type Required? Description
epc String Yes Electronic Product Code, a unique identifier for RFID tags.
x Double Conditional X coordinate of the tag's location. Required if not using zoneId (i.e., if you choose x/y/floorNumber).
y Double Conditional Y coordinate of the tag's location. Required if not using zoneId (i.e., if you choose x/y/floorNumber).
floorNumber Number Conditional Floor or elevation of the tag's location. Required if x and y are provided.
epochMillis Integer Yes The time of the event, in milliseconds since the Unix epoch.
zoneId String Conditional The zone where the tag was detected. Required if not using x, y, and floorNumber.
placeId String Yes Combines a 2-character country code, an underscore, and a 4-character store number (e.g., US_1234).
macAddress String No MAC address of the RFID reader.
rssi Float No Received Signal Strength Indicator.

3. Constraints Diagram

The following diagram illustrates how you can choose either zoneId + placeId (unique per tenant), or x + y + floorNumber + placeId to specify the tag's location:

┌───────────────┐ │ Select Method │ └───────────────┘ / \ v v ┌──────────────────────────────┐ │ zoneId + placeId (unique) │ │ (No x, y, floorNumber needed)│ └──────────────────────────────┘ OR ┌────────────────────────────────────┐ │ x + y + floorNumber + placeId │ │ (No zoneId needed) │ └────────────────────────────────────┘

4. Example JSON Data

Option 1 (Using x, y, floorNumber):

{ "epc": "300833B2DDD9014000000000", "x": 45.232, "y": 12.487, "floorNumber": 2, "epochMillis": 1609459200000, "placeId": "US_1234", "macAddress": "00:1A:2B:3C:4D:5E", "rssi": -67.5 }

Option 2 (Using zoneId):

{ "epc": "300833B2DDD9014000000000", "zoneId": "Z123", "epochMillis": 1609459200000, "placeId": "US_1234", "macAddress": "00:1A:2B:3C:4D:5E", "rssi": -67.5 }

5. Kafka Connection Details

The feed is published to Confluent Cloud using SCRAM/TLS authentication. Below are the required connection parameters:

bootstrap-server: pkc-n3603.us-central1.gcp.confluent.cloud:9092
api-key: ********
api-secret: ******
topic-name: <tenant-namespace>.logEpcLocations