ParkComfy user guide

Licence plate based parking access for Axis cameras – for operators who work with the app every day, and for administrators who set it up.

1. Introduction

ParkComfy is an application (ACAP) that runs on an Axis network camera. It receives the licence plates read by AXIS License Plate Verifier (ALPV) cameras, decides whether the vehicle may enter or leave, opens the barrier, keeps count of the vehicles in each parking zone and records everything in its logs.

Access by platePermits with validity periods, time windows, zones and optional vehicle data (country, make, model, colour).
OccupancyVehicles parked now, capacity per zone and per permit group, overstay limits and statistics.
GatesBarriers through a camera I/O output, an HTTP command, or left to another system – with manual opening and lockdown.
AccountabilityApp log of every plate read and manual opening, System log of every change, with users, roles and time profiles.

This guide has two parts. Part A describes the pages used in daily operation (security staff, reception). Part B is for administrators and installers.

2. How ParkComfy works

A vehicle arrives at a barrier. The ALPV camera reads the plate and sends the read (with the plate image, vehicle data and direction) to ParkComfy. ParkComfy then:

  1. finds the zone that uses this camera, and whether the read is an entry or an exit;
  2. applies a plate correction if the camera usually reads this plate wrongly;
  3. looks for a permit for the plate and checks its validity, its zones and its strong criteria;
  4. checks the zone rules: opening hours, who may park here and when, capacity and group limits, lockdown;
  5. opens the gate (or leaves it closed), updates Currently parked and writes an App log entry with the reason.

Leaving a zone is never blocked by time rules: a vehicle that is parked in a zone can always leave.

TermMeaning
ALPV cameraA camera running AXIS License Plate Verifier that sends its reads to ParkComfy. It may be the camera that runs ParkComfy itself or another camera on the network.
ZoneA parking area with its entry and exit cameras, its gates, its capacity and its access rules.
PermitA plate allowed to enter, with a holder (name, company, phone, e-mail), a group, a validity and optional zones and strong criteria.
Permit groupA set of permits that are handled together, e.g. Staff, Suppliers, Visitors. Zones grant access and entry times per group.
Time profileDays and hours (with exception days such as public holidays). Used by roles, permits, zone rules and zone opening hours.
RoleThe permissions of app users: which pages, which zones, and when (time profile).

3. Getting started

Requirements

Opening ParkComfy

AddressWho
https://<camera>/local/parkcomfy/admin/
or Apps › ParkComfy › Open in the camera web interface
Axis administrators of the camera – every page, including Settings.
https://<camera>/local/parkcomfy/app/App users (operators, managers) with their own ParkComfy account – the pages their role allows.

Setting up – in this order

  1. Settings › Identification: name the installation (shown in the top bar and on the sign-in page).
  2. ALPV cameras: add the cameras; ParkComfy sets up their event push for you.
  3. Time profiles: create the time windows you need (office hours, shifts) and the exception days (public holidays).
  4. Permits › Groups and Permits: create the groups and add or import the permits.
  5. Parking zones: create the zones – cameras, gates, opening hours, who may park and when, capacity.
  6. Roles and Users: give the operators their accounts.
  7. Gate control: add the gates that operators open by hand, with their camera images.
  8. Settings › Diagnostics: test with the Metadata monitor, a test read or the simulation – then watch the App log.
  9. Settings › Maintenance: make a full backup.

4. The user interface

The menu on the left lists the pages your account may open. On a wide screen the menu stays in place while the page scrolls; Collapse narrows it to icons. The top bar shows the installation name and, on the right:

ButtonUse
AppearanceLight, dark, or follow the system setting.
User guideOpens this guide in the language of the app (English for custom languages).
LanguageDisplay language of the app for you.
AccountYour name, change password, sign out.

Most pages share the same building blocks: tiles with key figures at the top, filters (zone chips, search fields and drop-downs in the table header), and tables with 25, 50 or 100 rows per page. Dialogs close only with their buttons, the × or Esc – a click next to a dialog does not lose what you typed. Every change is recorded in the System log.

