uhppoted / uhppote-cli

Go CLI for the UHPPOTE UT0311 TCP/IP access controller boards
MIT License
8 stars 4 forks source link
access-control uhppote

build

uhppote-cli

CLI for the UHPPOTE UT0311-L0x TCP/IP Wiegand access control boards.

Supported operating systems:

Raison d'être

The CLI provides a cross-platform set of command-line functions that allow direct interaction with a UHPPOTE access controller, as well as facilitating scripting for automation of routine tasks e.g. synchronizing controller system time across daylight savings changes.

Release Notes

Current Release

v0.8.9 - 2024-09-06

  1. Added TCP/IP support.
  2. Changed default controller timezone from UTC to Local.
  3. Updated to Go 1.23.

Installation

An archive containing executables for all the supported operating systems can be downloaded from the releases page. Alternatively, operating system specific tarballs can be found in the uhppoted releases.

Installation is straightforward - download the archive and extract it to a directory of your choice and place the executable in a directory in your PATH.

uhppoted.conf

By default, uhppote-cli uses the communal uhppoted.conf configuration file shared by all the uhppoted project modules which is (or will eventually be) documented in uhppoted.

A valid configuration file is required only for system configurations where controllers are not findable on the local LAN (i.e. cannot receive and reply to UDP broadcasts) or for use with the ACL commands which do require a valid uhppoted.conf to resolve the door ID to controller + door number. For device commands the configuration file will used if present otherwise the internal default configuration will be used.

An alternative configuration file can be specified with the --config command line option, e.g.:

uhppote-cli --config ./uhppote.mine get-device 4726234734

A sample uhppoted.conf file is included in the uhppoted distribution.

Building from source

Assuming you have Go and make installed:

git clone https://github.com/uhppoted/uhppote-cli.git
cd uhppote-cli
make build

If you prefer not to use make:

git clone https://github.com/uhppoted/uhppote-cli.git
cd uhppote-cli
mkdir bin
go build -trimpath -o bin ./...

The above commands build the uhppote-cli executable to the bin directory.

uhppote-cli

Usage: uhppote-cli [options] <command> <parameters>

General_ commands:

Device commands:

ACL commands:

Command options:

  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

   ./uhppote-cli --debug --config ./uhppoted.local get-time 4156216363

General

help

Displays the usage information and a list of available commands. Command specific help displays the detailed usage for that command.

uhppote-cli help

  Examples:

  uhppote-cli help
  uhppote-cli help set-time

version

Displays the current application version.

uhppote-cli version

  Example:

  uhppote-cli version

Device commands

The device commands provide low level access to the device functionality for a single UHPPOTE controller. Commands that require a device ID accept either the controller serial number or the controller name if defined defined in the uhppoted.conf file e.g.

uhppote-cli get-device 405419896
uhppote-cli get-device alpha

Controller names are not case sensitive but should be enclosed in quotes if they contain spaces.

get-devices

Retrieves a list of the controllers accessible on the local LAN (i.e. can receive and respond to UDP broadcasts). The command returns a fixed width columnar table with:

get-device

Retrieves the controller information for a single controller accessible on the local LAN (i.e. can receive and respond to UDP broadcasts) or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns a fixed width columnar table with:

set-address

Sets the controller IP address.

uhppote-cli [options] set-address <device> <address> [mask] [gateway]

  <device>      (required) Controller serial number
  <address>     (required) IP address assigned to controller
  <mask>        (optional) Subnet mask. Defaults to 255.255.255.0 if not provided.
  <gateway>     (optional) Gateway IP address. Defaults to 0.0.0.0 if not provided.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the controllers

  Example:

  uhppote-cli set-address 405419896 192.168.1.49 255.255.255.0 192.168.1.1

get-time

Retrieves the current date/time for a single controller accessible on either the local LAN or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns a fixed width columnar table with:

set-time

Sets the current date/time for a single controller accessible on either the local LAN or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns a fixed width columnar table with:

get-door-delay

Retrieves the current door delay setting (open duration) for a single controller accessible on either the local LAN or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns a fixed width columnar table with:

set-door-delay

Sets the door delay setting (open duration) for a single controller accessible on either the local LAN or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns a fixed width columnar table with:

get-door-control

Retrieves the current door control setting for a single controller accessible on either the local LAN or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns a fixed width columnar table with:

set-door-control

sets the current door control setting for a single controller accessible on either the local LAN or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns a fixed width columnar table with:

