Skip to content

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:

SettingWhat it does
ScopeThe whole organisation, or particular venues, floors or zones. Every widget inherits it, and any widget can override it with a scope of its own.
RefreshHow 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 afterSeconds before the screen moves on to the next active board. Zero means this board stays up.
Active hoursWhen 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.
ThemeDark, glassmorphism or aurora, plus an accent colour and a logo.
MessageThe 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

WidgetShowsCan be told
ClockTime and date, in your organisation's time zone
People right nowThe 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 sensorA scope of its own
Top zonesThe busiest zones right now on the same fused count, each marked with where its number came from and shown against capacity when setA scope of its own
Gateway healthOnline / degraded / offline, and the percentage upA scope of its own
Battery lowActive devices under a battery thresholdThe threshold (20 % by default), specific devices
Visitors todayToday's device-visits from the daily dwell report, with the past six days as a sparklineA scope of its own
Alerts tickerOpen low-battery alerts and zones over capacity, scrolling
Toilet hygieneWashrooms clean / due / overdue, from that app
VisitorsOn site now, expected today, awaiting approval, arrived today — from the Visitor app
Entity live positionWhere named people or assets are nowWhich entities or devices
Entity dwell todayWho has spent longest where todayWhich entities, how many to list (10 by default)
3-D floor planThe building as a dollhouse, walls cut away, live tags and sensors on it
Custom messageWhatever 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.

Last updated:

Omaya platform documentation