How can I combine an ISS SecureOS Auto system (providing ANPR functionality) with a BVMS system?
SecureOS sends events from analytics to BVMS, which can be translated into alarms and/or stored into the logbook.
Event
|
Included metadata
|
Description
|
---|---|---|
License Plate Detected | License plate, Direction, DirectionID, SourceID | General License plate event |
License Plate on watchlist detected | License plate, Direction, DirectionID, SourceID | Watchlist License plate event |
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.
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)
regasm.exe /codebase “C:\Program Files\Bosch\VMS\bin\Bosch.Vms.VirtualInputsServer.dll“ |
Open the ISS configuration from the Windows task bar.
Browse to the VB/JScript programs node.
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.
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.
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).
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.
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.
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.
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.