get-listener

Retrieves the current IP address + port assigned to receive event notifications from a controller. The command returns a fixed width columnar table with:

set-listener

Sets the IPv4 address:port to which to send event notifications. The command returns a fixed width columnar table with:

record-special-events

Enables or disables events for door open, door closed and door button pressed for a single controller accessible on either the local LAN or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns the result as a fixed width columnar table with:

uhppote-cli [options] record-special-events <device> <enable>

  <device>      (required) Controller serial number
  <enable>      (optional) Enables or disables door open, closed and button pressed events. Defaults to `true`

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:
  > uhppote-cli record-special-events 405419896 false
    405419896  true

get-status

Retrieves the controller status for a single controller accessible on the local LAN (i.e. can receive and respond to UDP broadcasts) or configured in the communal uhppoted.conf configuration (or custom configuration, if specified). The command returns a fixed width columnar table with:

uhppote-cli [options] get-status <device>

  <device>      (required) Controller serial number

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli get-status 405419896

  405419896  false false false false false false false false 0    2021-04-24 09:11:17 0          0 00 00 | 69    2   true  1 1     0          2019-08-10 10:28:32 44

NOTE The event fields are separated from the static data by a '|' and are not displayed if the controller does not have a valid 'last event'.

get-cards

Retrieves all access card records from a controller. A card record comprises:

get-card

Retrieves a single access card record from a controller. A card record comprises:

The keypad PIN is only displayed if the PIN is in the valid range (1 to 999999).

uhppote-cli [options] get-card <device ID> <card number>

  <device ID>   (required) Controller serial number (or name)
  <card number> (required) Card number of card to be retrieved

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli get-card 405419896 8165538

  8165538  2021-01-01 2021-12-31 Y N Y 29 7531

put-card

Creates (or updates) an access card record on a controller, with the following information:

delete-card

Unconditionally deletes an access card record from a controller, returning true if successful.

uhppote-cli [options] delete-card <device ID> <card number>

  <device ID>   (required) Controller serial number (or name)
  <card number> (required) Card number of card to be deleted

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli delete-card 405419896 8165538

  405419896 8165538 true

delete-all

Unconditionally deletes all cards from a controller, returning true if successful.

uhppote-cli [options] delete-all <device ID>

  <device ID>   (required) Controller serial number (or name)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli delete-all 405419896
  405419896 true

get-time-profile

Retrieves a time profile from a controller, returning a (space delimited) time profile:

set-time-profile

Creates (or updates) a controller time profile. A time profile comprises the following information:

clear-time-profiles

Deletes all time profiles from a controller.

uhppote-cli [options] clear-time-profiles <device ID>

  <device ID>   (required) Controller serial number (or name)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli clear-time-profiles 405419896
  405419896 true

NOTES

  1. Clearing all time profiles will allow access at any time of day to cards that were previously time managed. In general this command is intended to be used when redefining all the time profiles.

get-time-profiles

Retrieves all time profiles from a controller, optionally storing them in a TSV file.

uhppote-cli [options] get-time-profiles <device ID> <TSV>

  <device ID>   (required) Controller serial number (or name)
  <TSV>         (optional) TSV file to which to write retrieved profiles.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli get-time-profiles 405419896

  -------------------------------------------
  TIME PROFILES 405419896 2021-05-13 10:36:21
  -------------------------------------------
  Profile  From       To          Mon Tue Wed Thurs Fri Sat Sun  Start1 End1   Start2 End2   Start3 End3   Linked
  2        2021-04-01 2021-10-29  N   Y   N   N     Y   N   Y    08:30  11:30  00:00  03:00  13:45  17:00  3  
  3        2021-04-02 2021-11-30  N   N   Y   N     Y   Y   Y    09:31  11:31  01:00  04:00  13:46  17:01     
  29       2021-04-03 2021-12-31  N   N   N   Y     N   Y   Y    10:32  11:32  02:00  05:00  13:47  17:02     
  75       2021-04-01 2021-12-31  Y   N   Y   N     Y   N   N    08:30  11:30  00:00  00:00  13:45  17:00     

  uhppote-cli get-time-profiles 405419896 405419896.tsv

set-time-profiles

Creates (or updates) time profiles on a controller from a TSV file.

Invalid time profiles (e.g. with missing or otherwise invalid from and to dates or invalid segments) are ignored with a warning. Likewise, time profiles that link to an undefined time profile or time profiles with a linked profile that would create a circular chain are ignored with a warning.

