Chapter 18 — CCTV Monitor
Module code: CCTV
Features: cctv_dashboard, cctv_config
Home: /cctv/
18.1 What the module is for
CCTV Monitor watches your video recorders and tells you when a camera stops working. It is a health monitor with a live preview, not a video management system: it does not record, and it does not store footage. The recorders do that.
It supports Hikvision and Dahua network video recorders.
The problem it solves is a familiar one: a camera fails quietly, nobody notices, and the gap is discovered weeks later when the footage is actually needed. A dashboard that shows every channel's status makes that gap visible on the day it opens.
18.2 Two ways to connect
Direct
The portal reaches the recorders itself. This works when the portal and the recorders are on the same network.
Edge agent
Where the recorders sit on a private network and the portal is hosted in the cloud, a small edge agent runs on a Windows machine on the same network as the recorders. It polls them locally and sends the results out to the portal.
Private network Cloud
┌──────────────────────┐ ┌─────────────────┐
│ NVR NVR NVR │ │ │
│ ▲ ▲ ▲ │ │ TOSS ERP │
│ └───┼───┘ │ HTTPS │ CCTV monitor │
│ Toss CCTV Edge ────┼─────────────►│ │
└──────────────────────┘ outbound └─────────────────┘
only
No inbound firewall port is opened. The agent makes an outbound connection, which is why this arrangement is acceptable to most security policies.
18.3 Screens
/cctv/ dashboard
/cctv/refresh/ poll every active recorder now
/cctv/nvrs/ recorder list
/cctv/nvrs/new/ add a recorder
/cctv/nvrs/<slug>/edit/ edit, including the channel plan
/cctv/edge-sites/ edge sites
/cctv/edge-sites/new/ add an edge site
/cctv/edge-sites/<slug>/ site detail
/cctv/edge-sites/<slug>/pairing/ the pairing code
/cctv/edge-sites/<slug>/revoke/ revoke a site's access
/cctv/edge-agent/download/ download the agent
/cctv/v/<public-id>/ public wallboard, no sign-in
/cctv/share/rotate/ change the wallboard address
/cctv/share/toggle/ turn the wallboard on or off
18.4 Adding a recorder
Screen: /cctv/nvrs/new/
- Select Add NVR.
- Enter: - Name — the site or building, as staff would say it. - Make — Hikvision or Dahua. - Host — the address. For a recorder behind an edge agent, use its local network address, because the agent reaches it from inside the network. - Port, username, password. - Edge site — leave blank for a directly-reachable recorder; choose a site for one behind an agent.
- Save.
- Open the recorder and fill in the channel plan: which channels should exist and what each camera is called. The plan is what turns "channel 7 is down" into "the loading bay camera is down".
18.5 Setting up an edge site
- Create the site.
/cctv/edge-sites/new/— name it after the physical location. - Get the pairing code.
/cctv/edge-sites/<slug>/pairing/. - Assign recorders to the site by editing each one and choosing the site.
- Install the agent on a Windows machine on the same network as the recorders.
Download it from
/cctv/edge-agent/download/. - Pair the agent using the pairing code. It exchanges the code for a permanent token, so the code is only needed once.
- Leave the agent running. Live preview and polling both depend on it.
If a machine is lost or replaced, revoke the site at
/cctv/edge-sites/<slug>/revoke/ and pair again. Revoking makes the old token useless
immediately.
18.6 The dashboard
Screen: /cctv/
Shows headline figures and then a grid of sites, each with its channels and their status. A channel that is not responding stands out.
Refresh (/cctv/refresh/) polls every active recorder immediately, rather than
waiting for the next scheduled poll.
18.7 Live preview and snapshots
Open a channel from the dashboard to see it live. Two modes are available:
| Mode | How it works |
|---|---|
| Snapshot stream | Repeated still images. Works in every arrangement, including through an edge agent. |
| MJPEG | A continuous stream proxied from the recorder |
A capture downloads a single still image as a file, for attaching to an incident report.
Live preview through an edge agent
The portal cannot reach the camera itself, so it queues a snapshot request. The agent picks the request up on its next heartbeat, grabs the image from the recorder, and sends it back.
Expect the first frame to take a few seconds — typically three to fifteen. This is the round trip, not a fault. Later frames arrive at roughly one per second. The agent must be running; if it is not, no image will ever arrive.
18.8 The public wallboard
Screen: /cctv/v/<public-id>/
A read-only status page that needs no sign-in, meant for a screen on the wall of a security office or a control room.
| Action | Screen | Effect |
|---|---|---|
| Turn it on or off | /cctv/share/toggle/ |
Controls whether the address works at all |
| Change the address | /cctv/share/rotate/ |
Issues a new unguessable address; the old one stops working |
Anyone with the address can see the status page. Treat it as public. Rotate the address whenever someone who had it leaves, and turn it off when it is not in use.
The wallboard shows status only — it does not show video.
18.9 Permissions
| Feature | Allows |
|---|---|
cctv_dashboard (view) |
The dashboard, channel status, live preview |
cctv_config (view/create/edit) |
Adding and editing recorders, edge sites, and the wallboard controls |
Rotating or toggling the wallboard address requires configuration rights, because it changes who can see the status page.
18.10 Routine
Daily
[ ] Open the dashboard; investigate any channel not responding
[ ] Confirm every edge agent has reported recently
Weekly
[ ] Check the channel plan still matches the cameras actually installed
[ ] Spot-check a live preview from each site
On any staff change
[ ] Rotate the wallboard address if the leaver had it
[ ] Revoke any edge site whose machine is no longer trusted
18.11 Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| A recorder shows as unreachable | Wrong address or port, credentials changed, or the recorder is off | Check the settings; confirm you can reach it from the same network |
| Every recorder at one site is unreachable | The edge agent has stopped | Restart the agent on that machine |
| Live preview never loads through an edge site | The agent is not running, or is an old version | Start it; upgrade and restart |
| The first frame is slow | Normal for an edge site — it is a round trip | Wait; three to fifteen seconds is expected |
| A channel is missing from the dashboard | It is not in the channel plan | Add it on the recorder's edit page |
| The wallboard address does not work | Sharing is turned off, or the address was rotated | Toggle sharing on; use the current address |
| The wallboard was seen by someone it should not have been | The address is public to anyone holding it | Rotate it |
| An old edge machine still reports | Its token is still valid | Revoke the site and pair the new machine |