Exports are always encrypted

Every Export CSV (Currently parked, Statistics, App log, System log, Permits) asks for a file password that follows the camera’s password policy. The file you get is a ZIP archive encrypted with AES-256 that holds the CSV file. Open it with 7-Zip, WinRAR, WinZip or another program that supports AES-encrypted ZIP files – the ZIP support built into Windows and macOS may not open it. The password cannot be recovered, and every export is recorded in the System log.

Part A – Daily use

5. Currently parked

Every vehicle that entered a zone and has not left it yet, in order of entry.

Currently parked page
Zone chips with the occupancy of each zone, tiles, and the list of parked vehicles.
A vehicle is still listed after it leftThe exit camera did not read it (e.g. it left behind another car). Remove it from the list (row action), or open the exit gate by hand on Gate control with its plate.

6. Gate control

Camera images of the gates and manual opening – for vehicles that have to be let in or out by hand.

Gate control page
One card per gate: camera image, Open gate, last read and last manual opening.

Opening a gate by hand

  1. Check the image – the gate opens for whoever is in front of it.
  2. Press Open gate, choose a reason (visitor without permit, delivery, permit not recognised, plate not readable, emergency, other).
  3. Optionally enter the plate: at an entry the vehicle is added to Currently parked as “Gate opened manually”; at an exit it is removed.
  4. If the zone leads on to other zones, Destination › Continues to … gives the vehicle a guest pass: the gates on the way and at the destination open for its plate.
Open the gate dialog
Every manual opening is recorded with the user, the reason and the plate.

The button is grey when the gate is locked (Lockdown), when the gate is controlled by another system, or when your role may only view this gate.

Live view

A card shows a snapshot; Start live view streams the image for the set time (+1 min extends it). The live view can also start by itself on a refused read.

Arranging your cards

Press Arrange, then drag the cards or use the arrows on each card. The order is saved for your account only; Default order restores the original order.

For administrators: adding gates

The page starts empty. Add gate lists the entry and exit gates of the zones that are not on the page yet. Set up on a card sets the camera image (a camera of the ALPV list, another Axis camera over VAPIX, or any JPEG snapshot URL), the live-view mode and the manual opening (same as the zone’s gate, a device I/O port or an HTTP command). × removes a gate from the page; the gate itself keeps working.

7. Overstays

Vehicles parked longer than allowed, and the rules that set the limits.

Overstays page

A rule applies to all vehicles, to permit groups, to vehicles without a permit, or to single plates – in every zone or in selected zones – with a maximum parking time or No limit (exempt from other rules). When more rules match, the most specific one wins (single plate before group before all vehicles; a zone-specific rule before an all-zone rule). The Specificity column shows the order.

Overstay rule dialog

8. Statistics

Occupancy, busy hours, entries, length of stay, permit groups and refused entries for today, the last 7 or 30 days, all data or a custom period. Click zone chips to show one or more zones. Export CSV saves the figures. Figures are collected every 15 minutes; how long they are kept is set in Settings › Logs.

Statistics page

9. Lockdown

Stops the app from opening the barriers – all entries, all exits, everything, or per zone and direction. Plate reads are still logged. Enter a reason (optional); every lock and release is recorded in the App log. A locked gate cannot be opened on Gate control either.

Lockdown page
Emergency exitsLockdown keeps the app from opening barriers. It does not replace the fire and evacuation arrangements of the site.

10. App log

Every plate read and manual opening, with what the app did and why.

App log page

Part B – Administration

11. ALPV cameras

The cameras that send plate reads to ParkComfy. The camera running ParkComfy can be one of them.

ALPV cameras page

Adding cameras

  1. Add camera searches this network segment or an IP range, or takes an address you enter.
  2. Choose the cameras, enter an Axis account with admin rights (needed to write the ALPV settings).
  3. Give each camera an installation name and a Camera ID (2–32 characters, unique).
  4. ParkComfy sets up the ALPV event push (HTTPS) and, optionally, the heartbeat, and reads the settings back.
Add camera wizard

12. Parking zones