uhppote-cli [options] set-time-profiles <device ID> <TSV>

  <device ID>   (required) Controller serial number (or name)
  <TSV>         (required) TSV file with the time profiles to be created (or updated)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Sample TSV file format:

Profile From        To          Mon Tue Wed Thurs Fri Sat Sun Start1  End1   Start2  End2  Start3  End3  Linked
2       2021-04-01  2021-10-29  N   Y   N    N    Y   N   Y   08:30   11:30  00:00   03:00 13:45   17:00 3
3       2021-04-02  2021-11-30  N   N   Y    N    Y   Y   Y   09:31   11:31  01:00   04:00 13:46   17:01 
29      2021-04-03  2021-12-31  N   N   N    Y    N   Y   Y   10:32   11:32  02:00   05:00 13:47   17:02 
75      2021-04-01  2021-12-31  Y   N   Y    N    Y   N   N   08:30   11:30  00:00   00:00 13:45   17:00 
100     2021-04-01  2021-12-31  Y   N   Y    N    Y   N   N   08:30   11:30  00:00   00:00 13:45   17:00 
101     2021-04-01  2021-10-29  N   Y   N    N    Y   N   Y   08:30   11:30  00:00   03:00 13:45   17:00 102

  Example:

  uhppote-cli set-time-profiles 405419896 405419896.tsv

  ./bin/uhppote-cli set-time-profiles 405419896 405419896.tsv
   ... set time profile 3
   ... set time profile 29
   ... set time profile 105
   ... set time profile 2

   WARN  profile 51  - linked time profile 50 is not defined
   WARN  profile 75  - linking to time profile 75 creates a circular reference [75 75]
   WARN  profile 150 - 'To' date (2021-04-01) is before 'From' date (2021-12-31)
   WARN  profile 151 - segment 1 'End' (09:31) is before 'Start' (11:31)  

NOTES

  1. set-time-profiles does not clear existing time profiles from the controller i.e. although not recommended, profiles in the file can link to individually defined existing profiles.
  2. There is no requirement for the profiles to be in any particular order e.g. uhppote-cli is capable of creating a time profile that is linked to a profile that is defined after it in the TSV file.

clear-task-list

Deletes all defined tasks from a controller.

uhppote-cli [options] clear-task-list <device ID>

  <device ID>   (required) Controller serial number (or name)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli clear-task-list 405419896
  405419896 true

refresh-task-list

Activates all tasks created by add-task.

uhppote-cli [options] refresh-task-list <device ID>

  <device ID>   (required) Controller serial number (or name)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli refresh-task-list 405419896
  405419896 true

add-task

Create a new task on the controller. The task will only be activated after invoking refresh-task-list. A task definition comprises:

uhppote-cli [options] add-task <device ID> <task> <door> <from:to> <days> <start> <cards>

  <device ID>   (required) Controller serial number (or name)
  <task>        (required) Task ID or name, corresponding to one of the predefined operations
                           listed below
  <door>        (required) Door ID [1..4] to which the operation applies.
  <from:to>     (required) Start and end dates between which the task is active, formatted as YYYY-mm-dd:YYYY-mm-dd
  <weekdays>    (optional) Comma separated list of weekdays for which the task is active. Defaults to 'all' if omitted.
  <start>       (optional) Time from which task is active, formatted as HH:mm. Defaults to 00:00 if omitted.
  <cards>       (optional) Number of 'more cards' for the 'enable more cards' operation.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Tasks: 
    1   control door
    2   unlock door
    3   lock door
    4   disable time profile
    5   enable time profile
    6   enable card, no password
    7   enable card+IN password
    8   enable card+password
    9   enable more cards
    10  disable more cards
    11  trigger once
    12  disable pushbutton
    13  enable pushbutton

  Example:

  uhppote-cli add-task 405419896 3 4 2021-01-01:2021-12-31 Mon,Fri 08:30
  405419896 true

  uhppote-cli add-task 405419896 'enable more cards' 4 2021-01-01:2021-12-31 Mon,Fri 08:30 29
  405419896 true

set-task-list

Sets the task list on a controller from a TSV file. The command clears the active task list, adds all tasks defined in the TSV file and then invokes refresh-task-list to activate the added tasks.

