Access Control Plugin
This plugin lets you manage an access control installation with IonoPi (with any Wiegand keypad/card-reader) and/or Hidedgesolo modules. Before using the plugin, configure all the needed I/O Servers and make sure they all communicate correctly with HSYCO. No user configuration will be needed on HID devices since the access rules are stored and managed by HSYCO. To view the access control interface, go to the URL of the "access" project on your server; for instance:
https://192.168.1.50/hsycoserver/access
From the main page, you can access the different sections:

Configuration
To configure the installation, go to the configuration page by clicking on the icon in the bottom-right corner.

This page lists all the defined areas and the detected modules.
Areas
An area represents a set of modules (doors) that share the same access rules. To create a new area, press the "+" button and provide a unique name. You can assign a camera to an area. To edit, remove, disable, or re-enable an area, click on the corresponding entry in the list. Disabling an area means temporarily blocking access to all users to all the doors belonging to the area, until re-enabled. If an area is not enabled, the corresponding entry in the list will be grayed out.
Modules
All the detected modules are shown in this list. If an entry appears in red, it means that HSYCO cannot connect to the module. Clicking on an entry in the list allows you to access and edit its configuration:
-
ID: the ID assigned to the corresponding I/O Server. Cannot be modified.
-
Enabled: if unchecked, the module is disabled.
-
Stand-alone: (only Iono Pi modules) check this option to save the access rules and the entire I/O configuration on the module itself so that it will continue working even if not connected to HSYCO.
-
Type:
- Single: This module controls a single door with a single keypad.
- Entrance/Exit: This module controls a single door with two keypads, one for entrance and one for exit.
- Two doors: This module has two keypads controlling two different doors.
- Programmer: This module will not be used to control an entrance; instead, it will be used by the application as a card reader to assign cards to users.
- Two Programmers: This module is connected to two readers used as programmers. Depending on the type, for each door assign a descriptive name and an area the door belongs to, and for each reader specify its mode:
-
Card: users only use cards to access from this reader.
-
Pin: users only use pin codes to access from this reader.
-
Card and Pin: users use cards in combination with pin codes to access from this reader.
-
Card or Pin: users use cards or pin codes to access from this reader. You can assign a camera to each door of the module.
Iono Pi I/O Configuration
You can configure inputs (digital and analog) and open collectors on Iono Pi module as follows:
in: grant access: when the corresponding input is high (or low, if inverted), the door associated with that input will be granted.in: door contact: used to associate a door contact sensor to an input. You can associate a door alarm timeout to the corresponding door (the alarm timeout use is explained in the section Iono Pi Alarms).out: led(only for open collectors): used to command a LED with the corresponding open collector. You can set the door open timeout (this will affect the opening time of the relays to which doors are associated). If you configure an input (digital or analog) asin: door contact, you can set a door alarm timeout. When this timeout expires, HSYCO will generate the alarm Alarm door left open. If you flag the option Clock sync (available only in standalone mode), Iono Pi will synchronize its date/time with HSYCO.
Example of Iono Pi module configuration.
Iono Pi Alarms
If you have configured an input (digital or analog) on the Iono Pi module as in: door contact, HSYCO can generate two types of alarms:
- Alarm door forced: generated when the corresponding door is opened without being granted.
- Alarm door left open: generated when the door alarm timeout is set. If the corresponding door is opened (after being granted), it must be closed before the timeout expires, or HSYCO will generate this alarm. These alarms are written in the logs and generate USER events as reported in the section Events.
System access
The System Users and Permissions buttons allow you to manage the system users who will use the access control application and specify which functionalities to allow/deny to each user.
Installation settings
The Facility code can be set to the facility code of the used cards or to 0 to disable facility code checking; useful in case cards with different facility codes are used in the same installation. The Max delay between card and pin option allows you to specify how much time can elapse between the reading of a card and the inputting of the pin code for readers with the "Card and Pin" typology. The Camera recording time option allows you to specify the recording time (in seconds) of all cameras. This value can't be less than 5 seconds; by default, it is 10 seconds.
Backup
The Backup button gives access to the list of previously saved backups and allows creating a backup of the current configuration.
User Groups
This page lists all defined user groups and their access rules.
To create a new group, click on the "+" button at the bottom of the list. Set a descriptive name, select the areas accessible by this group, and specify the daily schedules.
The Enabled option, if unchecked, disables access for all users belonging to this group.
The Special dates link takes you to a page where you can define exceptional dates on which the access rules are different from the daily schedules set in the user groups page. Each rule will be applied only to the groups selected in the corresponding field. For the groups not selected, the normal daily schedule will apply.

