Skip to content

Alarms

The Alarm system in Meridian VMS provides configurable, rule-based alerting with standard operating procedures (SOPs), multi-channel notifications with per-escalation-level routing, and a full lifecycle from creation to resolution. Alarms bridge the gap between raw detection events and actionable operator responses.

An alarm definition is a reusable rule that specifies what triggers an alarm, when it is active, how it should be handled, and who gets notified at each escalation level. Each definition is configured through Settings > Alarms.

Trigger TypeDescription
DetectionFires when the AI detection engine identifies a specified object class in a configured zone
MotionFires when motion activity is detected on a camera
Camera OfflineFires when a camera stops streaming or fails its health check
Server OfflineFires when a recording server misses its heartbeat threshold
Lens ClarityFires when camera image quality degrades (blur, obstruction, defocus)
LPR BlacklistFires when a blacklisted license plate is detected
External / APIFires via an external webhook, allowing third-party systems to raise alarms

For detection and motion triggers, configure:

Camera Selection : Select one or more cameras. The alarm only triggers for events on selected cameras.

Zone Filters : Restrict to specific detection zones. Events outside selected zones are ignored.

Class Filters : For detection triggers, specify which object classes trigger the alarm (e.g., only “person”, or “person” and “vehicle”).

Each alarm definition has a time profile:

Always Active : Evaluates triggers 24/7.

Scheduled : Active only during configured windows with day-of-week and time range. Outside the schedule, triggers are ignored.

Priority Levels:

PriorityUse Case
CriticalImmediate response — perimeter breach, server failure
HighPrompt attention — suspicious activity, camera offline
MediumStandard operational — routine detection events
LowInformational — non-urgent notifications

Categories provide organizational grouping (e.g., “Perimeter”, “Access Control”, “Infrastructure”) for filtering in the alarm dashboard.

SettingPurpose
Run IntervalMinimum time between alarm creation for the same definition. Prevents alarm flooding from high-frequency events.
CooldownMinimum time between notifications. Alarms are still created during cooldown but do not trigger additional notifications.

Each alarm definition can include a detailed SOP that guides operators through the response procedure.

Instructions : Free-text steps describing the response procedure: verification, escalation contacts, physical response, documentation requirements.

Checklists : Structured action items that the operator must complete. Each item is individually checkable, creating an audit trail of completed steps.

Checklist: Perimeter Breach Response
[ ] Verify alarm on live camera feed
[ ] Check adjacent cameras for corroborating activity
[ ] Contact on-site security: +27 82 555 1234
[ ] If confirmed: dispatch response team
[ ] If false alarm: close with "False Alarm" resolution
[ ] Complete incident report in shift log

Checklist completion is tracked per alarm instance. Supervisors can review which steps were completed and when.

Notifications are sent through configured channels when alarms trigger:

ChannelDescription
TelegramMessage to a Telegram bot/group with alarm details and camera snapshot
DiscordMessage to a Discord webhook with alarm details and snapshot
EmailEmail to configured recipients with full alarm context
SMSText message to phone numbers (via configured SMS gateway)
PushMobile push notification (via Meridian mobile app)
WebhookHTTP POST to a custom URL with JSON payload

Each alarm definition supports multiple escalation levels. If an alarm is not acknowledged within the configured time, it escalates to the next level with different notification routing.

LevelTime ThresholdNotification Channels
Level 1Immediate (on trigger)Telegram to control room operators
Level 25 minutes unacknowledgedSMS to shift supervisor + email to security manager
Level 315 minutes unacknowledgedEmail to site management + phone call via webhook

Each level has its own set of notification channels and recipients. This ensures the right people are notified based on response urgency.

Different escalation levels can use entirely different notification channels:

Level 1: Telegram (control room group)
Level 2: SMS (supervisor phone) + Email ([email protected])
Level 3: Email ([email protected]) + Webhook (paging system API)

This allows a graduated response where initial alerts go to frontline operators, and progressively more urgent channels are used if the alarm remains unhandled.

Every alarm instance follows a defined lifecycle:

New --> Acknowledged --> Investigating --> Closed
| |
| +--> On Hold --> Investigating
|
+--> Closed (false alarm)
StateDescription
NewJust triggered. No operator has responded. Escalation timer is running.
AcknowledgedAn operator has taken ownership. Escalation timer stops.
InvestigatingActive investigation in progress, following the SOP.
On HoldPaused (awaiting physical response, external information). Resumes to Investigating.
ClosedResolved. Operator records a resolution note and category.

Each transition is logged with operator name, timestamp, and optional notes — providing a complete audit trail.

When closing an alarm, the operator selects a resolution:

ResolutionDescription
ConfirmedReal incident, response was appropriate
False AlarmNo actual incident (environmental trigger, animal, etc.)
TestIntentional test of the alarm system
DuplicateSame incident already handled by another alarm

The alarm dashboard at Operations > Alarms provides a real-time view of all active alarms.

FeatureDescription
Real-time updatesNew alarms appear instantly via WebSocket push
Priority sortingCritical alarms pinned to top, sorted by age within priority
Category filtersFilter by alarm category, priority, state, or camera
Quick actionsAcknowledge, view SOP, open camera feed — all from the dashboard
Sound alertsConfigurable audio alerts for new Critical and High priority alarms
Map viewAlarms plotted on site maps by camera location
StatisticsResponse time averages, alarm counts by type, false alarm rates

Only one open alarm can exist per definition/camera pair. Repeat triggers update the existing alarm’s event count rather than creating duplicates.

When the management server starts or a recording server reconnects, alarm evaluation is paused for 5 minutes. This prevents false “offline” alarms during planned restarts. Events are still recorded during the grace period.

Third-party systems can create, query, and manage alarms via the REST API.

Terminal window
curl -X POST https://vms.example.com/api/alarms/external \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"title": "Access Control Breach",
"description": "Door forced open at Building A entrance",
"priority": "critical",
"camera_id": "550e8400-e29b-41d4-a716-446655440000",
"metadata": {"door_id": "A-101", "source": "access_control"}
}'
MethodEndpointDescription
GET/api/alarmsList alarms with filters (state, priority, camera, date range)
GET/api/alarms/{id}Get alarm details with full audit trail
POST/api/alarms/externalCreate an alarm from an external system
PATCH/api/alarms/{id}/acknowledgeAcknowledge an alarm
PATCH/api/alarms/{id}/stateTransition alarm state
PATCH/api/alarms/{id}/checklist/{item}Check/uncheck an SOP checklist item
POST/api/alarms/{id}/notesAdd a note to an alarm
GET/api/alarms/statsAlarm statistics and response metrics
GET/api/alarms/definitionsList alarm definitions
POST/api/alarms/definitionsCreate an alarm definition
PATCH/api/alarms/definitions/{id}Update an alarm definition
DELETE/api/alarms/definitions/{id}Delete an alarm definition
  • Operators see alarms only for cameras within their permitted locations.
  • Alarm definition management requires administrative permissions.
  • SOP checklists and state transitions are attributed to the logged-in user for audit.
  • Escalation notifications respect role hierarchy — Level 3 notifications target users with supervisory roles.