uhppote-cli [options] set-task-list <device ID> <file>

  <device ID>   (required) Controller serial number (or name)
  <file>        (required) TSV containing the task list for the controller

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Sample TSV file format:

   Task               Door  From        To          Mon Tue Wed Thurs Fri Sat Sun Start Cards
   1                  3     2021-04-01  2021-10-29  N   Y   N    N    Y   N   Y   08:30 0
   disable pushbutton 3     2021-04-02  2021-11-30  N   N   Y    N    Y   Y   Y   09:45 0
   8                  3     2021-04-03  2021-12-31  N   N   N    Y    N   Y   Y   10:15 29

  Example:

  uhppote-cli set-task-list 405419896 405419896.tasks

  ./bin/uhppote-cli set-task-list 405419896 405419896.tasks
   ... 405419896 cleared task list
   ... created task defintion 1
   ... created task defintion 2
   ... created task defintion 3
   ... 405419896 refreshed task list

get-events

Retrieves the start and end range of the events stored on a controller as well as the current event index.

uhppote-cli [options] get-events <device ID>

  <device ID>   (required) Controller serial number (or name)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli get-events 405419896
    405419896  1  69 53

  > uhppote-cli get-events 303986753
    303986753  NO EVENTS

get-event

Retrieves the record for a single event from a controller, comprising:

The event ID should be within the event range returned by get-events.

uhppote-cli [options] get-event <device ID> <event ID>

  <device ID>   (required) Controller serial number (or name)
  <event ID>    (optional) ID of event to be retrieved. If omitted, the event at the current event index is returned 
                           and the event index is incremented. `first`, `last`, `current` and `next` retrieve the 
                           _first_, _last_, _current_ and _next_ stored events respectively. The controller _current event
                           index_ is only incremented for `next`.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli get-event 405419896
    405419896  25     2019-07-24 20:12:40 98765432 3 true  0 

  > uhppote-cli get-event 405419896 27
    405419896  27     2019-07-24 20:12:47 98765432 3 true  0     

  > uhppote-cli get-event 405419896 first
    405419896  23      2019-07-24 20:12:33 98765432 3 true  0     

  > uhppote-cli get-event 405419896 last
    405419896  67     2019-07-24 20:12:43 98765432 4 false 6     

  > uhppote-cli get-event 405419896 current
    405419896  24     2019-07-24 20:12:43 98765432 4 false 6     

  > uhppote-cli get-event 405419896 next
    405419896  25     2019-07-24 20:12:43 98765432 4 false 6     

  > uhppote-cli get-event 405419896 17263
    ERROR: 405419896:  no event at index 17263

  > uhppote-cli get-event 405419896 17263 17
    ERROR: 405419896:  event at index has been overwritten

get-event-index

Retrieves the current event index from a controller. The event index is a convenient user value that is typically used to store the ID of the most recently retrieved event.

uhppote-cli [options] get-event-index <device ID>

  <device ID>   (required) Controller serial number (or name)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli get-event-index 405419896
    405419896  24

set-event-index

Sets the current event index on a controller. The event index is a convenient user value that is typically used to store the ID of the most recently retrieved event. It is not automatically managed by the controller.

uhppote-cli [options] set-event-index <device ID> <index>

  <device ID>   (required) Controller serial number (or name)
  <index>       (required) ID of event to set as the event index.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --debug       Displays verbose debugging information, in particular the communications with the  controllers

  Examples:
  > uhppote-cli set-event-index 405419896 19
    405419896  19       true

open

Unconditionally unlocks a door, provided the door control state is controlled i.e. not normally open or normally closed.

uhppote-cli [options] open <device ID> <door>

  <device ID>   (required) Controller serial number (or name)
  <door>        (required) ID of door to unlock ([1..4])

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli open 405419896 3
    405419896  true

set-pc-control

Enables or disables remote host access control.

If remote host access control is enabled, the access controller expects the host to communicate at least once every 30 seconds otherwise it reverts to local control of access using the stored list of cards (the communication is not required to be a 'set-pc-control' command - any command is sufficient). If the access controller has reverted to local control because no message has been received from the host for more than 30 seconds, any subsequent communication from the remote host will re-establish remote control mode again.

uhppote-cli [options] set-pc-control <device ID> <enable>

  <device ID>   (required) Controller serial number (or name)
  <enable>      (optional) Enables remote access control if `true`, disables it otherwise. Defaults to `true`.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli set-pc-control 405419896
    405419896  true

  > uhppote-cli set-pc-control 405419896 true
    405419896  true

  > uhppote-cli set-pc-control 405419896 false
    405419896  false

