Issue
New Door Attributes KeyPadString and KeyPadCommand in ACX57xx
Environment
Information about the new door attributes and configuration helps users with the capability.
Cause
- ACX57xx
- Continuum V1.82
Resolution
New Door Attributes KeyPadString and KeyPadCommand in ACX57xx in latest versions of Continuum Requires versions of Continuum V1.82 or above and Rev 1.1xxxxx ACX
Entering an Input String at a Keypad for Use in PE Programs
From a keypad connected to an ACX2 door, you (the user) may also send additional data to the controller, which in turn passes it to a Plain English (PE) program for execution in an Andover Continuum control application. This capability enables you to use the keypad to send input to a PE program for any purpose.
For example:
A user can enter a string that a PE program uses to turn lights or fans on or off, or to control other HVAC equipment. A user can enter a string indicating the user’s purpose for entering an area. The PE program can capture this information as input to a PE program for tracking reasons for activity in a secure area.
Handling String Input at the ACX2 controller
Before you can use the keypad for PE program input, you must create a Plain English program that processes the string entered at the keypad and returns a value to the system based on the entry. The ACX2 door
contains two attributes that are used by the PE program
KeypadString door attribute. Your PE program reads this attribute to obtain the content of the string entered at the keypad.
KeypadCommand door attribute. Your PE program sets this numeric value to provide feedback via the reader/keypad LEDs to the person entering the keypad code about the status of the operation. Other commands are
also sent to the door via the KeypadCommand attribute such as enabling or disabling Keypad Input.
Entering String Input from Keypad
The process for entering string input at a keypad has the following steps:
- The user presents a valid access card and/or PIN (if a PIN is required) to the door reader.
- The controller for this reader accepts the user’s credentials, and the door unlocks.
- Within three seconds of the door unlocking, the user enters two consecutive asterisks ( ** ) at the keypad to enter escape sequence mode.
- The keypad LED flashes slowly to indicate that it is waiting for input.
-
The user enters a numeric string of up to 30 characters (not including the two asterisks), and then terminates the string with the pound sign (#).
For example: **10# or **6986310# - The door makes the string available to a PE program via its KeypadString attribute.
Entry Rules for String Input
The following rules apply to using a keypad connected to a door to enter string input:
- After the door unlocks for a valid access, if more than 3 seconds elapse before the user enters two asterisks, the door exits escape sequence mode. The user must begin the process for string input again.
- If a user enters more than 30 characters (not including the first two asterisks), the door detects when the 31st digit is entered. The door then replaces the 30th character with T to indicate Tamper, and sends the string to its KeypadString attribute (no # is needed). Subsequent characters entered as part of the string are ignored.
- For example, if the user enters **123456789012345678901234567890123, the door sends 12345678901234567890123456789T to its KeypadString attribute.
- The user can enter asterisks within the string if needed. These asterisks are converted to periods when sent to the door’s KeypadString attribute.
- For example: 69*8*6310 is converted to 69.8.6310 when sent to the door’s KeypadString attribute.
- If more than 4 seconds elapse between keystrokes, the door exits escape sequence mode. The user must begin the process for string input again.
- If a user presents an access card to the card reader while the door is in escape sequence mode, the door exits escape sequence mode. The user must egin the process for string input again.
PE Feedback to the Door
After the PE program receives the string input and interprets its value, the PE program assigns an appropriate value to the door’s KeypadCommand attribute. One of the following values is transmitted back to the door
through its KeypadCommand attribute:
- 0 - Disable keypad Input at the door.
- 1 - Clear string.
- 2 - Recognize the escape sequence entry (success).
- 3 - Do not recognize the escape sequence entry (fail).
- 255 - Enable keypad Input at the door.
NOTE: Clearing the string in the door using the Clear String command is recommended after each string input in escape sequence mode.
Based on the numeric value returned to the door through the KeypadCommand attribute, the PE program uses the reader LEDs to indicate to the user whether or not the string input is valid or invalid. The LED pattern to indicate valid/invalid entry is the same as the selected access control LED pattern used to indicate valid/invalid card and PIN entry.
Sample PE Program
The PE program in the following example is used to unlock a door for unrestricted access for the amount of time specified in the Keypad Input String. For instance, at the door, the user enters 100*3600, the "*" gets translated to "." (period) so the keypad input string contains 100.3600.
The program recognizes 100 as the door timed unlock code and 3600 as the time to unlock the door for (in seconds, 3600 is the number of seconds in an hour), thus entering 100*3600 at the keypad instructs the PE program to unlock the door for an hour.
'This program processes the 'Timed Unlock' keypad code (100) entered at a door's keypad 'The form of the code is 100.xxx where 100 is the command identifier and xxx is the amount of time 'to unlock the door for.
String Str
Numeric KypdCode, DrUnlockTime, SeparatorPos
Line Init
Jetway1 KeypadCommand = 255 'Enable door for keypad input string
Jetway1 KeypadCommand = 1 'Clear any previous keypad input string
Goto WaitForKypdCode
Line WaitForKypdCode
'Wait here until something goes in the keypad string
If len(Jetway1 KeypadString) > 0 then Goto ProcessKypdCode
Line ProcessKypdCode
'The string should contain 2 fields separated by a period
'Get the keypad code identifier which is to the left of the separator
SeparatorPos = search(Jetway1 KeypadString, ".")
Str = left(Jetway1 KeypadString, SeparatorPos)
KypdCode =StrToNum(Str)
'Now get the unlock time value which is to the right of the separator
Str = right(Jetway1 KeypadString, (len(Jetway1 KeypadString) - SeparatorPos))
DrUnlockTime = StrToNum(Str)
'The only keypad code this program handles is the time unlock (100)
If KypdCode = 100 and DrUnlockTime > 0 then Goto UnlockDoor Else Goto InvalidKypdCode
Line UnlockDoor
Jetway1 KeypadCommand = 2 'Flash the valid access LED pattern to give
'feedback that the code has been accepted
Jetway1 TimeUnlock = DrUnlockTime 'Unlock the door for the time specified
'in the keypad code
Goto ClearStr
Line InvalidKypdCode Jetway1 KeypadCommand = 3 'Flash the invalid attempt LED pattern to give
'feedback that the code is invalid
Goto ClearStr
Line ClearStr
Jetway1 KeypadCommand = 1 'Clear the keypad input string
Goto WaitForKypdCode