A zone is an area with its own entry and exit cameras, gates, rules and capacity.

Parking zones page

Cameras and direction

Gate control

OptionHow the gate opens
Device I/O portA pulse on an output of this camera or another Axis device (e.g. AXIS A9161 / A9210), with pulse length and active state. Test gate sends one pulse.
HTTP commandA GET or POST request to a relay or barrier controller (HTTPS recommended).
External systemAnother system opens the gate. It can report back “let in” / “refused” over HTTP; until then the vehicle is not counted.
Not availableReads of this direction are logged only.

Who can park here

Who can park here
Opening hours of the zone, the access mode and the entry time of each group or permit.
How the rules combineA vehicle may enter if any of its rows allows it now – a single-permit row adds to the time of its group. The permit’s own validity applies as well (both must allow). Example: group Suppliers with “Office hours”, and one supplier with a single-permit row “Always”: that supplier may enter at any time, the others only in office hours. To narrow the time of one permit, set a time-limited validity on the permit itself.

Capacity

Limit the number of parked vehicles sets the spaces of the zone; when it is full the entry gate stays closed (or nothing happens and it is only reported). Limit spaces per permit group reserves or caps spaces for groups. Vehicles on the way (transit, external system) are counted.

13. Permits

The plates allowed to enter. The page has four tabs: All permits, Groups, Expired permits and Inactive permits; the last two show a red number when they list something.

Permits – All permits

Adding a permit

Permit editor
FieldNotes
Plate2–12 letters A–Z and digits. Plate deviation accepts reads that differ in 1–3 characters.
Name, company, phone, e-mailThe holder. Phone and e-mail are optional; the phone is shown on Currently parked and Overstays to users who may see the permits.
GroupZones grant access and entry times per group.
ValidityPermanent; One-time (used at the first allowed entry, optionally only in a time window); Time-limited (a date range with own days and hours, or a time profile). Exception days can apply.
ZonesOff: every zone that admits the permit. On: only the selected zones. Entry times by zone shows where and when the permit may enter.
Strong criteriaCountry, make, model and colour that the camera read must also match. Collect fills them in from the next read.

Groups

Create, suspend, rename and delete groups. Members of the group opens a searchable, paged list of all permits: tick the members (ticking a permit of another group moves it here), or use the header box to tick every matching permit. Changes are saved together and recorded in the System log.

Permits – Groups

Expired and inactive permits

Expired permits

Import and export

Import permits… (Manager role and Axis administrators only) loads many permits from a CSV file. The camera checks the file itself before anything is saved:

Import permits
The dialog contains the column guide, a template and the export in the same format.
ColumnContent
plate *ABC123 – spaces, - and . are removed
name *holder
company, phone, emailoptional
groupexisting group name (or tick “Create missing groups”)
zoneszone names separated by |; empty = every zone
validitypermanent (default), once or period
from, toYYYY-MM-DD or YYYY-MM-DD HH:MM
time profileperiod only: a time profile instead of from / to

Export CSV writes the permits in the same format, in an encrypted ZIP (see Exports are always encrypted). Cells that look like formulas get a leading apostrophe, so a spreadsheet does not run them; the import removes it again, so an exported file can be imported back.

14. Plate corrections

If a camera regularly reads a plate wrongly (e.g. B as 8), add a correction: Read as → Corrected to the plate of a permit, optionally correcting the vehicle data (strong criteria) too. The correction is applied before the permit is checked; the App log shows both plates. The App log row action creates a correction from a wrong read.

15. Users and roles

Users

People who sign in at /local/parkcomfy/app/. A new user gets a temporary password and creates their own at the first sign-in, following the camera’s password policy. Optional: allowed IP addresses, self-registration with approval, account lockout and session limits (Settings › Security › Sign-in and sessions). Axis administrators sign in with the camera account and are always administrators.

Users page

Roles

A role is a set of permissions with a time profile and an optional zone limit. The built-in Manager role can do every user function in every zone; the default Operator role covers daily operation. For each page you choose view or edit, the zones, and special rights (e.g. open gates, let guests continue to another zone, export). A user without a role can sign in but cannot use the app.