set-interlock

Sets the controller door interlock mode.

The door interlock prevents a door from opening unless the interlock condition is valid for that door. The controllers support the following modes:

Mode Description
none Any door can opened subject to access restrictions
1&2 Door 1 can be opened if door 2 is closed and vice versa
3&4 Door 3 can be opened if door 4 is closed and vice versa
1&2,3&4 Door 1 can be opened if door 2 is closed and vice versa, Door 3 can be opened if door 4 is closed and vice versa
1&2&3 Door 1 can be opened if 2 and 3 are both closed, door 2 if 1 and 3 are closed and door 3 if 1 and 2 are closed
1&2&3&4 A door can only be opened if all the other doors are closed
uhppote-cli [options] set-interlock <controller ID> <interlock>

  <controller ID> (required) Controller serial number (or name)
  <interlock>     (required) Sets the controller interlock mode. Valid values are:
                  - none
                  - 1&2
                  - 3&4
                  - 1&2,3&4
                  - 1&2&3
                  - 1&2&3&4

                  Because the ampersand (&) is a special character the interlock needs to be enclosed in quotes
                  e.g. uhppote-cli set-interlock 405419896 '1&2,3&4'

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli set-interlock 405419896 '1&2,3&4'
    405419896  set interlock 1&2,3&4

  > uhppote-cli set-interlock 405419896 none
    405419896  set interlock none

activate-keypads

Activates (or deactivates) the reader access keypads for a controller.

uhppote-cli [options] activate-keypads <controller-id> <readers>

  <controller-id> (required) Controller serial number (or name)
  <readers>       (required) Comma seperated list of readers for which access keypads should be activated.
                  Unlisted reader keypads are automatically deactivated i.e. if no readers are listed then
                  all access keypads are deactivated.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli activate-keypads 405419896 1,2,4
    405419896  activated keypads 1,2,4

  > uhppote-cli activate-keypads 405419896
    405419896  activated keypads (none)

set-super-passwords

Sets the super passwords that allow keypad only access for door managed by a controller.

uhppote-cli [options] set-super-passwords <controller-id> <door> <password>

  <controller ID> (required) Controller serial number (or name)
  <door>          (required) Door number ([1..4])
  <passwords>     Comma seperated list of super passwords for the door. A password is a 
                  PIN code in the range [1..999999] and the command uses only the first four
                  passwords in the list, discarding invalid passwords.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli set-super-passwords 405419896 1 12345,999999
    405419896  set super passwords 405419896 1 ok

  > uhppote-cli set-super-passwords 405419896 1
    405419896  set super passwords 405419896 1 ok

  > uhppote-cli --debug set-super-passwords Alpha 1 12345,999999,23456,34567,45678,567890
    405419896  set super passwords 405419896 1 ok

restore-default-parameters

Resets a controller to the manufacturer default configuration.

uhppote-cli [options] restore-default-parameters <controller-id>

  <controller ID> (required) Controller serial number (or name)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli restore-default-parameters 405419896
    405419896  restore default parameters ok

listen

Establishes a listening socket on the listen address:port for events sent from controllers. Each event record comprises the same information as that returned by get-status:

uhppote-cli [options] listen

  <device ID>   (required) Controller serial number (or name)

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Examples:
  > uhppote-cli listen
    405419896  false false false false false false false false 0    2021-05-14 11:14:18 0          0 00 00 | 71    1   false 3 1     8165538    2021-05-14 11:14:18 6
    405419896  false false false false false false false false 0    2021-05-14 11:14:21 0          0 00 00 | 72    1   false 3 1     8165538    2021-05-14 11:14:21 6
    405419896  false false false false false false false false 0    2021-05-14 11:14:24 0          0 00 00 | 73    1   false 3 1     8165538    2021-05-14 11:14:24 6

ACL commands

The ACL (access control list) commands manage access permissions across the set of UHPPOTE controllers configured in the conf file. The following commands are supported:

ACL file format

The only currently supported ACL file format is TSV (tab separated values) and is expected to be formatted as follows:

Card Number From  To  Workshop  Side Door Front Door  Garage  Upstairs  Downstairs  Tower Cellar
123465537 2020-01-01  2020-12-31  N N Y N Y N Y Y
231465538 2020-01-01  2020-12-31  Y N Y N N 29 N N
635465539 2020-01-01  2020-12-31  N N N N Y N Y Y
Field Description
Card Number Access card number
From Date from which card is valid (valid from 00:00 on that date)
To Date until which card is valid (valid until 23:59 on that date)
<door> Door name matching controller configuration (case and space insensitive)
<door> ...
...

