| Time | Topic | Source | Payload |
|---|---|---|---|
| No events yet | |||
| {formatTime(ev.received_at)} | {ev.topic} | {ev.source_type} | |
| Name | Type | Streams | Status |
|---|---|---|---|
| No cameras configured | |||
| {cam.name} | {cam.type.toUpperCase()} | {String(props.streamCounts.get(cam.id) ?? 0)} | {cam.enabled ? Enabled : Disabled } |
| Name | Hardware | Last Seen | Status |
|---|---|---|---|
| No kiosks paired | |||
| {k.name} | {k.hardware_model ?? "—"} | {k.last_seen_at ? formatTime(k.last_seen_at) : "Never"} | {k.enabled ? Active : Disabled } |
{pc.code}
{formatTime(pc.expires_at)}
Enabled {" "}TOTP is active on this account.
Protect your account with a TOTP authenticator app.
Scan this with your authenticator app (Google Authenticator, Authy, etc.).
{props.secret}
Save these codes somewhere safe. They will not be shown again.
{props.description}
| Name | Details |
|---|---|
| None configured yet | |
| {item.name} {item.badge && ( {item.badge} )} | {item.detail ?? ""} |
No labels attached
)}| Role | Name | URI |
|---|---|---|
| {s.role} | {s.name} | {s.rtsp_uri} |
No streams configured
)}| Name | Resolution | Index |
|---|---|---|
| {d.name} | {String(d.width_px)}x{String(d.height_px)} | {String(d.index)} |
No displays associated with this kiosk
)}No labels attached
)}| Name | Color | Actions |
|---|---|---|
| No labels | ||
| {l.name} | {l.color ? {l.color} : "—"} | |
A layout defines a grid of regions and binds cameras or other content into them for a display.
| Name | Grid | Display | Priority | Default |
|---|---|---|---|---|
| No layouts created yet | ||||
| {l.name} | {String(l.grid_cols)}x{String(l.grid_rows)} ({String(l.regions.length)} regions) | {disp ? disp.name : `#${String(l.display_id)}`} | {l.priority === "hot" ? hot : l.priority === "cold" ? cold : normal } | {l.is_default ? Yes : ""} |
Pick a preset grid layout. You can also define a custom grid below.
| Region | Position | Size |
|---|---|---|
| No regions defined | ||
| {r.name} | row {String(r.row)}, col {String(r.col)} | {String(r.rowSpan)}x{String(r.colSpan)} |
| Region | Content | Actions |
|---|---|---|
| {r.name} | {cell ? ( {cell.content_type} {" "} {cell.content_type === "camera" && cell.camera_id ? (cameraById.get(cell.camera_id)?.name ?? `#${String(cell.camera_id)}`) : cell.content_type === "web" && cell.web_url ? {cell.web_url} : cell.content_type === "html" ? (custom HTML) : "" } ) : ( Empty )} | {cell && ( )} |
| Name | Priority | Default |
|---|---|---|
| {l.name} | {l.priority} | {l.is_default ? Yes : ""} |
Physical HDMI displays. Created automatically when kiosks are paired.
| Name | Details |
|---|---|
| None configured yet | |
| {d.name} | {String(d.width_px)}x{String(d.height_px)} — index {String(d.index)} |