Roles page

16. Time profiles

A time profile has an optional validity period and time windows (each with its own days and hours; a window may continue past midnight). On exception days (public holidays, company events) the exception replaces the weekly schedule: no access, or special hours.

Time profile editor

Settings › Security › Sign-in and sessions › Active Directory

Domain sign-in

Domain accounts sign in with their Windows user name and password; the password is checked by the domain controller and never stored. Only accounts added on Users (Add domain user) may sign in, and their role is set in ParkComfy – membership in an AD group alone never gives access.

Permit import

Users in a <prefix>Permit-<group> AD group get a permit for each of their plates in that permit group; optional <prefix>Zone-<zone> groups limit the zones. Imported permits are read-only in ParkComfy and follow AD: disabled accounts are suspended, removed ones are deleted, the account expiry date ends the permit.

FieldDefault attribute
Name / sign-in name / e-mail / company / phonedisplayName / userPrincipalName / mail / company / mobile
PlatescarLicense (several values or “;”)
Vehicle, validity, noteparkComfyVehicle, parkComfyValid, parkComfyNote – need the ParkComfy schema extension (.ldf, OIDs under IANA PEN 67168)
Always readmemberOf, userAccountControl, accountExpires

Use LDAPS. Test connection checks the server, the service account, every mapped attribute and the groups. Synchronization runs every 24 hours by default (5 minutes to 24 hours); Sync now runs it at once, and the last result and next run are shown.

AD permits and “All permits” zonesImported permits are valid permits. Where it matters, use “Selected groups and permits” in the zone.

18. API integration

Settings › Security › API integration lets other systems – reporting, a VMS, a SIEM – read data from ParkComfy. The API is read-only: nothing can be changed through it. It is off until an Axis administrator switches it on.

How the data is protected

Adding a client

  1. Have the CA certificate in the camera’s CA store, and a client certificate issued by it (EC P-256 / P-384 or RSA 2048+; key usage digital signature; extended key usage, if present, client authentication).
  2. Switch API access on.
  3. Add client: name, the certificate (paste or choose the file – the page shows at once whether it is accepted), the data, the zones, the allowed IP addresses, an optional end date.
  4. Give the developers the address, the public signing key (PEM or JWKS) and the example client.

For developers

Address: https://<camera>/local/parkcomfy/app/api/v1/<endpoint> – GET only.

EndpointData (scope)Parameters
infoapp, version, camera, the client’s own rights (any client)–
zoneszones with capacity, parked vehicles, free spaces (Currently parked)–
parkedvehicles parked now (Currently parked)zone
applogplate reads and manual openings (App log)from to fromt tot zone res q limit offset after – after=<lastId> returns the newer entries, oldest first, for regular polling
statsoccupancy, entries, stays per day and 15 minutes (Statistics)from to (YYYY-MM-DD)
permitsall permits with validity and state (Permits)–
syslogSystem log (System log)from to q limit offset

Request – header X-API-Token: <JWT> (or Authorization: Bearer), a JWS signed with the client’s private key:

header  {"alg": "ES256" | "ES384" | "RS256" | "PS256", "typ": "JWT", "x5t#S256": base64url(SHA-256 of the certificate, DER)}
payload {"aud": "parkcomfy", "iat": now, "exp": now + 60 (at most 300), "jti": "<unique>",
         "htm": "GET", "htu": "/v1/applog", "qsh": base64url(SHA-256 of the raw query string)}

Answer – application/jose: a JWE for the client’s key (ECDH-ES for EC, RSA-OAEP-256 for RSA; A256GCM). Its content is a JWT signed by the installation (ES256): {"iss": "parkcomfy:<serial>", "aud": "<x5t#S256 of the client>", "req": {"jti", "htu"}, "data": {…}}. Check the signature, and that req.jti is the jti of your request.

Errors are plain JSON {"error", "code"} and never hold data: api_off, no_token, bad_token, unknown_client, bad_signature, bad_alg, bad_claims, token_time, token_binding, replay, client_paused, client_expired, ip_refused, not_trusted, scope, rate.

