Skip to main content

How can I combine an ISS SecureOS Auto system (providing ANPR functionality) with a BVMS system?

Question

How can I combine an ISS SecureOS Auto system (providing ANPR functionality) with a BVMS system?

Answer


This guide assumes BVMS and ISS SecureOS are installed and functioning as separated systems. BVMS and ISS SecureOS can be installed on the same system.

Functionality

SecureOS sends events from analytics to BVMS, which can be translated into alarms and/or stored into the logbook.

Events received


EventIncluded metadataDescription
License Plate DetectedLicense plate, Direction, DirectionID, SourceIDGeneral License plate event
License Plate on watchlist detectedLicense plate, Direction, DirectionID, SourceIDWatchlist License plate event

In addition to SecureOS Auto BVMS can also receive events and metadata from SecureOS Transit, SecureOS Cargo and SecureOS FaceX.

Installation

ISS SecureOS

Install the BVMS SDK

The BVMS SDK needs to be installed on the ISS SecureOS system, if it is not running on the same server as the BVMS Management Server. The BVMS SDK can be installed as part of the BVMS installation package.

The integration between ISS SecureOS and BVMS is based on Javascript technology. To enable the use of the Javascript plugin a DLL file needs to be registration.

  1. Copy Bosch.Vms.VirtualInputsServer.dll from the BVMS Management Server C:\Program Files\Bosch\VMS\bin() to the ISS SecureOS server (C:\Program Files\Bosch\VMS\bin)

  2. Register the DLL by calling from the root of the .NET framework directory:
POWERSHELL
regasm.exe /codebase “C:\Program Files\Bosch\VMS\bin\Bosch.Vms.VirtualInputsServer.dll“

Sending events

Open the ISS configuration from the Windows task bar.

Browse to the VB/JScript programs node.

Sending events for all detected license plates and trigger alarm on watchlist events

Create a new JScript program and use the code-example below. Adjust the necessary parameters, for example the IP address, username and password of the BVMS server.

JS
var BVMS_server = "192.168.178.81:5390"; // IP-address and port of BVMS
var BVMS_login = "Admin"; // BVMS username
var BVMS_password = "xyz"; // BVMS username password
 
var pass
function Init()
{
    // Execute function LPPass when a license plate is detected for all cameras
    Core.RegisterEventHandler("LPR_CAM","*","CAR_LP_RECOGNIZED","Detection");
    // Execute function Watchlist when a license plate on a watchlist is detected
    Core.RegisterEventHandler("LPR_LOGIC","*","CAR_LP_FOUND","Watchlist");
}
function Detection(event)
{
    // Store license plate event in global variable pass
    pass = event
 
    // Send data to BVMS Logbook
    var VirtInput;
    // BVMS VirtualInputID for Logbook is equal to the ISS SecureOS Camera ID
    var inputNr = event.sourceid;
    var alarmId = 1;
    var dataString1 = "";  
    var dataString2 = event.number;         // License plate
    var dataString3 = event.direction_id;   // Direction ID
    var dataString4 = event.direction_name; // Direction Name
    var dataString5 = event.sourceid;       // ISS SecureOS Camera Source ID
    var dataString6 = ""; // reserved
    var dataString7 = ""; // reserved
    var dataString8 = ""; // reserved
    var dataString9 = ""; // reserved
    var dataString10 = ""; // reserved 
     
    Log.Debug("Detection", inputNr, dataString1, dataString2, dataString3, dataString4, dataString5, dataString6, dataString7, dataString8, dataString9, dataString10, alarmId);
    VirtInput = new ActiveXObject("Bosch.Vms.VirtualInputsServer");
    VirtInput.Connect(BVMS_server, BVMS_login, BVMS_password);
    VirtInput.SendData(inputNr, dataString1, dataString2, dataString3, dataString4, dataString5, dataString6, dataString7, dataString8, dataString9, dataString10, alarmId);  
}
function Watchlist(event)
{
    var VirtInput;
    // BVMS VirtualInputID for Logbook is equal to the ISS SecureOS Camera ID + 1000
    var inputNr = (parseInt(event.sourceid) + 1000).toString();
    var alarmId = 1;
    var dataString1 = "";
    var dataString2 = event.number;         // License plate
    var dataString3 = event.direction_id;   // Direction ID
    var dataString4 = event.direction_name; // Direction name
    var dataString5 = event.sourceid;       // ISS SecureOS Camera Source ID
    var dataString6 = event.database_type;  // Watchlist type
    var dataString7 = event.database_name;  // Watchlist name
    var dataString8 = ""; // reserved
    var dataString9 = ""; // reserved
    var dataString10 = ""; // reserved   

    Log.Debug("Watchlist", inputNr, dataString1, dataString2, dataString3, dataString4, dataString5, dataString6, dataString7, dataString8, dataString9, dataString10, alarmId);
    VirtInput = new ActiveXObject("Bosch.Vms.VirtualInputsServer");
    VirtInput.Connect(BVMS_server, BVMS_login, BVMS_password);
    VirtInput.SendData(inputNr, dataString1, dataString2, dataString3, dataString4, dataString5, dataString6, dataString7, dataString8, dataString9, dataString10, alarmId);
}

The script is based on one single Watchlist, but can be extended to multiple Watchlists as well.

Configuring ISS SecureOS Watchlists

The Watchlists in ISS SercureOS are not enabled by default. The ISS SecureOS Auto user guide describes how to enable the Watchlists (section 4.1.5.2 Watchlists and 5.1.5.2.1 External Database Connection Example).

BVMS - Configuration

Creating virtual inputs

Create the necessary virtual inputs in the BVMS device tree. In the example below two virtual inputs are used and named after two cameras for which ISS SecurOS is providing ANPR.

Add the virtual inputs to the logical tree. It is recommended to add, per ANPR camera, one virtual input which receives all ANPR events and one virtual input which only receives and event when a watchlist is triggered.

Trigger alarms (if necessary) for the related virtual inputs. The virtual input used for receiving all ANPR events will not be configured to raise an alarm. The virtual input which receives the watchlist events will be configured to raise an alarm.

Creating alarms

Configure the appropriate alarm settings (alarm settings are described in the BVMS Configuration Manual).

Instant-playback can be used to allow the operator to immediately verify the incident as it is happening.

Operation

Detecting incidents

When the watchlist is configured the BVMS alarms are visualized using the BVMS alarm management mechanism. The license plate itself is showed and stored as Text Data.

Investigation

The logbook search or search video by event mechanism can be used to search for a specific license plate. License plates are stored as "Data 2". The picture below shows an example of the search parameters.






JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.