Fleet views — one overview for every station, one dashboard for each
When you run many stations that all carry the same tags — 178 water-quality stations, each with Dissolved Oxygen, pH, Nitrate and Water level — three things make them manageable from one screen:
- Fleet KPI — one number across every station that carries a tag type: the average Nitrate, the lowest Dissolved Oxygen and which station has it, how many stations are in range.
- Station List — every station in a table, one column per tag, coloured by alarm level, the ones that need a person at the top. Click a row to open that station.
- Dashboard variables — a station variable and a station picker in the toolbar, so one detail dashboard shows whichever station you pick instead of one dashboard per station.
Rollout. Fleet views are being rolled out account by account. The two fleet widgets and the figures behind them also need a plan that includes premium widgets — the same entitlement as the analog / SCADA widgets. On a plan without it, Add Widget shows them with a 🔒 Pro badge (clicking one takes you to pricing), and a fleet tile already on a dashboard says Fleet views need a paid plan. Station variables and the station picker need only the rollout, not a paid plan. If you don't see Variables under Dashboard Settings or the fleet widgets in Add Widget, contact support.
What counts as a station
Any device. The fleet widgets group devices by tag subtype — the tag type from the catalog (Nitrate, Dissolved Oxygen, pH…; see device parameters). "Every station's Nitrate" means every device that carries a Nitrate tag, whichever gateway it is behind and however it connects. A device without that tag is simply not in that count. Both widgets take an optional Gateway filter to look at only the stations behind one gateway.
Where the numbers come from
Each station contributes its latest reading within the last hour — the same live value your dashboards stream — in engineering units, after the tag's scale factor and offset. Nothing is read from stored history, so fleet views work on plans that don't store telemetry.
| A station that… | Counts as | In the average / min / max? | In "in range"? |
|---|---|---|---|
| is online and sent the tag in the last hour, and the tag has an alarm or Watch limit | Normal, Watch or Alert | Yes | Yes |
| is online and sent the tag in the last hour, but the tag has no limits | Reporting, ungraded | Yes | No — there is nothing to grade |
| is online but hasn't sent that tag in the last hour | No data | No | No |
| is offline | Offline | No | No |
Two things follow from this:
- An offline station is never averaged. A reading from 59 minutes ago is not "now"; the station is counted as offline and left out of every value.
- In range is stations whose tag is Normal / stations whose tag has a limit. Give a tag no limit and the tile still shows the average, minimum or maximum, but no in-range count.
The Normal / Watch / Alert level of each reading is the one described in Normal, Watch and Alert. With cloud alarms on, it is exactly the level on the Active alarms page, hysteresis included — the KPI, the station list and the alarms page can't disagree. Without cloud alarms, the latest reading is compared directly against the tag's limits, with no hysteresis, the way the gateway firmware compares.
Both widgets re-fetch on their Refresh (seconds) interval, and within a couple of seconds of any station changing level.
Fleet KPI — one number across every station
Add Widget → KPIs & Counters → Fleet KPI.
| Option | What it does |
|---|---|
| Tag subtype | The tag type to measure. The list shows every tag type found on your devices with its unit and how many devices carry it — Nitrate (mg/L) · 176 devices. |
| Statistic | Average, Minimum, Maximum, In range, Stations in Alert, Stations on Watch or Stations offline. |
| Gateway | Leave empty for the whole fleet, or pick one gateway to count only the stations behind it. |
| Decimals | 0 – 6. |
| Refresh (seconds) | 10 – 3600; default 30. |
| Caption | Shown in the tile; defaults to the tag's label. |
The tile shows the statistic as its big number — 6.4 mg/L avg — with a line of counts underneath: 174 / 176 in range · 1 watch · 1 alert · 2 offline · 3 no data. Parts that are zero are left out, and in range appears only when the tag has limits. Per statistic:
- Minimum / Maximum name the station that holds the extreme, under the number.
- In range shows the fraction itself, 174 / 176. A tag with no limits shows — and no limits set.
- Stations in Alert / on Watch / offline show the count.
The tile turns amber when any station is on Watch and red when any is in Alert. A count tile (Alert, Watch, offline) is coloured only when its own count is non-zero. If stations disagree about the tag's unit — some in mg/L, some in ppm — a mixed units chip warns that the average is mixing them; fix the unit on the odd stations. A tile with no tag chosen says Pick a tag subtype in settings; one whose tag no device carries says No station carries this tag.
Station List — every station in a table
Add Widget → Comparisons → Station List.
| Option | What it does |
|---|---|
| Columns (tag subtypes) | Tick one or more tag types — one column each, in that order. The header shows the tag's label and unit. |
| Gateway | Leave empty for the whole fleet. |
| Show only | All stations, In Alert, On Watch or Offline. |
| Sort by | Needs attention first — Alert, then Watch, then offline, then the rest, each group by name — or Station name. |
| Rows per page | 25 – 500; default 200. Longer fleets page in the footer. |
| Decimals | 0 – 6. |
| Refresh (seconds) | 10 – 3600; default 30. |
| Row click opens | A dashboard that has a station variable. Leave empty and a row opens the station's device page. |
| Station variable on that dashboard | The variable's name on that dashboard, e.g. station. |
| Caption | The heading of the station column; defaults to Station. |
Each row is one station: a status dot, its name and gateway, one cell per column, then Last seen (just now, 12 min ago, 3 h ago, 2 d ago, or never). A cell is coloured by that tag's level, and hovering it shows the tag's limit in words — Alarms below 4 mg/L · Watch below 5 mg/L. A cell shows — when the station hasn't sent that tag in the last hour. An offline station's row is greyed with its last-seen time, so a silent site reads as silent, not as healthy. The table header takes the colour of the worst row on the page.
Clicking a row opens the station: in the drill-down dashboard with that station selected (the address ends in ?var-station=<device id>) when Row click opens is set, otherwise on the device page.
Dashboard variables — one dashboard for every station
A dashboard's widgets normally point at fixed devices, so a per-station detail view means one dashboard per station — Duplicate and re-point, 178 times. A station variable replaces the fixed device: widgets bind to ${station}, and a station picker in the toolbar switches the whole dashboard to whichever station you choose.
Add a station variable
- Open the dashboard in edit mode and open Dashboard Settings. Under Variables, click Add station variable.
- Name — an identifier, e.g.
station. This is what widgets bind to, as${station}. - Label — what the toolbar shows next to the picker, e.g. Station.
- Only devices with tag (optional) — offer only devices carrying this tag type.
- Only devices on gateway (optional) — offer only devices behind this gateway.
- Default device (optional) — the station shown when nobody has picked one. Left empty, the first device matching the filter is used.
The dashboard saves as usual.
Bind widgets to it
On a widget's Data tab, the device dropdown gains a Station variables group: choose ${station} — Station (station variable) instead of a fixed device, then pick the tag as usual. The tag list you are offered comes from the variable's default device (or the first matching one), and the widget looks for a tag of the same name on whichever station is picked — so give every station the same tag names. A tag type from the catalog does that for you.
A computed widget can use the variable too: each of its variables' device fields offers the same Station variables group.
Pick a station
The dashboard toolbar shows one searchable picker per variable — the label and a Select a station dropdown, each device with its online dot. Choosing one re-points every widget bound to the variable at once.
- The pick lives in the page address, as
?var-station=<device id>. Bookmark or share that link and it opens on that station. Choosing a station never edits or saves the dashboard. - With no pick, the default device is shown; with no default, the first device matching the filter.
- A widget whose variable has no value — the filter matches no device, say — shows Select a station with a hint to pick one in the toolbar, rather than a blank chart.
Build a fleet overview for 178 water-quality stations
Every station carries Dissolved Oxygen, pH, Nitrate and Water level, each with the limits from the lake example.
1. The detail dashboard. Create a dashboard Station detail. Under Dashboard Settings → Variables, add a variable named station, labelled Station, with Only devices with tag set to Dissolved Oxygen so the picker offers exactly the stations. Add a line chart and a readout per parameter, each bound to ${station} on the Data tab; give the Dissolved Oxygen level meter Show the tag's alarm limits (see threshold markers). Open the picker and step through a few stations to check every widget follows.
2. The overview dashboard. Create Lake overview. Add Fleet KPI tiles across the top:
| Tile | Tag subtype | Statistic | Why |
|---|---|---|---|
| Lowest oxygen | Dissolved Oxygen | Minimum | The number that matters, and the station that has it. |
| pH in range | pH | In range | 171 / 176 is the health of the network in one glance. |
| Average nitrate | Nitrate | Average | The trend figure for the report. |
| Highest water level | Water level | Maximum | Names the station closest to flooding. |
| Stations offline | Dissolved Oxygen | Stations offline | Every station carries this tag, so its offline count is the fleet's. |
3. The station list. Below the tiles, add a Station List with Columns Dissolved Oxygen, pH, Nitrate, Water level; Sort by Needs attention first; Row click opens Station detail; Station variable on that dashboard station.
4. Use it. A tile goes red; the station in Alert is the first row of the list; click it and Station detail opens on that station with its charts, limits drawn in. Copy the address from the bar and paste it to whoever is going out to the site.
5. Per basin. For a screen per lake or per basin, duplicate the overview and set the Gateway filter on every tile and the list to that basin's gateway.
Limitations
- The mobile app doesn't support dashboard variables yet: a widget bound to
${station}shows no data there, and the fleet widgets aren't in the app yet either. Use the web app for fleet views. - Fleet views show now, not history — a station's latest reading within the last hour. For how a parameter moved over the day, use a chart on the detail dashboard.
For AI agents
A connected AI agent gets the same figures with get_fleet_summary, and can build a dashboard with a station variable by setting a widget's deviceId to "${station}".