The example client (Example client (Python) on the settings page; pip install jwcrypto) does all of this:

python3 parkcomfy_api_client.py --url https://192.168.0.90 --cert client.crt --key client.key \
    --cacert camera_https_ca.pem --sign-key parkcomfy_api_signing_key.pem  applog after=0 limit=500
ClocksThe tokens are short-lived: the camera and the client system must take their time from NTP.

19. Axis events

ParkComfy reports what happens as events of the camera it runs on. A VMS such as Milestone XProtect, or an event rule of the camera (System › Events in the camera web interface), can react to them: raise an alarm, start a recording, switch an output, send a notification. The events are set on Settings › Axis events.

Settings – Axis events
Each event can be switched off, and each change of an event can be switched on or off. The page lists the topic and the data fields of each event; Export saves the list, Test sends a test event.

How the events are built

Settings

On Settings › Axis events:

The events

EventChanges (State: ● = condition with Started / Ended)Data fields
ParkComfy - PlatesOne event for every plate read – with or without a permit – once for each zone it concerns, whatever the result. Test reads send none.Plate, Zone, Camera ID, Direction, Result, Cause, Details, Permit group, Holder, Corrected from
ParkComfy - PermitsUsed (a one-time permit let a vehicle in) · Expired · Expires soon · Inactive (no camera read it for the number of days set for inactive permits, see “Expired and inactive permits”) · Deleted · Added · Changed · Suspended · Resumed · Imported. Expired, Expires soon and Inactive are sent once for each permit.Change, Cause, Plate, Holder, Permit group, Validity, Zone, Actor, Details
ParkComfy - ZonesZone full ● · Zone almost full ● (zones with a capacity limit) · Zone closed ● (outside the opening hours)Change, State, Zone, Details
ParkComfy - GroupsGroup full ● (the group used all its spaces in a zone) · Group almost full ● · Group suspended · Group resumed · Members changed (permits moved into or out of the group)Change, State, Permit group, Zone, Actor, Details
ParkComfy - GatesOpened manually (on Gate control) · Locked ● (lockdown, for each gate) · Gate command failed (an I/O or network gate did not answer) · External system refused · No confirmation (external-confirmation gates)Change, State, Zone, Gate, Plate, User, Reason, Cause, Details
ParkComfy - VehiclesOverstay ● (a parked vehicle is over its limit) · Transit not completed ● (did not arrive in its target zone in time) · Removed by hand (from Currently parked) · Guest pass issued (a manual opening let a guest on to an inner zone)Change, State, Plate, Zone, Permit group, Holder, User, Details
ParkComfy - UsersSign-in refused · Account locked · Account unlocked · Address blocked · Registration request · Signed in · Session ended · User added · User deleted · Role changed · User disabled · User enabled · Password changed · API request refused (API integration)Change, Cause, User, Account, Role, IP address, Actor, Details
ParkComfy - ALPV camerasConnection broken ● · Heartbeat missing ● (two heartbeats in a row) · Clock difference ● (the clock of the ALPV camera differs from this camera) · Unknown sender (a push with a wrong token or from an unknown address; at most one a minute)Change, State, Camera ID, Details
ParkComfy - CertificatesExpires soon ● (within its warning period or expired; ends when it is replaced or removed; checked once a day)Change, State, Certificate, Device, Details
ParkComfy - SystemStarted (ParkComfy started) · License expires soon ● (7 days or less) · License expired ● (expired, not valid or no license) · Storage almost full ● (the storage warning level of Settings › Logs) · SD card problem ● (no SD card, or not encrypted – the internal storage is used) · Backup made · Configuration restored · ResetChange, State, Details

The state of a condition is checked every few seconds; a condition that is still true after ParkComfy restarts is sent again as Started.

Data fields and values

