Command Center Help for this page →
These figures are not updating.
Last successful update at {{events.liveLastGoodText()}}, {{events.liveStaleMinutes()}} minute(s) ago.
Everything below is what the fleet looked like then, not what it looks like now.
The page keeps trying by itself.
Try now
Reading this event's sectors…
This event's sectors could not be read, so a limit cannot be set. Try again, or reload the page.
{{model.selectedEntrance ? 'No ticket at ' + model.selectedEntrance + ' names a sector, so there is nothing to limit here.' : 'This event has no sectors on its tickets.'}}
{{s}}×
{{model.eventList.length}} event(s) · ended greyed{{model.selectedEventId ? ' · showing #' + model.selectedEventId : ' · showing all'}}
{{model.summary.total != null ? (model.summary.total | number) : '—'}}
Devices
{{model.summary.approved != null ? (model.summary.approved | number) : '—'}}
Approved
{{model.summary.pending != null ? (model.summary.pending | number) : '—'}}
Pending
{{model.summary.inactive != null ? (model.summary.inactive | number) : '—'}}
Inactive
{{model.summary.decommissioned | number}}
Decommissioned
{{model.summary.online != null ? (model.summary.online | number) : '—'}}
Online
{{model.stats.scannedTickets != null ? (model.stats.scannedTickets | number) : '—'}}/{{model.stats.totalTickets != null ? (model.stats.totalTickets | number) : '—'}}
Scanned / valid · {{model.selectedEntrance}}
{{model.stats.totalTickets != null ? (remaining() | number) : '—'}}
Still to come
{{model.stats.cancelledTickets | number}}
Cancelled
{{model.stats.scansPerMinute != null ? model.stats.scansPerMinute : '—'}}
Scans/min today
Scan progress - {{selectedEventTitle()}} (bar is whole event; cards filter to {{model.selectedEntrance}})
{{model.stats.eventScannedTickets || 0 | number}}/{{model.stats.totalTickets | number}} valid ({{progressPct()}}%) · {{remaining() | number}} still to come · {{model.stats.cancelledTickets | number}} cancelled, not counted
—
Scan progressselect an event above to see its progress
{{model.status.text}}
Devices ↔ widen →← narrow Approve all pending ({{model.summary.pending}})
| Device name | Status | Online? | Battery | I | Event | Tickets | Scanned | Rate | Last scan | Actions{{model.refreshing ? 'updating…' : model.countdown + 's'}} |
|||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{d.selfName || d.name || '—'}}✓!{{d.guid || '—'}} | {{d.statusLabel}} | ● {{d.isOnline ? 'online' : 'offline'}} ⚠ |
{{d.battery}}%⚡
—
|
{{d.integrationId}} | {{events.lockIcon(d,'event')}}{{events.assignedValue(d,'event')}}/{{events.lockIcon(d,'entrance')}}{{events.assignedValue(d,'entrance')}}/{{events.lockIcon(d,'sector')}}{{events.assignedValue(d,'sector')}} |
{{ticketPct(d)}}%
{{d.reportedCount != null ? (d.reportedCount | number) : 'not reported'}}
—
|
{{d.scanned != null ? (d.scanned | number) : '—'}} | {{d.scanRate != null ? d.scanRate + '/min' : '—'}} | {{d.lastScan ? (d.lastScan | date:'dd.MM HH:mm') : '—'}} | Approve Push Refresh Scans Identify ⋯ | |||||
|
Reported telemetry
{{reportAge(d.report.lastSeenUtc)}}
Device name (self-reported){{d.report.selfReportedName || '— (use Identify)'}}
GUID{{d.guid}}
Operator{{d.report.operatorUsername || d.operator || '— none logged in'}}
Loaded event / entrance / sector
{{events.lockIcon(d,'event')}} {{events.assignedValue(d,'event')}} / {{events.lockIcon(d,'entrance')}} {{events.assignedValue(d,'entrance')}} / {{events.lockIcon(d,'sector')}} {{events.assignedValue(d,'sector')}}
Tickets on this device (its own copy of the set, as it reports it)
Held
{{d.reportedCount != null ? (d.reportedCount | number) : 'not reported'}}
{{tkNote(d, 'held')}}
Cancelled
{{numOrUnknown(d.deviceCancelled)}}
{{tkNote(d, 'cancelled')}}
Valid
{{numOrUnknown(deviceValid(d))}}
{{tkNote(d, 'valid')}}
Already used
{{numOrUnknown(d.deviceUsed)}}
{{tkNote(d, 'used')}}
Left to scan
{{numOrUnknown(deviceRemaining(d))}}
{{tkNote(d, 'left')}}
Pending sync
{{d.report.pendingSync != null ? (d.report.pendingSync | number) : 'not reported'}}
{{tkNote(d, 'pending')}}
Outbox
{{d.report.unpublishedActivities != null ? (d.report.unpublishedActivities | number) : 'not reported'}}
Awaiting confirmation
{{d.report.unackedActivities != null ? (d.report.unackedActivities | number) : 'not reported'}}
Ticket set
{{d.report.ticketSetFingerprint ? d.report.ticketSetFingerprint.substring(0, 12) : 'not reported'}}
differs from the other scanners on this event
Battery{{d.report.batteryLevel != null ? d.report.batteryLevel + '%' : '—'}}{{d.report.isCharging ? ' ⚡ charging' : ''}}
Battery optimisationnot exempt
Dozeidle
App version{{d.report.appVersion || '—'}}{{d.report.appBuild ? ' (' + d.report.appBuild + ')' : ''}}
Device model{{d.report.deviceModel || '—'}}
OS{{d.report.osVersion || '—'}}
Network{{d.report.networkType || '—'}}
Last scan{{hasStamp(d.report.lastScanAt) ? (d.report.lastScanAt | date:'dd.MM HH:mm:ss') : '—'}}
Last sync{{hasStamp(d.report.lastSyncAt) ? (d.report.lastSyncAt | date:'dd.MM HH:mm:ss') : '—'}}
Reported at{{hasStamp(d.report.reportedAt) ? (d.report.reportedAt | date:'dd.MM HH:mm:ss') : '—'}}
Last seen (server clock){{hasStamp(d.report.lastSeenUtc) ? (d.report.lastSeenUtc | date:'dd.MM HH:mm:ss') : '—'}}
Presence{{d.isOnline ? 'online' : 'offline'}}{{d.unstable ? ' · ⚠ unstable (flapping)' : ''}}
{{d.journalOpen ? '▾' : '▸'}} What happened to this device
its own record, newest first
Reading it…
The journal could not be read. That is this page failing, not the device.
Nothing recorded yet. A handset on a build older than 2026-08-05 does not keep one.
No enriched status frame yet. This device hasn't reported detailed telemetry (battery, model, OS, network, GPS, operator, counts…).
It appears here automatically once the updated app sends its status frame. The event/GUID/integration above are still available.
|
|||||||||||||||
No devices registered yet.
No devices match “{{model.deviceSearch}}” - show all.
Event tools
Operate on the event selected at the top, no device selection needed.
Selected devices ({{selectedCount()}})
Each command applies to every ticked device it's valid for. Tick devices in the list first, offline devices can't be ticked.
A command only reaches a device that is online. {{selectedOfflineCount()}} ticked device(s) are offline right now and will be skipped. They rejoin the selection on their own when they come back. Untick them
Ticket lookup
The whole code from the QR, exactly as it is, for the selected event. From Adriaticket that includes the purchase prefix; from a custom import it is the bare code.
Found
{{model.lookup.result.Id}} ↗
· scanned {{model.lookup.result.ScannedAt | date:'dd.MM HH:mm'}} by {{fn.deviceLabel(model.lookup.result.ScannedBy)}}
· not yet scanned
Not found for this event