Appearance
TV Dashboard
The screen in the lobby, the operations room, or above the cleaners' station.
Who it is for
Nobody in particular — which is the design constraint. A wall display is read at a glance, from across a room, by people who did not choose to look at it.
Before it is useful
A screen with a browser. That is all. A board is served at its own URL with a token in it, so the screen needs no login and no account.
Whatever the widgets you pick depend on — a floor-plan widget needs a floor plan, the people counter needs something counting people, the washroom widget needs the Toilet Hygiene app.
Boards
Build a board from the app's page: pick widgets, arrange them on a twelve-column grid, save. New boards start with a sensible full-screen layout tuned for 1920 × 1080, which is usually easier to cut down than to build up.
A board carries a few settings of its own:
| Setting | What it does |
|---|---|
| Scope | The whole organisation, or particular venues, floors or zones. Every widget inherits it, and any widget can override it with a scope of its own. |
| Refresh | How often widgets re-poll, 1 second to an hour. 30 seconds by default; each widget also has a sensible default of its own — the clock every second, battery every five minutes. |
| Rotate after | Seconds before the screen moves on to the next active board. Zero means this board stays up. |
| Active hours | When the board shows anything. Outside them the screen dims to a clock and "Back at 07:00", stops polling, and wakes itself when the hour comes round. A lobby screen does not need to run at 3 a.m. |
| Theme | Dark, glassmorphism or aurora, plus an accent colour and a logo. |
| Message | The text the custom-message widget shows. |
Rotation is how one screen shows several things without anyone touching it: give each board a rotate-after time and the display cycles through every active board in order, each staying up for its own interval. Adding ?rotation=30 to a board's URL overrides the setting for that screen.
The widgets
| Widget | Shows | Can be told |
|---|---|---|
| Clock | Time and date, in your organisation's time zone | — |
| People right now | The same occupancy as the Right Now page: everyone in a zone with a radar, counting sensor or counted doors, tags present elsewhere — summed over the scope, with a sparkline. Labelled "tagged people" when no zone in scope has a sensor | A scope of its own |
| Top zones | The busiest zones right now on the same fused count, each marked with where its number came from and shown against capacity when set | A scope of its own |
| Gateway health | Online / degraded / offline, and the percentage up | A scope of its own |
| Battery low | Active devices under a battery threshold | The threshold (20 % by default), specific devices |
| Visitors today | Today's device-visits from the daily dwell report, with the past six days as a sparkline | A scope of its own |
| Alerts ticker | Open low-battery alerts and zones over capacity, scrolling | — |
| Toilet hygiene | Washrooms clean / due / overdue, from that app | — |
| Visitors | On site now, expected today, awaiting approval, arrived today — from the Visitor app | — |
| Entity live position | Where named people or assets are now | Which entities or devices |
| Entity dwell today | Who has spent longest where today | Which entities, how many to list (10 by default) |
| 3-D floor plan | The building as a dollhouse, walls cut away, live tags and sensors on it | — |
| Custom message | Whatever you typed, as a marquee | — |
The 3-D floor plan shares its geometry with the admin 3-D page, so what is on the wall is what is in the app.
People right now and Top zones show the same fused occupancy as the Right Now page, and say where each number came from — so a wall display cannot quietly present a tag count as a headcount. When no zone in the scope has a radar, counting sensor or counted doors, the widget says tagged people, which is the honest label for what it is counting. Which number is which is the page behind that.
Polling
Each widget has its own endpoint returning exactly the shape that widget needs, rather than one generic "give me everything". A wall display polling all day is the one client where over-fetching actually costs something.
A widget that cannot get its data shows as unavailable rather than blanking the board; one whose data is three refreshes old dims and says data delayed. One broken widget does not take the screen down.
Kiosk behaviour
The display assumes it is on a wall. The cursor disappears after five seconds still, and after ten minutes without any input the screen dims to a third of its brightness — a screensaver, not a fault. Any mouse movement or key brings it back. Add ?kiosk=0 to the URL to turn both off, for a board you keep open on a desk.
The token is the credential
/tv/<token> needs no login, because the token is the authentication. That has consequences worth being deliberate about:
- Anyone with the link sees the board. Treat the URL as a secret to the same degree as the content it shows.
- There is no per-person filtering, because there is no person. The board shows what the board shows.
- Tokens can be regenerated, which immediately invalidates the old URL — the thing to do when a screen is decommissioned or a link has gone somewhere it should not.
- Tokens can be given an expiry, so a board built for a two-week exhibition stops working on its own. By default they never expire.
Regenerate and set the expiry from the app's own page, or from Your Apps → TV Dashboard on the admin side — either is also the quickest place to grab a share URL to send to whoever is setting the screen up.
When it disappoints
A widget is blank. Its underlying data is missing rather than the widget being broken — a people counter over zones where nothing is counted shows zero, correctly.
The screen has gone dim. Either it is outside the board's active hours — the clock and "Back at" time say so — or nobody has touched it for ten minutes and the screensaver is on; move the mouse, or open the board with ?kiosk=0.
The board does not rotate. Its rotate-after is zero, or it is the only active board.
The screen goes stale overnight. Check the display device's own power saving first; the widgets keep polling as long as the page is open.
The link says expired or disabled. The token has passed its expiry, or the board has been deactivated. Regenerate it.