FieldValue
ChangeWhat happened – one of the changes listed above, or Test.
StateStarted or Ended for a condition (● above); empty otherwise.
PlateThe plate as read (after a plate correction, the corrected plate), capital letters and digits without spaces: ABC123. Gates – Opened manually: the plate typed by the user, or empty.
Corrected fromPlates: the plate as the camera read it, when a plate correction changed it; empty otherwise.
ZoneThe name of the zone: Main car park. Plates: one zone; when one camera serves two zones (the exit of one and the entry of the other), one event is sent for each. Transit not completed: the target zone. Permits – Used: the zone it was used in.
Camera IDThe Camera ID of the ALPV camera, as set on ALPV cameras: MAIN-IN.
DirectionPlates: Entry or Exit – how the zone took the read (by its entry or exit camera, the direction reported by ALPV, or by presence). Empty when the camera is not used by any zone.
ResultPlates: Allowed – may pass · Refused – the gate stays closed (see Cause) · Logged – the camera is not used by any zone, the read is only logged. Each event carries the result of its own zone.
Permit groupThe name of the permit group: Staff. Empty when the permit has no group.
HolderThe name on the permit (the company when there is no name). Empty for a vehicle without a permit.
ValidityPermits: Permanent, Period or One-time.
GateEntry or Exit.
UserGates and Vehicles: the user who opened the gate or removed the vehicle (e-mail of an app user, or the Axis account). Users: Name (e-mail), or the e-mail address or domain login that was typed when there is no such user; API request refused: the name of the API client.
AccountUsers: App user, Domain user or API client; empty when the user is unknown.
RoleUsers: the role of the user.
IP addressUsers: the address the request came from.
ActorWho made a change: the user or administrator (Permits, Groups, Users). Empty when ParkComfy did it by itself.
ReasonGates – Opened manually: the reason chosen: Visitor without permit, Delivery, Permit not recognised, Plate not readable, Emergency, Other.
CertificateThe subject (name) of the certificate.
DeviceWhere the certificate is used: This camera, a Camera ID, or the name of a server (e.g. an Active Directory server).
DetailsA readable text, the same as in the App log or System log: the full reason of a refusal, 118 / 120 vehicles, Valid until 2026-11-30, Expires in 12 days (2026-11-30)… For showing in an alarm – filter on Change and Cause instead. When a condition ends, Details says why (Connection restored, Released…).

Values of Cause

Event – ChangeCause
Plates (Result Refused)No permit – the plate is not in the permit list · Vehicle mismatch – the country, make, model or colour differs from the strong criteria of the permit · Not valid for this zone – the permit is limited to other zones · Not valid now – expired, not valid yet, or outside the entry time of the zone · Suspended – the permit or its group is suspended · Not allowed here – the zone admits other groups or permits only · Zone closed · Zone full · Group full · Lockdown. Empty when allowed.
Permits – DeletedBy a user · Expired – deleted automatically (automatic clean-up of expired permits) · Removed in Active Directory
Permits – Added, Changed…Active Directory when Active Directory made the change; empty otherwise.
Users – Sign-in refusedUnknown user · Wrong password · No password set · Waiting for approval · Account locked · Account disabled · Address blocked · Temporary password expired · No role · Role suspended · Outside the time profile · Time profile paused · IP address not allowed · Domain controller not reachable · Domain account not added. Unknown user, Wrong password and Address blocked are sent at most once a minute from one address.
Users – Account lockedFailed attempts · By administrator
Users – Account unlockedLockout time over · By administrator
Users – Address blockedToo many failed sign-ins
Users – Session endedSigned out · Inactivity · Maximum length reached · Ended by administrator
Users – Password changedBy the user · Reset by administrator · Temporary password issued
Users – API request refusedThe error code of the API answer (see chapter 18).

Examples

A vehicle may drive into a zone

Event ParkComfy - Plates with the filters Zone = Garage, Direction = Entry, Result = Allowed. Add Camera ID to pick one lane. It covers vehicles with and without a permit (“Any vehicle” zones); a manual opening gives Gates – Opened manually instead. The event tells the decision – where an external system opens the gate, the vehicle may still not drive in.

Unknown plate at the main entrance

