Integration with Milestone XProtect via Web Endpoint API.
2. Technical Architecture
The Milestone plugin integrates with Milestone XProtect Video Management Software (VMS) via the Management Server REST API and Milestone Integration Platform (MIP) Web APIs. It handles user authentication, camera/alarm topology discovery, WebSocket event subscriptions for real-time video analytics alarms, and command execution for triggering user-defined VMS events.
System Interaction & Exposed Catalog Routes
The Milestone XProtect plugin interfaces with Milestone Corporate/Express VMS instances via Server Command SOAP/REST APIs and OAuth2 authentication. It receives central alarm triggers and analytics events, and executes video bookmarking and PTZ preset commands.
Catalog Routes & Node Integration
Input Event Triggers (Input Nodes):
milestone.alarm_raised - Fired when an XProtect alarm is raised.
milestone.analytics_event - Fired on camera analytics event.
milestone.device_status_changed - Camera connection status update.
Executable Actions (Action Nodes):
milestone.acknowledge_alarm - Acknowledges an active Milestone alarm.
milestone.create_bookmark - Creates a video bookmark with timeline metadata.
milestone.trigger_user_command - Triggers a Milestone user action.
milestone.goto_ptz_preset - Moves PTZ camera to preset.
Architecture Diagram
VISUAL ARCHITECTURE FLOW DIAGRAM
Rendering Flow Architecture Diagram...
3. Configuration Parameters
The following configuration fields are available in the User Interface for this plugin:
Configuration Setting
Description
Management Server Address
Specifies the management server address.
Username
Specifies the username.
Password
Specifies the password (secure).
Connect Timeout (ms)
Numeric value specifying the connect timeout (ms).
Reconnect Delay (ms)
Specifies the reconnect delay (ms).
Use SSL
Specifies the use ssl.
Ignore SSL Errors
Specifies the ignore ssl errors.
Poll Cameras
Specifies the poll cameras.
Poll Alarms
Specifies the poll alarms.
Poll System Config (Event Types & Priorities)
Specifies the poll system config (event types & priorities).
Use WebSockets for Real-time Events
Specifies the use websockets for real-time events.
Clicking the Helper button (🔍) on the Milestone source row in the Sources table opens the Milestone Catalog & Event Explorer Window:
Purpose: Allows system integrators to visually inspect Milestone XProtect VMS hardware topology, camera GUIDs, user-defined events, and alarm definitions.
Data Presented:
Camera & Hardware Devices: Name, GUID, connection state (Active/Offline), recording status, and stream specs for all connected IP cameras.
Alarm Definitions & Categories: Registered alarm names, GUIDs, priorities (Low, Medium, High, Critical), states (New, In Progress, Closed), and category mappings.
System & User-Defined Events: User event trigger names, GUIDs (EventGuid), event sources, and analytics classification types.
Audio & Digital I/O Channels: Microphones, speakers, and digital hardware input/output channel GUIDs.
Usage: Enables integrators to verify API authentication and copy exact GUIDs into Rule Editor node parameters (Source, EventGuid, Priority).
4. Exposed Routes & Data Types
This plugin exposes catalog fields across the following rule graph nodes:
Input Source
The Input Source node reads camera state, stream status, and VMS server telemetry.
Human-Readable Field Name
Data Type
Description
Camera StateBool
↳
Camera online/streaming connection status (True = Active).
Recording StateBool
↳
Camera active video recording status.
Event Input
The Event Input node listens for real-time WebSocket events pushed by Milestone Management Server.
Human-Readable Field Name
Data Type
Exposed Event Fields & Data Types
Description
Milestone EventEvent Object
↳
EventId (String)
SourceId (String)
EventName (String)
Timestamp (DateTime)
Real-time system or analytic event triggered on Milestone Management Server.
Data Source
The Data Source node queries structured collections of VMS cameras, hardware devices, and system definitions.
Human-Readable Collection Name
Data Type
Exposed Fields & Data Types
Description
CamerasJson` (`collection`)
↳
Id (String)
Name (String)
Enabled (Bool)
List of registered IP cameras in Milestone VMS.
MicrophonesJson` (`collection`)
↳
Id (String)
Name (String)
List of audio input channels.
SpeakersJson` (`collection`)
↳
Id (String)
Name (String)
List of audio output channels.
Inputs / OutputsJson` (`collection`)
↳
Id (String)
Name (String)
List of digital I/O hardware devices.
EventsJson` (`collection`)
↳
Id (String)
Name (String)
List of user-defined and system event definitions.
Output Target
The Output Target node acts as an action sink node to trigger user-defined events or fire alarms in Milestone Alarm Manager.
Target Name
Data Type
Associated Parameters
Parameter Data Type
Required
Description
Milestone Trigger EventString
↳
EventGuid (Type)
String
True
Target event GUID identifier.
↳
EventSourceGuid (Source)
String
False
Associated camera or device GUID.
↳
DataType (Datatype)
String
False
Classification (none, analytics, free-form).
↳
Tag (Tag)
String
False
User classification tag string.
Milestone Trigger AlarmString
↳
Name (Name)
String
True
Alarm header name.
↳
Message (Message)
String
True
Alarm detail message string.
↳
Source (Source)
String
True
Source camera GUID identifier.
↳
Priority (Priority)
String
False
Milestone alarm priority GUID.
↳
Category (Category)
String
False
Alarm category GUID.
↳
State (State)
String
False
Initial alarm state GUID.
5. Usage Examples
Scenario A: SIA Intrusion Alarm Event Triggers Milestone XProtect Alarm & Video Bookmark
Workflow Overview:
When SIA Receiver detects a perimeter burglar alarm (BA event code), Uniflow intercepts the SIA signal and executes two actions in Milestone XProtect VMS:
1. Raises a high-priority alarm (Milestone Trigger Alarm with Name: "PERIMETER_BREACH").
2. Creates a video bookmark (Milestone Trigger Event) tagged "SIA Alarm Breach".
When Milestone XProtect emits a camera analytics event (EventName == "ANALYTICS_CONVEYOR_JAM"), Uniflow writes a Modbus TCP coil (Coil 10 = False) to pause the conveyor line and sends an SMTP alert email to supervisors.