Users
This page lists the users of the facility, divided by groups. Select a user group to see the users belonging to it.
To add a user, select the user group to add it to and click on the "+" button. Then, enter the user name, optionally add a start and/or end date for the user to be active, and specify the corresponding card number and/or pin code. If programmer modules are available, it will be possible to use them to read the card numbers.
Unchecking the Enabled option will deny access for the user to all areas until re-enabled.
To permanently remove a user, select the corresponding entry in the list, click on the "-" button, and confirm the operation.
Doors status
This section lists all the detected doors connected to the system. Select an entry to check its status or to send commands.
An open door will be yellow in the list, while doors with active alarms will be red.
If a camera is set for the specified door, the corresponding live view of that camera is shown. If a camera is not set for the specified door, but a camera is set for the corresponding area, the live view of that camera will be shown.
Camera recordings
In the configuration page, you can assign cameras to areas and/or doors. If a camera is assigned to a specified door, a video will be recorded for every access attempt on that door. If there's no camera assigned to a specific door, but a camera is assigned to an area, then for every access attempt on each door associated with that area, a video will be recorded.
Logs
This page shows the last 1000 system events. If an event was recorded by a camera, a white symbol of a camera appears near the date, and you can click on that event to open a popup showing the recorded video.
You can filter the entries by clicking on the magnifier icon and setting the desired criteria.
The result entries can be exported via email.
Log entries are also permanently saved in CSV format in files contained in the directory
Events
The application generates USER events that can be used to add custom logic to access events.
When a user is granted access, the following USER events are triggered:
access.granted.door.<module_id> = <group_name>
access.granted.area.<area_name> = <group_name>
When a user is denied access, the following USER events are triggered:
access.denied.door.<module_id> = <group_name_if_available_or_empty_string>
access.denied.area.<area_name> = <group_name_if_available_or_empty_string>
When HSYCO generates the alarm "Alarm door forced", the following USER events are triggered:
access.alarm.<module_id>.<1,2> =
access.alarm.<area_name> =
When HSYCO generates the alarm "Alarm door left open", the following USER events are triggered:
access.alarm.<module_id>.<1,2> =
access.alarm.<area_name> =
When a user's start date/time occurs, HSYCO will generate:
access.user.startperiod = <user_name>
When a user's end date/time occurs, HSYCO will generate:
access.user.endperiod = <user_name>
USER Commands
You can generate custom logs for Access Control with:
USER "acsctrl.customlog" = "<door_name>;<area_name>;"
To manually grant access to a door:
USER "acsctrl.manualgrant" = "<module_name>.<door_number>"
To simulate input status changes (not available in standalone mode):
USER "acsctrl.iomock.<module_id>.<di4,di5,di6,ai1,ai2>" = <0,1,analog_value>
To simulate Wiegand reader events (not available in standalone mode):
// If "wiegandbits" is set to false:
USER "acsctrl.readermock.<module_id>.wiegand.<1,2>" = ""
// If "wiegandbits" is set to true:
USER "acsctrl.readermock.<module_id>.wiegand.<1,2>" = "/"
To enable/disable a user programmatically:
USER "acsctrl.user.<user_id>" = "<0,1>"
Where:
"1"enables the user"0"disables the user
Status Variables
When HSYCO generates the "Alarm door forced" alarm:
$access.alarm.forced.<module_id>. = <0,1>
$access.alarm.forced.<area_name>. = <0,1>
When HSYCO generates the "Alarm door held" alarm:
$access.alarm.held.<module_id>. = <0,1>
$access.alarm.held.<area_name>. = <0,1>
Control Variables
You can disable groups programmatically by setting the following variable to '0':
$access.group.<group_name>.enabled = 0
- Replace
<group_name>with the name of the group (case-insensitive), replacing spaces with underscores (_).
Example
To disable a group named "My Group": $access.group.my_group.enabled = 0
Any value other than '0' will be ignored.