Event ParkComfy - Plates, Camera ID = MAIN-IN, Cause = No permit. Show Plate in the alarm.

Possible false plate – alarm in the VMS

Event ParkComfy - Plates, Cause = Vehicle mismatch. Show Plate, Camera ID, Holder and Details in the alarm.

“Full” sign at the entrance

Event ParkComfy - Zones, Change = Zone full, Zone = Main car park. Rule 1: State = Started → turn the output of the sign on. Rule 2: State = Ended → turn it off. (A camera rule set to “while the condition is true” can do it with one rule.)

A group used all its spaces

Event ParkComfy - Groups, Change = Group full, State = Started, Permit group = Visitors → notify the reception.

Emergency opening

Event ParkComfy - Gates, Change = Opened manually, Reason = Emergency → notify the security manager; Zone, Gate and User tell who opened which gate.

A gate did not open

Event ParkComfy - Gates, Change = Gate command failed → alarm to maintenance; Details tells the error.

Staff over the limit

Event ParkComfy - Vehicles, Change = Overstay, State = Started, Permit group = Staff.

One-time visitor permit used

Event ParkComfy - Permits, Change = Used → notify the host; Holder and Zone tell who arrived where.

Sign-in from a wrong address or at a wrong time

Event ParkComfy - Users, Change = Sign-in refused, Cause = IP address not allowed (or Outside the time profile). Show User and IP address in the alarm. For possible password guessing use Change = Address blocked or Account locked.

ALPV camera offline

Event ParkComfy - ALPV cameras, Change = Connection broken, State = Started → alarm; State = Ended → close it.

License or storage problems

Event ParkComfy - System, State = Started → e-mail to the administrator; Change and Details tell what to do.

20. Settings

Settings are available to Axis administrators.

PageContents
IdentificationInstallation name and how the camera and its data are named.
Date and timeDate and time format of the app (the camera clock is always used).
LanguagesDisplay language, fallback language, custom languages (editor or language package), user guide of each built-in language.
User interfaceAccess to the app interface, self-registration, message while unavailable.
Privacy noticeThe notice shown to app users – or a link to your own page. Mention that plates, names, phone numbers and e-mail addresses are processed.
SecurityPassword policy (follows the camera), sign-in and sessions (lockout, inactivity, maximum length, IP addresses, Active Directory), API integration (see chapter 18), certificates (trusted CAs, certificate checks, HTTP to cameras).
Axis eventsSee chapter 19. Ten events declared on the camera for a VMS (e.g. Milestone XProtect) or camera event rules – Plates, Permits, Zones, Groups, Gates, Vehicles, Users, ALPV cameras, Certificates, System. Each event and each of its changes can be switched on or off; the almost-full percentage and the expires-soon days are set here.
LogsHow long the App log, System log and statistics are kept; plate and vehicle images; storage warning.
DiagnosticsMetadata monitor (reads as they arrive), test read, simulation with virtual cameras and generated vehicles (dry run keeps gates closed), diagnostic recording.
MaintenanceBackups and reset – see the next chapter.
Diagnostics – Metadata monitor

21. Maintenance and backups

Maintenance page
BackupContentsUse
Full backupEverything: configuration, parked vehicles, App log, System log, statistics, users and stored passwords – optionally the images.Complete copy; moving the app to another camera.
Configuration backupZones, cameras, permits, corrections, rules, users, roles, time profiles, settings, custom languages, stored passwords. No logs, statistics or parked vehicles.Copying a setup to another site.

Both files are always encrypted with a password you choose (following the password policy). The password cannot be recovered – keep it safe.

Restoring: the file is uploaded and checked first; a summary shows what it contains. If the backup was made on another camera, ParkComfy says so and lists what to check afterwards (license stays with this camera, ALPV push to be set up again, I/O gates, network gates, Axis event rules). You can still cancel. The current data is kept in a before-restore folder.

Never run two cameras with the same dataAfter moving the app, stop or uninstall ParkComfy on the old camera – otherwise both open the gates and count the vehicles.

