Parking Management
The Parking Management feature provides comprehensive parking lot management with license plate recognition, zone-based tracking, access control automation, and detailed statistics.
Overview
Parking Management offers:
- Multi-zone support with individual capacity limits and utilization tracking
- Entry/Exit camera integration with automatic plate matching
- Snapshot capture on entry and exit for evidence
- Tag-based access rules with configurable max parking times
- IO Actions for barrier control and signage
- Real-time monitoring via WebSocket with live zone occupancy
- History & Statistics with filtering, export, and analytics
Tabs
The Parking Management interface is organized into tabs:
| Tab | Description |
|---|---|
| Live | Real-time zone occupancy, camera status, plate event log, and manual IO actions |
| History | Searchable parking entry history with table/grid views and CSV export |
| Zones | Configure parking zones with entry/exit cameras |
| Access & Events | IO actions, event rules, and email notifications for overparking |
| Plate List | Embedded License Plate List for managing plates and tags |
| General | Global settings like stale timeout, history retention, and snapshot cleanup |
Integrated Plate Management
The Plate List tab provides direct access to the License Plate List feature without leaving Parking Management. Changes to plates and tags are automatically available in Zones and Access Control when switching tabs.
Zones Configuration
Creating Zones
Each parking zone represents a physical area (parking level, section, or lot):
| Setting | Description |
|---|---|
| Zone Name | Descriptive name (e.g., "Level 1", "Visitor Parking") |
| Capacity | Maximum number of vehicles (0 = unlimited) |
| Default Stale Timeout | Minutes before parked entries are marked as stale (overrides global setting) |
| Free Flow | When enabled, entries are recorded but access is never denied regardless of capacity, tags, or authorization |
| Free Flow Max Parking Time | Free Flow only. Max minutes a vehicle may stay before overtime fires (0 = no limit) |
| Free Flow Plate Match | Free Flow only. Allowed character drift between entry and exit reads: Strict (exact), 1 char, or 2 chars. Tolerates OCR jitter. Ties (two parked plates equidistant) fall back to "no match" so the wrong vehicle is never released |
| Re-entry Dedup Seconds | For cameras configured as "Entry & Exit": time window during which a repeated read of the same plate is treated as a duplicate instead of an exit (0 = default 10s) |
| Rejected Dedup Seconds | Time window during which duplicate Unauthorized / Exit-without-Entry events for the same plate are suppressed (0 = default 30s). Prevents the siren and IO rules from re-firing while a denied car lingers at the gate |
| Lane Traversal Time | Single-lane setups with a dedicated entry camera before the barrier and a dedicated exit camera after it (both facing away from the barrier). Seconds a car needs to physically cross the barrier. Within this window after an entry, an exit detection of the same plate is treated as the partner camera's rear view of the same car and ignored; the reverse also holds within the window after an exit. Set to 0 to disable. Typical: 5 to 15 seconds. Only shown when the zone has both a dedicated entry and a dedicated exit camera |
| Snapshot on Entry / Exit | Capture and store a snapshot image when a vehicle enters or exits this zone. Images are saved to SD card |
Free Flow Mode
Free Flow is useful for open parking lots where you want to track vehicles and collect statistics without enforcing access rules. All plates are allowed through; overtime and unauthorized events are still logged for reporting but do not affect entry decisions.
Re-entry Deduplication
For single-point access cameras ("Entry & Exit" role), the system infers direction from database state - a plate not currently parked is treated as an entry, one already parked is treated as an exit. To prevent rapid re-reads from being misinterpreted as exits, a dedup window filters duplicate reads of the same plate. Duplicates within the window are emitted as duplicate/ignored events.
Zone Full Behavior
When a zone reaches capacity, new entries are still recorded for tracking purposes. A Zone Full Rising event is fired on the entry that crosses the threshold, and a Zone Full Falling event is fired when the zone drops back below capacity. Use IO Rules to trigger barriers or signage on either edge.
Zone Count Changed (ACAP only)
In addition to the Access Control event types, each zone exposes a raw ACAP platform event PM_<zone>_CountChanged (with count and capacity payload) that fires on every occupancy change. This event is intentionally not available in the Event Type dropdown - it is only reachable from other Axis events or flow.
Entry/Exit Cameras
Each zone can have multiple cameras configured as entry, exit, or both:
| Setting | Description |
|---|---|
| Camera | Select from registered Flow Devices |
| Role | Entry, Exit, or Entry & Exit |
| Capture Snapshot | Store entry/exit images on SD card |
Managing Devices
Use the Devices button in the toolbar (visible on Zones and Access Control tabs) to add or configure cameras and IO devices.
Camera Roles
| Role | Behavior |
|---|---|
| Entry | Creates new parking entry when plate detected |
| Exit | Matches plate to existing entry and records exit time |
| Entry & Exit | Handles both directions (single-point access) |
Tag-Based Rules
Tags from the License Plate List determine parking rules:
| Setting | Description |
|---|---|
| Tag | Tag name from License Plate List (e.g., "staff", "visitor", "vip") |
| Max Parking Minutes | Maximum allowed parking time (0 = unlimited) |
| Zones | Which zones this rule applies to (empty = all zones) |
When a plate is detected, the system:
- Looks up the plate in the License Plate List
- Validates the plate's date range (From/To dates if set)
- Finds matching tags
- Applies the most restrictive max parking time
- Marks entry as overtime when exceeded
Date Validation
Plates with a From Date that hasn't been reached yet, or a To Date that has passed, will be denied access even if they have valid tags.
Blocked vs. Ignore
Two per-plate flags from the License Plate List shape what happens on a read:
- Blocked: the plate is denied like an unknown plate. An
unauthorized_entryrow is created, the email notification fires, IO Rules wired to theUnauthorizedevent run, and the live event log shows the plate as blocked. Use this for explicitly banned vehicles where you still want a paper trail. - Ignore: the plate is silently dropped. No entry, no exit, no unauthorized event, no email, no IO Rules. The live event log still shows the read tagged
IGNOREso operators see it was observed. Use this for known false positives (e.g. a nearby billboard read as a plate).
The PM_<zone>_Detection platform event distinguishes the three outcomes via its state field (0 = not allowed, 1 = allowed, 2 = blocked) while keeping the boolean allowed field for backwards compatibility.
Access & Events
The Access & Events tab contains IO actions, event rules, and email notifications for overparking alerts.
IO Actions
Manual actions that can be triggered from the Live view or camera preview:
| Setting | Description |
|---|---|
| Name | Display name for the button |
| Device | Target device with IO ports |
| Port | IO port number to control |
| Action | Pulse, Activate, or Deactivate |
| Duration | Pulse duration in milliseconds (for Pulse action) |
| Show on cameras | Select which cameras should display this action button in their live preview |
Camera Preview Actions
When you configure "Show on cameras" for an IO action, the action button will appear below the video stream when viewing that camera's live preview. This is useful for triggering barriers or gates while watching the camera feed.
IO Rules
Automated actions triggered by parking events:
| Setting | Description |
|---|---|
| Name | Rule identifier |
| Event | Entry, Exit, Unauthorized, Overtime, Zone Full Rising, or Zone Full Falling |
| Zones | Which zones trigger this rule (empty = all) |
| Tags | Which tags trigger this rule (empty = all) |
| Device | Target device |
| Port | IO port number |
| Action | Pulse, Activate, or Deactivate |
Event Types
| Event | Description |
|---|---|
| Entry | Vehicle entered a zone |
| Exit | Vehicle exited a zone |
| Unauthorized | Unknown plate or plate without allowed tags |
| Overtime | Vehicle exceeded max parking time |
| Zone Full Rising | Zone just reached its capacity limit (fires once on the threshold crossing) |
| Zone Full Falling | Zone dropped below its capacity limit (fires once when an exit brings count under max) |
ACAP-only event: Count Changed
A PM_<zone>_CountChanged event (payload: count, capacity) is fired on every occupancy change. It is not selectable as an IO Rule event type - it is exposed only on the Axis device events external services/integrations or flow (Onvif Event only).
Example Rules
| Use Case | Event | Condition | Action |
|---|---|---|---|
| Open barrier for staff | Entry | Tag = "staff" | Pulse port 1 |
| Open barrier for visitors | Entry | Tag = "visitor" | Pulse port 1 |
| Open exit barrier | Exit | Any | Pulse port 2 |
Email Notifications
Receive email alerts when vehicles exceed their maximum parking time.
| Setting | Description |
|---|---|
| Enable | Toggle email notifications on/off |
| SMTP Host | Email server address (e.g., smtp.gmail.com) |
| Port | SMTP port (587 for TLS, 465 for SSL) |
| Username | SMTP authentication username |
| Password | SMTP authentication password |
| Use TLS/SSL | Enable encrypted connection |
| From Address | Sender email address |
| Recipients | Comma-separated list of recipient emails |
| Zones | Select specific zones or leave empty for all zones |
| Attach Entry Snapshot | Include the entry photo in the email |
Gmail Setup
For Gmail, use smtp.gmail.com with port 587 and TLS enabled. You'll need to create an App Password in your Google Account settings (Security → 2-Step Verification → App passwords).
When Emails Are Sent
An email is sent when a vehicle's parking duration exceeds its maximum allowed time. The system checks every minute. Each vehicle triggers only one email per parking session.
Test Email
Use the Test button to verify your SMTP configuration. The test sends a sample email to all configured recipients.
Live View
The Live tab displays real-time parking information with statistics and monitoring tools.
Top Bar Statistics
The top bar shows key metrics at a glance:
| Stat | Description |
|---|---|
| Parked | Total vehicles currently parked. Click to open a per-zone breakdown dialog showing each zone's current count (and capacity, if configured). |
| Avg Duration | Average parking time of current vehicles |
| Zone Capacity | Occupancy per zone (e.g., "Level 1: 5/20") |
| Overtime | Count of vehicles exceeding max parking time |
| Utilization | Overall parking lot utilization percentage |
Parked Vehicles
Shows all currently parked vehicles with:
- Header row with column labels
- Time parked (duration)
- Vehicle name (from License Plate List)
- Zone and camera
- License plate number
- Tag assignment
- Parking progress bar (visual indicator of parking duration)
Zone Cards
Each zone shows:
- Current occupancy vs. capacity
- Utilization percentage bar
- List of currently parked vehicles with duration
Camera Status
Shows health of all configured cameras:
- Green dot: Camera online and connected
- Red dot: Camera offline or connection lost
- Last detected plate
- Last activity timestamp
Multi-Zone Cameras
A single camera can serve multiple zones (e.g., nested parking areas). The camera status shows all zones it serves, and events are processed for each zone independently.
Real-time Status
Camera status updates automatically when a camera disconnects or reconnects - no page refresh needed.
Plate Event Log
Real-time feed of plate detections with detailed event information:
| Column | Description |
|---|---|
| ID | Unique event identifier |
| Time | Detection timestamp |
| State | Event state (Entry, Exit, Entry Denied, etc.) |
| Plate | License plate number |
| Name | Name from License Plate List |
| Zone | Parking zone |
| Camera | Camera that detected the plate |
| Type | Detection type |
| Color | Vehicle color (if detected) |
| Size | Image size in pixels |
| Act | Action status |
| Img | Snapshot thumbnail (click to view) |
Event States
| State | Color | Description |
|---|---|---|
| Entry | Green | Vehicle entered the zone |
| Exit | Blue | Vehicle exited the zone |
| Entry Denied | Red | Entry denied (unauthorized or zone full) |
| Tag Not Allowed | Orange | Plate has tag but not allowed in this zone |
| Exit (No Entry) | Cyan | Exit detected without matching entry |
| Add to Plate List | Purple | Plate added to License Plate List |
Adding a Parked Vehicle Manually
Use the + button in the Parked Vehicles header to register a vehicle that is already parked but was never seen by a camera (for example, vehicles that were on the lot before the system was deployed, or before a camera came online).
| Field | Description |
|---|---|
| Zone | Which parking zone the vehicle is in |
| Plate | License plate (uppercased automatically) |
| Tag | Optional. Tag picked from the License Plate tag list - used for max-parking-time and rule matching, just like an LPV-detected entry |
| Max parking time (minutes) | Optional override. 0 means no limit. The vehicle is flagged overtime once this is exceeded |
| Entry time | When parking actually started. Must fall inside the zone's stale-timeout window |
Behaviour:
- The plate name is auto-filled from the License Plate List when the plate exists there - there is no separate name field.
- The entry is created with
Status = parkedandEntryCameraName = "Manual", so a later exit detection by a real camera will match and close it normally. - No IO actions, gates or platform events are fired when adding a manual entry - registering a car that is already parked must not trigger barriers or notifications.
- Capacity is not checked - manual entries are intentionally allowed past
max_capacity, since the goal is to record reality. - Entry times older than the zone's stale timeout (or the global default if the zone uses 0) are rejected, otherwise the stale sweeper would silently mark the new row stale within minutes.
- Adding a plate that is already parked in the chosen zone is rejected.
Requires the parking_manage_entries permission. Endpoint: POST /parking_management/entries/manual.
Manual Actions
Execute IO Actions directly from the interface (requires parking_execute_action permission).
History View
Table View
Sortable data table with columns:
| Column | Description |
|---|---|
| Plate | License plate number |
| Name | Name from License Plate List (if matched) |
| Zone | Parking zone |
| Entry Time | When vehicle entered |
| Exit Time | When vehicle exited |
| Duration | Total parking time |
| Status | Parked, Exited, or Stale |
| Tag | Matched tag from plate list |
| Overtime | Warning if exceeded max time |
| Snapshots | Click to view entry/exit images |
Grid View
Visual card layout showing entry snapshots with plate overlay.
Filters
| Filter | Description |
|---|---|
| Plate | Search by plate number |
| Status | Parked, Exited, or Stale |
| Zone | Filter by zone |
| Tag | Filter by matched tag |
| From/To Date | Date range filter |
Export
Download filtered entries as CSV file.
Entry Actions
Right-click or use action menu on entries:
| Action | Description |
|---|---|
| Edit | Correct plate number |
| Extend | Add extra parking time |
| Add to List | Add plate to License Plate List with tags |
| Delete | Remove entry |
General Settings
| Setting | Description |
|---|---|
| Default Stale Timeout | Minutes before entries without exit are marked stale (default: 1440 = 24h) |
| History Retention Days | How long to keep history entries (default: 7 days) |
| Snapshot Max GB | Maximum SD card storage for snapshots |
| Snapshot Cleanup Days | Delete snapshots older than this |
Cleanup Actions
- Delete All Parked: Remove all currently parked entries
- Delete All History: Clear all historical entries
Events
Parking Management generates AXIS Metadata events:
| Event | Description |
|---|---|
| Entry | Vehicle entered a zone |
| Exit | Vehicle exited a zone |
| Unauthorized | Unknown plate, blocked plate, or plate without allowed tags attempted entry |
| Overtime | Vehicle exceeded max parking time |
| Zone Full Rising | Zone reached capacity limit (rising edge - fires once on crossing) |
| Zone Full Falling | Zone dropped below capacity limit (falling edge - fires once on crossing) |
| Detection | Combined stateless event fired on every plate read. Payload: plate, plateName, allowed (bool), state (int: 0 = not allowed, 1 = allowed, 2 = blocked), inList, tags, camera, and the LPV plate crop (base64). ACAP-only, not exposed in IO Rules. Use it when you want one unified feed instead of stitching Entry / Unauthorized together |
| Count Changed | Zone occupancy changed (ACAP-only, not exposed in Access Control UI) |
Events include metadata: plate, zone, tag, duration, camera name.
Event Automation
Use IO Rules in the Access Control tab to trigger actions (open barriers, activate lights, sound alarms) when these events occur.
Comparison: Parking Management vs. Parking Monitor Node
| Feature | Parking Management | Parking Monitor Node |
|---|---|---|
| Type | Standalone feature | Flow node |
| Zones | Multi-zone with capacity | No zone concept |
| Cameras | Built-in camera management | Manual event wiring |
| Snapshots | Automatic capture | Manual with flow |
| Access Control | Built-in IO actions/rules | Manual with flow |
| Statistics | Built-in dashboard | Manual with flow |
| History UI | Table/Grid with filters | Basic table |
| Best For | Complete parking solution | Custom integrations |