Raspberry Pi 58 GB · BCM2712 quad-Cortex-A76
The default. HDMI 2.1, 4K60 HDR, hardware H.265 decode. Runs balenaOS containers; same image across the fleet. Cheapest spare-pool nationally.
Three layers, every component replaceable. Open-source where it's available, industry-standard where it isn't — so any layer can be swapped without swapping the screen.
Every BrightSpot install runs the same open playback layer — HTML5 / SMIL / WebRTC on balenaOS — but you pick the engine that fits the budget, the form factor, and the warranty story. The CMS doesn't care which one you choose. Swap any of them out without swapping the screen.
The default. HDMI 2.1, 4K60 HDR, hardware H.265 decode. Runs balenaOS containers; same image across the fleet. Cheapest spare-pool nationally.
For 8K product launches, broadcast walls, and AV1-encoded campaigns. Fanless. Higher cost, but two HDMI streams + 4K NDI ingest in one box.
For fleets where vendor-warranty and zero-touch deploys matter more than openness. HDMI-CEC display control, PoE+, BrightAuthor:connected CMS native.
For multi-display walls, video-wall processors, and broadcast graphics. Four synced outputs, full GPU acceleration, runs anything the operator wants on it.
Every BrightSpot install ships with a dayparting engine — the same logic broadcast TV uses to stack ads, but per-screen and triggered by real sensors. Brightness, slot length, and content category all shift with the audience curve that the screen actually exists to move: opportunity-to-see, dwell, recall, conversion.
DOOH measurement is no longer hand-wavy. ROUTE, COMMB, OOH-OS and Geopath all measure on the same vocabulary — opportunity-to-see, dwell, recall — and that vocabulary maps directly to time-of-day. BrightSpot wires the screen, the network, the CMS and the sensors to that map.
17:00–19:00 weekday peak runs 15-second slots at 90 % brightness with the highest-CPM content. Off-peak collapses to 60-second loops at 30 % — civic content, dark-sky compliant.
Schedule template tuned to South African footfall curves: morning commute (06:30–08:30), lunch (11:30–14:00), home-time peak (17:00–19:30), late spike on event nights.
PIR · weather · POS · BLE · lux — any of these can override the scheduled slot. A rain alert across Sandton can flip 200 screens to weather copy in under 4 seconds via MQTT.
Provincial signage bylaws differ — Gauteng / Western Cape / KZN each have separate dwell, flash-rate and brightness rules. Schedule profiles are signed at install and enforced per-screen.
Click any node to inspect it. Connection lines show live data flow — the actual protocols that carry between layers in production.
Every label is replaceable. OSS open-source · STD industry-standard · BS BrightSpot-specified.
| Layer | Protocol | Port | Direction | Purpose |
|---|---|---|---|---|
| Cloud → Edge | HTTPS / REST | 443 | Edge → Cloud | Pull schedules, content, OTA |
| Cloud ↔ Edge | MQTT 5.0 over TLS | 8883 | Bi-directional | Triggers, sensor events, commands |
| Cloud ↔ Edge | WireGuard | 51820/UDP | Bi-directional | Operator remote management |
| Edge → Cloud | InfluxDB line protocol | 443 (HTTPS) | Edge → Cloud | Telemetry push |
| Edge → Screen | HDMI 2.1 / DisplayPort 1.4 | — | One-way | Pixel data |
| Edge → Screen | RS-485 / Ethernet | — | Bi-directional | Brightness, scaler, fault |
| Screen ↔ Cabinets | CAT6A / OM3 fiber | — | Daisy chain | Scan-line / video |
Edge plays from local cache; the WAN link only carries scheduling, telemetry and triggers. Typical site: ≤ 5 Mbps sustained, with content sync windowed off-peak.
WAN drop → edge keeps playing scheduled loop from cache. Controller fault → backup signal path engaged. Cabinet PSU fault → hot-spare or cabinet swap (front-service). MQTT broker down → triggers gracefully degrade to schedule-only.
Mutual-TLS on MQTT and HTTPS. Per-screen credentials, no shared secrets. WireGuard tunnel for operator access — no inbound ports open on edge. OS image signed; OTA updates require operator approval. Telemetry stripped of PII. ICASA-compliant for spectrum on any wireless link used.