User Manual for End Users and System Administrators
The ParkingPlace Detector system is an automated surveillance solution that:
When you launch the application, you'll see the main window containing several important areas:
The main portion of the window shows the live camera feed. This is where you can:
Located below the video display, these indicators show:
A table showing all configured parking spaces with their — see Fig.1 Main Interface (7):
At the bottom, you'll see three counters showing — see Fig.1 Main Interface (8):
The main window includes these control buttons:
Click the Settings button to open the configuration panel — see Fig.1 Main Interface (12).
This tab controls how the detection system operates.
Choose how the detection engine should operate — see Fig.2 Engine Working Mode & External Trigger (1):
If you selected "Started by TRIGGER" mode, configure the trigger source — see Fig.2 Engine Working Mode & External Trigger (2):
Note: When using external triggers, the system listens on UDP port 3500. If you need to run multiple instances of the application, each additional instance uses the next port number (3501, 3502, etc.). The port number is calculated as: 3500 + your App ID.
When a trigger signal is received, the system will continue analyzing for this many seconds before stopping. This allows the system to capture multiple frames after the initial trigger event. This setting only apears only when a trigger device and type is selected. — see Fig.3 Seconds.
Valid range: 1 to 65535 seconds
Select what types of objects the system should detect — see Fig.2 Engine Working Mode & External Trigger (3):
This setting controls how thoroughly the system analyzes each frame. Higher settings mean more accurate detection but require more processing time and computer resources — see Fig.2 Engine Working Mode & External Trigger (2):
Detection boxes around objects can sometimes overlap. This setting shrinks the boxes to avoid false overlaps that might cause incorrect occupancy readings — see Fig.2 Engine Working Mode & External Trigger (5):
Choose whether to show the detection boxes overlay on the live video — see Fig.2 Engine Working Mode & External Trigger (6):
The Input Stream tab configures your main parking camera.
Select the type of camera or video source you're using. The application supports many camera brands and protocols:
Use Companion Stream tab and fill in data only if one camera (different from PPD one) is available for this purpose. Otherwise leave it blank.
Tip: Higher frame rates provide more opportunities to capture clear images of passing vehicles. In parking lots, 1 FPS or lower is enough.
After configuring the camera, the connection status indicator on the main interface will show:
The Companion Stream tab configures an optional second camera. This can be useful for:
The configuration options are identical to the Input Stream tab.
Enable this checkbox to allow stream to be broadcast to the server — see Fig.5 Live view (1).
Enter the web address where stream should be sent. — see Fig.5 Live view (2).
Example:
http://yourserver.com/io/ppd/live_view.php
The Reporting tab configures how the system sends occupancy data to your management software.
Enter the web address where the system should send parking status updates. This is typically your parking management system's API endpoint — see Fig.6 Reporting (1).
Example:
http://your_server.com/io/ppd/new_parking_place_event.php
These fields identify your installation to the reporting server — see Fig.6 Reporting (1).
These values are provided by Metrici web Interface.
This setting prevents false readings when vehicles are temporarily passing through a parking space — see Fig.6 Rep... (3):
Valid range: 1 to 65535 seconds
Parking spaces are the specific areas within the camera view that you want to monitor. Here's how to configure them:
To modify an existing parking space:
To remove a parking space:
When placing parking spaces, you can choose between — see Fig.7 Add Space (3):
All application settings are stored in a configuration file called <app_id>.ini. This INI file allows you to configure the application manually or via automation scripts without using the graphical interface.
<app_id>.ini where <app_id> is the application ID (default: 1, resulting in 1.ini)app_id to generate a unique INI filename (e.g., 1.ini, 2.ini, 3.ini).
The following table lists all available configuration keys, their data types, default values, and descriptions. Keys are case-sensitive.
| Key | Type | Default | Description |
|---|---|---|---|
input_stream_type |
int | 0 | Input stream type (see Section 4 for valid values) |
input_stream_address |
string | (empty) | IP address or URL of the input camera |
input_stream_tcp_port |
int | 80 | Network port for the input stream |
input_stream_use_ssl |
int | 0 | Enable SSL/TLS for input stream (0=No, 1=Yes) |
input_stream_username |
string | (empty) | Username for camera authentication |
input_stream_password |
string | (empty) | Password for camera authentication |
input_stream_fps_limit |
float | 0 | Maximum FPS to process (0=unlimited) |
companion_stream_type |
int | 0 | Companion stream type (see Section 4 for valid values) |
companion_stream_address |
string | (empty) | IP address or URL of the companion camera |
companion_stream_tcp_port |
int | 80 | Network port for the companion stream |
companion_stream_use_ssl |
int | 0 | Enable SSL/TLS for companion stream (0=No, 1=Yes) |
companion_stream_username |
string | (empty) | Username for companion camera authentication |
companion_stream_password |
string | (empty) | Password for companion camera authentication |
rtsp_stream_latency |
int | 100 | RTSP stream latency in milliseconds |
rtsp_stream_protocols |
string | tcp | RTSP transport protocol (tcp, udp, or multicast) |
reporting_url |
string | Defined by REPORTING_URL constant | URL endpoint for reporting parking status |
reporting_duplicate_url |
string | (empty) | Secondary URL for redundant reporting |
reporting_check_action_id |
int | 0 | Camera/instance ID for reporting |
reporting_check_action_authkey |
string | (empty) | Authentication key for reporting server |
input_stream_resx |
int | 640 | Input stream horizontal resolution (width) |
input_stream_resy |
int | 480 | Input stream vertical resolution (height) |
companion_stream_resx |
int | 640 | Companion stream horizontal resolution (width) |
companion_stream_resy |
int | 480 | Companion stream vertical resolution (height) |
live_view_active |
int | 1 | Enable live view snapshots (0=Disabled, 1=Enabled) |
live_view_url |
string | Defined by LIVE_VIEW_URL constant | URL endpoint for live view snapshots |
external_trigger_type |
int | 0 | External trigger type (see Section 3.1 for valid values) |
external_trigger_seconds |
int | 1 | Seconds to analyze after receiving trigger signal |
engine_working_mode |
int | 0 | Engine working mode (0=Continuous, 1=Triggered) |
recognition_enhancement |
int | 2 | Recognition enhancement level (0-5, higher = more thorough) |
bounding_boxes_reduction |
int | 0 | Bounding boxes reduction mode (see Section 3.1) |
bounding_boxes_visible |
int | 0 | Show bounding boxes overlay (0=Hide, 1=Show) |
objects_type |
int | 0 | Type of objects to detect (0=Vehicles, 1=Boats, 2=People) |
status_change_delay |
int | 5 | Delay in seconds before changing parking space status |
parking_spaces_list |
string | (empty) | Comma-separated list of defined parking space IDs |
Below is an example 1.ini file with common settings configured:
[General]
input_stream_type=4
input_stream_address=192.168.1.100
input_stream_tcp_port=80
input_stream_use_ssl=0
input_stream_username=admin
input_stream_password=secret123
input_stream_fps_limit=10
companion_stream_type=0
companion_stream_address=
companion_stream_tcp_port=80
companion_stream_use_ssl=0
companion_stream_username=
companion_stream_password=
rtsp_stream_latency=100
rtsp_stream_protocols=tcp
reporting_check_action_id=1
reporting_check_action_authkey=your-auth-key-here
reporting_url=http://yourserver.com/io/ppd/new_parking_place_event.php
reporting_duplicate_url=
input_stream_resx=1280
input_stream_resy=720
companion_stream_resx=640
companion_stream_resy=480
status_change_delay=5
live_view_active=1
live_view_url=http://yourserver.com/io/ppd/live_view.php>
external_trigger_type=0
external_trigger_seconds=1
engine_working_mode=0
recognition_enhancement=2
bounding_boxes_reduction=0
bounding_boxes_visible=0
objects_type=0
parking_spaces_list=1,2,3,4,5,6,7,8
You can manually edit the INI file to configure the application:
<app_id>.ini in a text editorHere's a bash script example that creates a configuration file for automated deployments:
#!/bin/bash
APP_ID=1
INI_FILE="${APP_ID}.ini"
cat > "${INI_FILE}" << 'EOF'
[General]
input_stream_type=4
input_stream_address=CAMERA_IP_ADDRESS
input_stream_tcp_port=80
input_stream_use_ssl=0
input_stream_username=CAMERA_USER
input_stream_password=CAMERA_PASS
input_stream_fps_limit=10
reporting_url=http://yourserver.com/io/ppd/new_parking_place_event.php
reporting_check_action_id=1
reporting_check_action_authkey=AUTH_KEY
reporting_duplicate_url=
input_stream_resx=1280
input_stream_resy=720
companion_stream_resx=640
companion_stream_resy=480
status_change_delay=5
live_view_active=1
live_view_url=http://yourserver.com/io/ppd/live_view.php>
external_trigger_type=0
external_trigger_seconds=1
engine_working_mode=0
recognition_enhancement=2
bounding_boxes_reduction=0
bounding_boxes_visible=0
objects_type=0
parking_spaces_list=1,2,3,4,5
EOF
echo "Configuration file ${INI_FILE} created successfully"
When migrating configurations between systems or upgrading the application:
<app_id>.ini file to the new locationapp_id matches the instance you're configuringWhen starting the application from the command line, you can use these options:
| Option | Description |
|---|---|
-nogui |
Run without displaying the graphical interface (headless mode) |
-debug |
Enable debug mode with additional logging |
-disable_gpu |
Disable GPU acceleration even if available |
-use_gpu <n> |
Use GPU number n for processing (if multiple GPUs) |
-detection_threads <n> |
Number of processing threads (1-8, default is 1) |
-log_level <n> |
Logging level: 0 (none), 1 (low), 2 (medium), 3 (high) |
-app_id <n> |
Application ID for multi-instance deployments |
-v |
Show version information |
| Term | Definition |
|---|---|
| API | Application Programming Interface - how the application communicates with your server |
| Bounding Box | A rectangle drawn around a detected object in the video |
| Double Parking | A vehicle occupying more than one parking space |
| FPS | Frames Per Second - how many video frames are processed each second |
| GPU | Graphics Processing Unit - can speed up video analysis |
| H.264/H.265 | Video compression formats used by modern cameras |
| HTTP | HyperText Transfer Protocol - standard web communication |
| IP Address | Network address of a device (like 192.168.1.100) |
| MJPEG | Motion JPEG - a video format where each frame is a separate JPEG image |
| RTSP | Real Time Streaming Protocol - standard for streaming video over networks |
| SSL/TLS | Security protocols for encrypted communication |
| UDP | User Datagram Protocol - a fast network protocol for sending trigger signals |
If you encounter issues not covered in this manual: