Configure Axis Loitering Guard to send events to Milestone XProtect

We wanted to use Axis Loitering Guard ACAP analytic last week but found there is little to no documentation on how to get it to work with Milestone XProtect VMS.  So here is how we connected the alerts from Axis Loitering Guard video analytics to alert in Milestone. Edit 04/08/2020: After a great discussion on LinkedIn there is another method supported on some Axis cameras called Dynamic Device Event Handling.  This method has been added below. Install Axis Loitering Guard If you are not familiar with Axis’s camera platform they allow you to install applications on top of the camera much like your iPhone.  These applications are called AXIS Camera Application Platform applications or ACAP for short and installation is quite straightforward. Download the ACAP application. In our case Axis Loitering Guard. Log into the camera, open settings, click on the Apps tab Click the large + (Add) and upload the ACAP in the pop up as seen below Enable the ACAP application Once installed click on the AXIS Loitering Guard puzzle piece in the settings section Flip the switch to turn on Axis Loitering Guard Configure the ACAP Each ACAP will be different but for AXIS Loitering Guard you configure basic settings that will allow you to identify zones of interest, the dwell time of an object and perspective of the field of view. Axis has a video on configuring Loitering Guard so I will not go into that here but below is an image that shows the calibration of the perspective, Axis calls this depth.  Also note that you can have different loitering profiles, I changed the profile name in this case to FrontLoiter you can choose a name that makes sense for your deployment but we will need to know this later when we create events. Method 1: Using Milestone Generic Event integration Once the ACAP is configured we can start working on sending these alerts to Milestone.  To do this we will configure events in the Axis camera which will be received in Milestone as a generic event or, if supported, you can use dynamic device event handling. Configure a Recipient The recipient in our case is the Milestone Event Server. Close the Loitering Guard configuration page and return to the Axis camera admin page Click on the System tab Click the Events icon Click on Recipients Click + Name = Something Recognizable (ie: Milestone Server) Type = TCP Host = IP of Milestone Event Server Port = Port associated with Generic Events in Milestone (Default=1234) Create a Rule in the Axis Camera The rule is what listens for a trigger event and then performs an action.  In this case the action is to send a TCP message to the Milestone Event server. Click Rules Click + Use this rule = checked Name = Something identifiable (ie: Send Loitering to milestone) Wait between actions = If you want to suppress sequential alerts (optional) Condition = Application > Loitering Guard > Loitering Profile  Note: The Loitering Profile is the name used when we configured the ACAP Use this condition as a trigger = checked Action = Notifications > Send notification through TCP Recipient = You will see the name of the recipient you previously set up here already Message = Unique message that Milestone can parse (ie: FrontEntranceLoitering) The Loitering Profile is the name used when you configured the ACAP Use this condition as a trigger = checked Action = Notifications > Send notification through TCP Recipient = You will see the name of the recipient you previously set up here already Message = Unique message that Milestone can parse (ie: FrontEntranceLoitering) Do not use spaces in the unique message Configuring Milestone to receive Generic Events from Axis ACAP Now that we have the camera set up lets get Milestone ready to accept the notifications so that we can create rules and alarms based on the loitering events. Generic Events in Milestone allow you to receive and parse HTTP or TCP messages that come in from any analytic or IOT device without the need for special drivers.  In this case we will be receiving the TCP messages that the Axis camera will be sending us via the rule we set up. Enable Generic Events Log into XProtect Management Client Click Tools > Options > Generic Events tab In the Generic Events tab Enabled = Checked Allowed External IPv4 addresses = IP of the camera Everything else is default Create a Generic Event In the management client’s main navigation right-click Generic Events Select Add New… Name = Something identifiable (ie: Front Entrance Loitering) Define the event details Expression defines what Milestone should consider an event.  In our case it is the message we configured in the ACAP rule.   The unique message we set up in the camera was FrontEntranceLoitering and so to tell Milestone that we are looking for exactly that message we will set the expression to be “FrontEntranceLoitering” Method 2: Using Milestone dynamic device events To simplify this process some Axis cameras support the ability to dynamically add the new ACAP events to Milestone.  Requirements XProtect 2018R3 + Express+, Pro+, Expert, Corporate Device Pack 9.9 + Here is the process: In Milestone management client find the camera hardware under your recording server Right-click and Replace One you replace, click on the camera device Click on the Events tab Click Add You will now see a list of new events including LoiteringGuard. Add both raising and falling events which reference your profile Testing the integration We can now test our integration by creating a simple rule in XProtect that will create a log in the Milestone Log Server when the Milestone Event Server identifies a message sent from the Axis Loitering Guard analytic. Create the rule in Milestone In the management client, right-click Rules, click Add Rule… Name the rule (ie: Front Entrance Loitering Rule) Perform action on In the rule description section click event If using Generic Events External Events > Generic Events > Front