Reset returns the app to its state after installation. The camera’s own settings and the license are kept.

Removing ParkComfy

ParkComfy keeps its data in the camera’s internal storage, or – when an encrypted SD card is set up – on the SD card. Removing the app deletes its folder in the internal storage, but not its data on the SD card. The key of the stored passwords is always kept in the internal storage, so it is removed with the app.

When ParkComfy is removed for good, or the camera goes to another site, delete its data as well – in one of these ways:

Make a full backup first if the data may be needed again.

Installing again: data of an earlier installation found

If ParkComfy is installed again and finds the data of an earlier installation on the SD card, an Axis administrator is asked when opening the admin pages (the System log records it as well):

Until a choice is made (Decide later), ParkComfy asks again next time. Meanwhile it works with the data found only with a full license; with a trial license or without a license it does not process plate reads or open gates.

The stored passwords cannot be read on any other camera, as their key never leaves the camera that made them; the rest of the data on the card is protected by the encryption of the SD card.

22. Status and license

License card on the Status page

The Status page shows the license, the device, resources and storage, the app, the time sync and the signed-in users. Install license loads a license file; License details shows its data and history.

Licenses

ParkComfy needs a license file. It is bound to the serial number of the camera that runs ParkComfy (shown on the Status page) and cannot be used on another camera.

LicenseValid
Trial licenseFree, every feature, 60 days from the day it was issued (the issue day is day 1). Request it at www.parkcomfy.com with your e-mail address and the serial number of the camera – the license file arrives by e-mail at once. Install license on the Status page opens the request page with the serial number filled in. One trial license per camera; installing the app again does not extend it.
Full licenseWithout an end date, or until the date in the license.

Without a valid license – none installed, the trial or the license expired – the pages stay available, but ParkComfy does not process plate reads or open gates. A banner on the admin pages and the Axis event System – License expired tell this; License expires soon warns 7 days before the end.

License agreement. ParkComfy is used under its End User License Agreement. It binds the end user of the camera (the Licensee) – also when a system integrator installs, configures or operates ParkComfy on the end user’s behalf. When the admin pages are opened for the first time, an Axis administrator accepts it (as the end user, or as its contractor); the acceptance is recorded in the System log. The agreement and the third-party notices (open-source components) are always available on the Status page.

Camera time. A license with an end date is checked against the latest camera time ParkComfy has seen, so setting the clock back does not extend it. If the clock is set back by more than a day, or is earlier than the issue date of the license, the license is not accepted until the correct time is set.

23. Troubleshooting

SymptomCheck
“ParkComfy is not ready yet”AXIS OS 12.9 or later and a password policy (Length or Complexity) on the camera. The page checks again every 30 seconds.
No reads arriveALPV cameras › Event delivery and Test; Diagnostics › Metadata monitor; the ALPV push profile and its HTTPS setting; the camera is not paused.
A permitted vehicle is refusedThe App log row says why: permit not valid now, outside the entry time or opening hours, zone full, group full, vehicle mismatch, lockdown. The plate may be read wrongly – add a plate correction.
The gate does not openParking zones › gate › Test gate; the output port and its active state; the HTTP address; Lockdown.
Camera clock differsSet all cameras to the same NTP server.
Domain user cannot sign inThe account must be added on Users and have a role; AD Test connection; LDAPS certificate trusted.
An Axis event rule does not fireThe event and the change are switched on in Settings › Axis events (some changes are off by default); the filter values are written exactly as in ParkComfy (Change values, zone and group names, Camera ID, plate in capitals without spaces); a condition rule filters on State = Started. Plates is not sent for test reads. Use Test to try the rule; the Diagnostics recording lists the events that were sent.
Settings are still there after the app was removed and installed againThe data was on the SD card – removing the app does not delete it. Choose Keep the data or Start clean in the question on the admin pages; see Removing ParkComfy.
Storage warningShorter retention or no images in Settings › Logs; use an encrypted SD card.

ParkComfy · © Attila Kalcsó · Axis, AXIS OS and AXIS License Plate Verifier are trademarks of Axis AB.