The ACL file must include a column for each controller + door configured in the devices section of the uhppoted.conf file used to configure the utility. Permissions for a door can be:

An example ACL file is included in the full uhppoted distribution, along with the matching conf file.

grant

Grants access permissions to a single card across the set of configured UHPPOTE controllers. The grant command extends the functionality of the device put-card command to set the access permissions across multiple controllers using door names rather than the device specific controller + door ID's. The granted permissions are added to the existing card access permissions.

NOTE: The date range during which a card has access is automatically widened to accommodate the earliest from date and latest to date across the controllers.

uhppote-cli [options] grant <card> <from> <to> [doors]

  <card>        Card number to be granted access
  <from>        Date from which the card is granted access, in yyyy-mm-dd format. Access is 
                granted from 00:00 on the 'from' date.
  <to>          Date until which the card is granted access, , in yyyy-mm-dd format. Access
                is granted until 23:59 on the 'to' date.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli grant 918273645 2020-01-01 2020-12-31 Front Door, Workshop

revoke

Revokes access permissions for a single card across the set of configured UHPPOTE controllers. The revoke command extends the functionality of the device put-card command to revoke the access permissions across multiple controllers using door names rather than the device specific controller + door ID's. The revoked permissions are removed from the existing card access permissions.

  uhppote-cli [options] revoke <card> [doors]

  <card>        Card number to be granted access

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli revoke 918273645 Garage

show

Retrieves and displays the access permissions for a single card across the set of configured UHPPOTE controllers.

   uhppote-cli [options] show <card>

  <card>        Card number for which access permissions should be retrieved

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  Example:

  uhppote-cli show 918273645

load-acl

Loads the access permissions from an ACL file to the set of configured UHPPOTE controllers. A sample ACL file is included in the full uhppoted distribution.

   uhppote-cli [options] load-acl [--with-pin] [--strict] [--card-format <any|wiegand-26>] <ACL file>

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  --with-pin    Updates the access controller PIN for all cards. Default is false.
                are ignored (or deleted if they exist) with a warning message
  --strict      Fails with an error for duplicate card numbers. Default is false in which case duplicate cards numbers
                are ignored (or deleted if they exist) with a warning message
  --card-format <format> (optional) optionally enables card format validation (either any or Wiegand-26). Defaults to the
                         `card.format` setting in _uhppoted.conf_ (or _none_).

  Example:

  uhppote-cli --debug --conf warehouse.conf load-acl warehouse.acl
  uhppote-cli --debug --conf warehouse.conf load-acl --card-format wiegand-26 --with-pin warehouse.acl

get-acl

Fetches the cards stored in the set of configured UHPPOTE controllers, creates a matching ACL file from the UHPPOTED controller configuration and writes it to a TSV file.

  uhppote-cli [options] get-acl <file>

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  --with-pin    Includes the card keypad PIN field in the retrieved ACL.

  Example:

  uhppote-cli --debug get-acl 2020-05-18.acl
  uhppote-cli --debug --conf warehouse.conf get-acl --with-pin 2023-03-07.acl

compare-acl

Compares the cards stored on the set of configured UHPPOTE controllers with an authoritative ACL file and generates an exception report.

   uhppote-cli [options] compare-acl <file> <report>

   <report>     Optional output file for the exception report. The report is printed
                to the console if a report file is not supplied.

  Options: 
  --config      Sets the uhppoted.conf file to use for controller configurations
  --bind        Overrides the default (or configured) bind IP address for a command
  --broadcast   Overrides the default (or configured) broadcast IP address to which to send a command
  --listen      Overrides the default (or configured) listen IP address on which to listen for events
  --timeout     Sets the timeout for a response from a controller (default value is 2.5s)
  --debug       Displays verbose debugging information, in particular the communications with the UHPPOTE controllers

  --with-pin    Includes the card keypad PIN field when comparing the ACL. Defaults to false i.e. ignores the 
                card keypad PIN field.

  Example:

  uhppote-cli --debug compare-acl warehouse.acl 2020-05-18.rpt
  uhppote-cli --debug --conf warehouse.conf compare-acl --with-pin warehouse.acl 2020-05-18.rpt