Demo mode vs real building systems

Property Operations ships with a mock adapter that seeds 8–12 sample devices on first activation and continuously plays back synthetic events — fire panel test pulses, occasional leak warnings, normal HVAC zone cycling. This is intentional: every demo, sales call, and pilot has a working board on day one.

Telling them apart:
• Mock devices show a small "demo" badge in the device tile.
• The Operations tab header surfaces a banner when only the mock adapter is active — "Demo mode — connect a real building system to remove this banner."

Switching to a real building system:
1. Stand up an on-prem gateway. BACnet/IP is the broadest. The gateway runs on the building LAN — Cloud Functions can't reach BACnet directly because BACnet/IP is UDP broadcast.
2. Configure the gateway to POST device events to your propertyIotIngest webhook with adapterId='bacnet' and your org's API key.
3. The Devices view picks up real devices the moment the first event arrives. Mock devices stay until you delete them — leave them alongside real ones during pilot, or wipe them with the "Remove all demo devices" action in Settings → Property Operations.

Costs:
There's no per-device SaaS fee. You pay for the gateway hardware + your own labor on the BMS side. Turtini's piece is free for as many devices as you want to push at us — the cost we incur (Firestore writes for events) rolls into the platform fee.

Pilot pattern:
A typical pilot leaves the mock adapter on for ops staff to play with the UI while a real BACnet gateway is being configured against one zone or one floor. Once the real gateway is online, remove the mock devices and the banner clears.