Milestone

Milestone

ID: uniflow.plugin.milestone Category: Security & Video Version: v1.3.0 Min Uniflow Version: Uniflow ≥ v1.4.0

Milestone Plugin Reference Manual

1. Overview

Plugin Name: Milestone

Type: Security & Video

Identifier: uniflow.plugin.milestone

Description

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 SettingDescription
    Management Server AddressSpecifies the management server address.
    UsernameSpecifies the username.
    PasswordSpecifies the password (secure).
    Connect Timeout (ms)Numeric value specifying the connect timeout (ms).
    Reconnect Delay (ms)Specifies the reconnect delay (ms).
    Use SSLSpecifies the use ssl.
    Ignore SSL ErrorsSpecifies the ignore ssl errors.
    Poll CamerasSpecifies the poll cameras.
    Poll AlarmsSpecifies the poll alarms.
    Poll System Config (Event Types & Priorities)Specifies the poll system config (event types & priorities).
    Use WebSockets for Real-time EventsSpecifies the use websockets for real-time events.

    3.1 Source Editor Helper Window (Milestone Catalog & Event Explorer)

    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 NameData TypeDescription
    Camera State  Bool
    Camera online/streaming connection status (True = Active).
    Recording State  Bool
    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 NameData TypeExposed Event Fields & Data TypesDescription
    Milestone Event  Event 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 NameData TypeExposed Fields & Data TypesDescription
    Cameras  Json` (`collection`)
    Id (String)
    Name (String)
    Enabled (Bool)
    List of registered IP cameras in Milestone VMS.
    Microphones  Json` (`collection`)
    Id (String)
    Name (String)
    List of audio input channels.
    Speakers  Json` (`collection`)
    Id (String)
    Name (String)
    List of audio output channels.
    Inputs / Outputs  Json` (`collection`)
    Id (String)
    Name (String)
    List of digital I/O hardware devices.
    Events  Json` (`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 NameData TypeAssociated ParametersParameter Data TypeRequiredDescription
    Milestone Trigger Event  String
    EventGuid (Type)StringTrueTarget event GUID identifier.
    EventSourceGuid (Source)StringFalseAssociated camera or device GUID.
    DataType (Datatype)StringFalseClassification (none, analytics, free-form).
    Tag (Tag)StringFalseUser classification tag string.
    Milestone Trigger Alarm  String
    Name (Name)StringTrueAlarm header name.
    Message (Message)StringTrueAlarm detail message string.
    Source (Source)StringTrueSource camera GUID identifier.
    Priority (Priority)StringFalseMilestone alarm priority GUID.
    Category (Category)StringFalseAlarm category GUID.
    State (State)StringFalseInitial 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".

    Rule Node Configuration:

    1. Event Input Node: SIA Receiver Listener

  • Event Code: BA
  • Exposed Fields: AccountNumber (String), EventCode (String)
  • 2. Logic Pass-Through Node: Metadata Formatter

  • Tag Payload: "SIA Alarm Breach Account ${AccountNumber}"
  • 3. Output Target Node A: Milestone Action Target

  • Action Target: Milestone Trigger Alarm
  • Name: PERIMETER_BREACH
  • Message: Perimeter intrusion detected on account ${AccountNumber}
  • Source: CAM_PERIMETER_01_GUID
  • 4. Output Target Node B: Milestone Action Target

  • Action Target: Milestone Trigger Event
  • EventGuid: USER_EVENT_BOOKMARK_GUID
  • EventSourceGuid: CAM_PERIMETER_01_GUID
  • Tag: SIA Alarm Breach
  • Logic Flow Diagram:

    VISUAL ARCHITECTURE FLOW DIAGRAM
    Rendering Flow Architecture Diagram...

    Scenario B: Milestone Analytics Motion Event Triggers Modbus Conveyor Stop & Email Alert

    Workflow Overview:

    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.

    Rule Node Configuration:

    1. Event Input Node: Milestone Event Listener

  • Filter Event: Milestone Event (milestone.analytics_event)
  • Exposed Fields: EventName (String), SourceId (String), Timestamp (DateTime)
  • 2. Logic Condition Node: Equal

  • Expression: EventName == "ANALYTICS_CONVEYOR_JAM"
  • 3. Output Target Node A: Modbus Client Writer

  • Action Target: Direct Access
  • Type: Coils
  • Address: 10
  • Value: False
  • 4. Output Target Node B: Email Client Sender

  • Action Target: Send Email (email.send_email)
  • To: supervisors@factory.local
  • Subject: CONVEYOR JAM: Milestone Analytics Alert
  • Logic Flow Diagram:

    VISUAL ARCHITECTURE FLOW DIAGRAM
    Rendering Flow Architecture Diagram...
    Architecture Flow Diagram — Full Preview