Patent Description:
Access control permissions and other access control data are updated for various users/credentials over time and, therefore, those updates are often transmitted to access control devices that make access control decisions locally based on user-presented credentials. Depending on the particular access control ecosystem, the number of users and credentials can be staggering. As such, the limited data storage available on many access control devices, for example, introduces technical difficulties in ensuring that those access control devices maintain complete and accurate access control data.

One embodiment is directed to a unique system, components, and methods for access control communications. Other embodiments are directed to apparatus, systems, devices, hardware, methods, and combinations thereof for access control communications. Further embodiments, forms, features, and aspects of the present application shall become apparent from the description and figures provided herewith.

The concepts described herein are illustrative by way of example and not by way of limitation in the accompanying figures. Where considered appropriate, references labels have been repeated among the figures to indicate corresponding or analogous elements.

Although the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described herein in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives consistent with the present disclosure and the appended claims.

It should further be appreciated that although reference to a "preferred" component or feature may indicate the desirability of a particular component or feature with respect to an embodiment, the disclosure is not so limiting with respect to other embodiments, which may omit such a component or feature. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to implement such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described. Additionally, it should be appreciated that items included in a list in the form of "at least one of A, B, and C" can mean (A); (B); (C); (A and B); (B and C); (A and C); or (A, B, and C). Similarly, items listed in the form of "at least one of A, B, or C" can mean (A); (B); (C); (A and B); (B and C); (A and C); or (A, B, and C). Further, with respect to the claims, the use of words and phrases such as "a," "an," "at least one," and/or "at least one portion" should not be interpreted so as to be limiting to only one such element unless specifically stated to the contrary, and the use of phrases such as "at least a portion" and/or "a portion" should be interpreted as encompassing both embodiments including only a portion of such element and embodiments including the entirety of such element unless specifically stated to the contrary.

The disclosed embodiments may, in some cases, be implemented in hardware, firmware, software, or a combination thereof. The disclosed embodiments may also be implemented as instructions carried by or stored on one or more transitory or non-transitory machine-readable (e.g., computer-readable) storage media, which may be read and executed by one or more processors. A machine-readable storage medium may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a form readable by a machine (e.g., a volatile or non-volatile memory, a media disc, or other media device).

Rather, in some embodiments, such features may be arranged in a different manner and/or order than shown in the illustrative figures unless indicated to the contrary.

Referring now to <FIG>, in the illustrative embodiment, an access control system <NUM> includes one or more access control devices <NUM>, a management system <NUM>, and a credential device <NUM>. Further, the management system <NUM> may include a management server <NUM>, a gateway device, <NUM>, an access control panel <NUM>, and/or a mobile device <NUM>.

As described in detail below, in the illustrative embodiment, the access control system <NUM> allows for a true real-time solution of access control that provides the IP host (e.g., the management server <NUM>) with relevant information regarding credentials that are presented to an access control device <NUM>. Specifically, in some embodiments, the access control system <NUM> may allow for a true real-time access control solution while providing the host device (e.g., the management server <NUM>) with information regarding credentials presented to the access control device <NUM>, and providing such data to an extent that may not be otherwise feasible due to memory constraints in various access control devices <NUM>. For example, in some access control solutions, there is a need for the host (e.g., the management server <NUM>) to be provided with information regarding credentials that are presented to the access control device <NUM> regardless of whether or not the credential information associated with those credentials are already included in a local access control database of the access control device <NUM> (i.e., for making access control decisions locally at the access control device <NUM>). However, often due to limited memory capacity in the access control device <NUM>, it may be unrealistic to store and/or provide a large amount of credential information (e.g., in a large enterprise or commercial environment) to the access control device <NUM>; yet, such limitations are often not imposed on gateway devices <NUM>. Accordingly, in some embodiments, the gateway device <NUM> includes a gateway credential list stored thereon, which may include substantially more credential information than the local access control database of the access control device <NUM> and/or may be leveraged to make access control decisions as described in greater detail herein.

It should be appreciated that the access control device(s) <NUM>, the management system <NUM>, the credential <NUM>, the management server <NUM>, the gateway device <NUM>, the access control panel <NUM>, and/or the mobile device <NUM> may be embodied as any type of device or collection of devices suitable for performing the functions described herein. More specifically, in the illustrative embodiment, each of the access control devices <NUM> (e.g., edge devices) may be embodied as any type of device capable of controlling and/or facilitating access through a passageway (e.g., at least in part). For example, in various embodiments, the access control device <NUM> may be embodied as an electronic lock (e.g., a mortise lock, a cylindrical lock, or a tubular lock), an exit device (e.g., a pushbar or pushpad exit device), a door closer, an auto-operator, a motorized latch/bolt (e.g., for a sliding door), barrier control device (e.g., battery-powered), or a peripheral controller of a passageway. Depending on the particular embodiment, the access control device <NUM> may include a credential reader or be electrically/communicatively coupled to a credential reader configured to communicative with credentials <NUM>. In some embodiments, the access control device <NUM> may have a local access control database stored thereon for locally performing access control decisions associated with user access. Accordingly, in such embodiments, the access control database may store credential data, biometric data, historical information, PINs, passcodes, and/or other relevant authentication data associated with users. In some embodiments, such data or a portion thereof may additionally or alternatively be stored in a centralized access control database (e.g., hosted by and/or accessible to the management server <NUM>).

In some embodiments, one or more of the credentials <NUM> may be embodied as a passive credential device having a credential identifier or value (e.g., a unique ID) stored therein and is "passive" in the sense that the credential device is configured to be powered by radio frequency (RF) signals received from a credential reader. In other words, such passive credentials do not have an independent power source but, instead, rely on power that is induced from RF signals transmitted from other devices in the vicinity of the credential. In particular, in some embodiments, one or more of the passive credentials may be embodied as a proximity card, which is configured to communicate over a low frequency carrier of nominally <NUM>, and/or a smartcard, which is configured to communicate over a high frequency carrier frequency of nominally <NUM>. However, it should be appreciated that, in other embodiments, each of the credentials <NUM> may be embodied as any type of passive or active credential device capable of performing the functions described herein. For example, in some embodiments, one or more of the credentials <NUM> may be embodied as a virtual credential stored on the mobile device <NUM> and/or other computing device of a particular user.

As described herein, the management system <NUM> may be configured to manage credentials of the access control system <NUM>. For example, depending on the particular embodiment, the management system <NUM> may be responsible for ensuring that the access control devices <NUM> have updated local access control databases, authorized credentials, whitelists, blacklists, device parameters, and/or other suitable data. Additionally, in some embodiments, the management system <NUM> may receive security data, audit data, raw sensor data, and/or other suitable data from the access control devices <NUM> for management of the access control system <NUM>. In some embodiments, one or more of the devices of the management system <NUM> may be embodied as an online server or a cloud-based server. Further, in some embodiments, the management system <NUM> may communicate with multiple access control devices <NUM> at a single site (e.g., a particular building) and/or across multiple sites. That is, in such embodiments, the management system <NUM> may be configured to receive data from access control devices <NUM> distributed across a single building, multiple buildings on a single campus, or across multiple locations.

It should be appreciated that the management system <NUM> may include one or more devices depending on the particular embodiment of the access control system <NUM>. For example, as shown in <FIG>, the management system <NUM> may include a management server <NUM>, a gateway device <NUM>, an access control panel <NUM>, and/or a mobile device <NUM> depending on the particular embodiment. The functions of the management system <NUM> described herein may be performed by one or more of those devices in various embodiments. For example, in some embodiments, the management server <NUM> may perform all of the functions of the management system <NUM> described herein. Further, in some embodiments, the gateway device <NUM> may be communicatively coupled to the access control devices <NUM> such that the other devices of the management system <NUM> (e.g., the management server <NUM>, the access control panel <NUM>, and/or the mobile device <NUM>) may communicate with the access control devices <NUM> via the gateway device <NUM>.

In some embodiments, the access control devices <NUM> may communicate with the management server <NUM> over a Wi-Fi connection and/or with the mobile device <NUM> over a Bluetooth connection. Additionally, the access control devices <NUM> may communicate with the management server <NUM> and/or the access control panel <NUM> via the gateway device <NUM>. As such, in the illustrative embodiment, the access control device <NUM> may communicate with the gateway device <NUM> over a Wi-Fi connection and/or a Bluetooth connection, and the gateway device <NUM> may, in turn, forward the communicated data to the relevant management server <NUM> and/or access control panel <NUM>. For example, in some embodiments, the gateway device <NUM> may communicate with the access control panel <NUM> over a serial communication link (e.g., using RS-<NUM> standard communication), and the gateway device <NUM> may communicate with the management server <NUM> over a Wi-Fi connection, an Ethernet connection, and/or another wired/wireless communication connection. As such, it should be appreciated that each of the access control devices <NUM> may communicate with the management server <NUM> via an online mode with a persistent real-time communication connection or via an offline mode (e.g., periodically or in response to an appropriate condition) depending on the particular embodiment (e.g., depending on whether the particular access control device <NUM> is offline). It should be appreciated that various technologies for implementing such access control communications are described in greater detail herein. As indicated above, in other embodiments, it should be appreciated that the access control devices <NUM> may communicate with the devices of the management system <NUM> via one or more other suitable communication protocols.

In some embodiments, the gateway device <NUM> may be embodied as any one or more devices that, individually or collectively, serve as an intermediary device allowing the access control devices <NUM> to communicate with the management server <NUM> and/or other remote devices via the Internet and/or a wired/wireless network. For example, in some embodiments, the gateway device <NUM> may be embodied as a wireless access point that is communicatively coupled to a router. In other embodiments, the gateway device <NUM> may form an integral component of or otherwise form a portion of the router itself.

It should be appreciated that each of the access control devices <NUM>, the management system <NUM>, the management server <NUM>, the gateway device <NUM>, the access control panel <NUM>, and/or the mobile device <NUM> may be embodied as one or more computing devices similar to the computing device <NUM> described below in reference to <FIG>. For example, one or more of the access control devices <NUM>, the management system <NUM>, the management server <NUM>, the gateway device <NUM>, the access control panel <NUM>, and the mobile device <NUM> may include a processing device <NUM> and a memory <NUM> having stored thereon operating logic <NUM> for execution by the processing device <NUM> for operation of the corresponding device.

It should be further appreciated that, although the management system <NUM> and the management server <NUM> are described herein as one or more computing devices outside of a cloud computing environment, in other embodiments, the system <NUM> and/or server <NUM> may be embodied as a cloud-based device or collection of devices. Further, in cloud-based embodiments, the system <NUM> and/or server <NUM> may be embodied as a "serverless" or server-ambiguous computing solution, for example, that executes a plurality of instructions on-demand, contains logic to execute instructions only when prompted by a particular activity/trigger, and does not consume computing resources when not in use. That is, the system <NUM> and/or server <NUM> may be embodied as a virtual computing environment residing "on" a computing system (e.g., a distributed network of devices) in which various virtual functions (e.g., Lambda functions, Azure functions, Google cloud functions, and/or other suitable virtual functions) may be executed corresponding with the functions of the system <NUM> and/or server <NUM> described herein. For example, when an event occurs (e.g., data is transferred to the system <NUM> and/or server <NUM> for handling), the virtual computing environment may be communicated with (e.g., via a request to an API of the virtual computing environment), whereby the API may route the request to the correct virtual function (e.g., a particular server-ambiguous computing resource) based on a set of rules. As such, when a request for the transmission of updated access control data is made by a user (e.g., via an appropriate user interface to the system <NUM> or server <NUM>), the appropriate virtual function(s) may be executed to perform the actions before eliminating the instance of the virtual function(s).

Although only one management system <NUM>, one credential <NUM>, one management server <NUM>, one gateway device <NUM>, one access control panel <NUM>, and one mobile device <NUM> are shown in the illustrative embodiment of <FIG>, the system <NUM> may include multiple management systems <NUM>, credentials <NUM>, management servers <NUM>, gateway devices <NUM>, access control panels <NUM>, and/or mobile devices <NUM> in other embodiments. For example, as indicated above, the server <NUM> may be embodied as multiple servers in a cloud computing environment in some embodiments. Further, each user may be associated with one or more separate credentials <NUM> in some embodiments.

Referring now to <FIG>, a simplified block diagram of at least one embodiment of a computing device <NUM> is shown. The illustrative computing device <NUM> depicts at least one embodiment of an access control device <NUM>, management system <NUM>, credential <NUM> (e.g., an active credential), management server <NUM>, gateway device <NUM>, access control panel <NUM>, and/or mobile device <NUM> illustrated in <FIG>. Depending on the particular embodiment, computing device <NUM> may be embodied as an access control device, reader device, server, desktop computer, laptop computer, tablet computer, notebook, netbook,. Ultrabook™, mobile computing device, cellular phone, smartphone, wearable computing device, personal digital assistant, Internet of Things (IoT) device, control panel, processing system, router, gateway, and/or any other computing, processing, and/or communication device capable of performing the functions described herein.

The computing device <NUM> includes a processing device <NUM> that executes algorithms and/or processes data in accordance with operating logic <NUM>, an input/output device <NUM> that enables communication between the computing device <NUM> and one or more external devices <NUM>, and memory <NUM> which stores, for example, data received from the external device <NUM> via the input/output device <NUM>.

The input/output device <NUM> allows the computing device <NUM> to communicate with the external device <NUM>. For example, the input/output device <NUM> may include a transceiver, a network adapter, a network card, an interface, one or more communication ports (e.g., a USB port, serial port, parallel port, an analog port, a digital port, VGA, DVI, HDMI, FireWire, CAT <NUM>, or any other type of communication port or interface), and/or other communication circuitry. Communication circuitry of the computing device <NUM> may be configured to use any one or more communication technologies (e.g., wireless or wired communications) and associated protocols (e.g., Ethernet, Bluetooth (including Bluetooth Low Energy (BLE), Wi-Fi, Near Field Communication (NFC), WiMAX, ZigBee, Z-wave, IEEE <NUM>, etc.) to effect such communication depending on the particular computing device <NUM>. The input/output device <NUM> may include hardware, software, and/or firmware suitable for performing the techniques described herein.

The external device <NUM> may be any type of device that allows data to be inputted or outputted from the computing device <NUM>. For example, in various embodiments, the external device <NUM> may be embodied as the access control device <NUM>, the management system <NUM>, the credential <NUM>, the management server <NUM>, the gateway device <NUM>, the access control panel <NUM>, and/or the mobile device <NUM>. Further, in some embodiments, the external device <NUM> may be embodied as another computing device, switch, diagnostic tool, controller, printer, display, alarm, peripheral device (e.g., keyboard, mouse, touch screen display, etc.), and/or any other computing, processing, and/or communication device capable of performing the functions described herein. Furthermore, in some embodiments, it should be appreciated that the external device <NUM> may be integrated into the computing device <NUM>.

The processing device <NUM> may be embodied as any type of processor(s) capable of performing the functions described herein. In particular, the processing device <NUM> may be embodied as one or more single or multi-core processors, microcontrollers, or other processor or processing/controlling circuits. For example, in some embodiments, the processing device <NUM> may include or be embodied as an arithmetic logic unit (ALU), central processing unit (CPU), digital signal processor (DSP), and/or another suitable processor(s). The processing device <NUM> may be a programmable type, a dedicated hardwired state machine, or a combination thereof. Processing devices <NUM> with multiple processing units may utilize distributed, pipelined, and/or parallel processing in various embodiments. Further, the processing device <NUM> may be dedicated to performance of just the operations described herein, or may be utilized in one or more additional applications. In the illustrative embodiment, the processing device <NUM> is programmable and executes algorithms and/or processes data in accordance with operating logic <NUM> as defined by programming instructions (such as software or firmware) stored in memory <NUM>. Additionally or alternatively, the operating logic <NUM> for processing device <NUM> may be at least partially defined by hardwired logic or other hardware. Further, the processing device <NUM> may include one or more components of any type suitable to process the signals received from input/output device <NUM> or from other components or devices and to provide desired output signals. Such components may include digital circuitry, analog circuitry, or a combination thereof.

The memory <NUM> may be of one or more types of non-transitory computer-readable media, such as a solid-state memory, electromagnetic memory, optical memory, or a combination thereof. Furthermore, the memory <NUM> may be volatile and/or nonvolatile and, in some embodiments, some or all of the memory <NUM> may be of a portable type, such as a disk, tape, memory stick, cartridge, and/or other suitable portable memory. In operation, the memory <NUM> may store various data and software used during operation of the computing device <NUM> such as operating systems, applications, programs, libraries, and drivers. It should be appreciated that the memory <NUM> may store data that is manipulated by the operating logic <NUM> of processing device <NUM>, such as, for example, data representative of signals received from and/or sent to the input/output device <NUM> in addition to or in lieu of storing programming instructions defining operating logic <NUM>. As shown in <FIG>, the memory <NUM> may be included with the processing device <NUM> and/or coupled to the processing device <NUM> depending on the particular embodiment. For example, in some embodiments, the processing device <NUM>, the memory <NUM>, and/or other components of the computing device <NUM> may form a portion of a system-on-a-chip (SoC) and be incorporated on a single integrated circuit chip.

In some embodiments, various components of the computing device <NUM> (e.g., the processing device <NUM> and the memory <NUM>) may be communicatively coupled via an input/output subsystem, which may be embodied as circuitry and/or components to facilitate input/output operations with the processing device <NUM>, the memory <NUM>, and other components of the computing device <NUM>. For example, the input/output subsystem may be embodied as, or otherwise include, memory controller hubs, input/output control hubs, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and/or other components and subsystems to facilitate the input/output operations.

The computing device <NUM> may include other or additional components, such as those commonly found in a typical computing device (e.g., various input/output devices and/or other components), in other embodiments. It should be further appreciated that one or more of the components of the computing device <NUM> described herein may be distributed across multiple computing devices. In other words, the techniques described herein may be employed by a computing system that includes one or more computing devices. Additionally, although only a single processing device <NUM>, I/O device <NUM>, and memory <NUM> are illustratively shown in <FIG>, it should be appreciated that a particular computing device <NUM> may include multiple processing devices <NUM>, I/O devices <NUM>, and/or memories <NUM> in other embodiments. Further, in some embodiments, more than one external device <NUM> may be in communication with the computing device <NUM>.

As described in greater detail below, the access control system <NUM> may utilize one or more different modes of operation in order to transmit data among the various devices in the access control system <NUM> and, more specifically, between the access control device <NUM> and the server <NUM>. For example, in various embodiments, the access control system <NUM> may utilize an "offline mode," an "offline with Wi-Fi mode," a "gateway as server mode," a "gateway as client mode," a "serial communication mode," or a "modified gateway as client mode. " Additionally, in some embodiments, the access control system <NUM> may leverage "no tour" functionality to transmit data to offline access control devices <NUM>, whereby access control data updates (e.g., access permissions, database updates, configurations, etc.) are transmitted to the offline access control devices <NUM> via the mobile device <NUM> and/or credential <NUM>. It should be appreciated that the terms "offline mode," "offline with Wi-Fi mode," "gateway as server mode," "gateway as client mode," "serial communication mode," "modified gateway as client mode," and "no tour" are used herein for reference purposes only and not intended to be limiting.

In some embodiments, the access control system <NUM> may utilize an "offline mode" in which the access control device <NUM> functions as a standalone device with "decision at door" capabilities such that the access control device <NUM> authenticates credential data and/or makes access control decisions locally at the access control device <NUM> (e.g., based on a local access control database or door file). Accordingly, the system <NUM> may rely on the access rights for authorized credentials and/or device configurations having been pre-loaded onto the local access control database and/or other memory of the access control device <NUM>. For example, in some embodiments, the access control data may be transmitted to the local access control database of the access control device <NUM> via the mobile device <NUM> (e.g., using a mobile application and wireless communication protocol such as BLE) or using the no tour techniques described herein. Similarly, in some embodiments, the access control device <NUM> can transmit audits, device configurations, status indications, and/or other relevant data to the server <NUM> via the mobile device <NUM> and/or using no tour techniques having feedback mechanisms. It should be appreciated that the "offline mode" involves a user physically visiting the access control device <NUM> in order to perform the data transfers described above.

In some embodiments, the access control system <NUM> may utilize an "offline with Wi-Fi mode" in which the access control device <NUM> generally functions similarly to the "offline mode. " However, in the "offline with Wi-Fi mode," the access control device <NUM> includes Wi-Fi and/or other wireless communication circuitry capable of communicating with the server <NUM> (e.g., via a router) to communicate access control data therebetween. Depending on the particular embodiment, the access control device <NUM> may establish the Wi-Fi connection with the server <NUM> in order to transmit and receive relevant access control data periodically, asynchronously, according to a predetermined or dynamic schedule, and/or in response to some condition while also maintaining the "decision at door" functionality of the "offline mode" described above. For example, in some embodiments, the access control device <NUM> may establish a Wi-Fi connection and communicate with the server <NUM> one or more times daily (e.g., at times of historically low use of the access control device <NUM>). Additionally or alternatively, in some embodiments, the access control device <NUM> may establish the Wi-Fi connection to communicate with the server <NUM> in response to one or more predefined (or dynamically determined) asynchronous events including, for example, a forced door alert, tamper alert, low battery notification, critical battery notification, magnetic tamper alert, corrupt file notification (e.g., access control database or door file), reader tamper alert, and/or other events.

In some embodiments, the access control system <NUM> may utilize a "serial communication mode" in which the access control system <NUM> has "decision at host" capabilities such that the server <NUM> or the access control panel <NUM> authenticates credential data and/or makes access control decisions remotely relative to the access control device <NUM> (e.g., based on a centralized access control database of the management system <NUM>). For example, in some embodiments, the access control panel <NUM> may be communicatively coupled to the gateway device <NUM> via a serial communication link and corresponding communication protocol (e.g., RS-<NUM> communication protocol), and the gateway device <NUM> may wirelessly communicate (e.g., via Bluetooth) with the access control device <NUM>. In particular, in some embodiments, the gateway device <NUM> may be configured to "consume" and reply to relevant messages at the next available poll response (e.g., under the RS-<NUM> communication protocol). Accordingly, the access control device <NUM> may transmit credential data associated with a presented credential to the gateway device <NUM>, and the gateway device <NUM> may transmit the encrypted credential data to the access control panel <NUM> (and/or server <NUM>) at the next available poll response. Further, the access control panel <NUM> (and/or server <NUM>) may authenticate the credential data and make an access control decision (e.g., grant/deny access), which may be transmitted to the gateway device <NUM> for subsequent transmittal to the access control device <NUM> (e.g., in the form of an "unlock" command). In some embodiments, status changes of the access control device <NUM> may be automatically transmitted to the gateway device <NUM>, which may be forwarded to the access control panel <NUM> (and/or server <NUM>) at the next available poll response. It should be appreciated that, in various embodiments, the "serial communication mode" may allow the access control panel <NUM> (and/or server <NUM>) to "see" all credential data presented to the access control device <NUM>. At least one embodiment of the "serial communication mode" is described below in reference to the method <NUM> of <FIG>.

In some embodiments, the access control system <NUM> may utilize an IP-based solution that leverages the gateway device <NUM> for communication between the access control device <NUM> and the server <NUM>. For example, in some embodiments, the server <NUM> may communicate with the gateway device <NUM> via IP communications (e.g., and Ethernet), and the gateway device <NUM> in turn may process any messages related to the gateway device <NUM> itself and/or forward any messages (e.g., via Bluetooth) intended for the access control device <NUM>. It should be appreciated that such techniques permit the access control device to have "decision at door" functionality as described above; however, in such embodiments, the access control device <NUM> may transmit status change information, audit data, and/or other relevant information to the gateway device <NUM> (e.g., automatically) for subsequent delivery by the gateway device <NUM> to the server <NUM>. Similarly, the server <NUM> may transmit access control data (e.g., access permissions, configuration data, etc.) to the gateway device <NUM> for subsequent delivery by the gateway device <NUM> to the access control device <NUM>. As such, when a credential device is presented to the access control device <NUM>, the access control device <NUM> may authenticate (e.g., making a grant/deny decision) the credential data locally based on the local access control database of the access control device <NUM>, which may be loaded/updated based on access control data communications received from the server <NUM> via the gateway device <NUM>. Specifically, in various embodiments, the access control system <NUM> may utilize the "gateway as server mode," "gateway as client mode," or "modified gateway as client mode" described below.

As indicated above, in some embodiments, the access control system <NUM> may utilize a "gateway as server mode" in which the server <NUM> acts as a client device and the gateway device <NUM> acts as a server (e.g., web server) in a server/client IP communication arrangement. For example, in some embodiments, the server <NUM> (acting as a client device) may communicate with the gateway device <NUM> via a RESTful API or other suitable API hosted by the gateway device <NUM> (acting as the server). Audit data, status changes, and other information received by the gateway device <NUM> from the access control device <NUM> may be stored at the gateway device <NUM> until the server <NUM> (as client) as requested the updated information from the gateway device <NUM> (as server). Accordingly, in such embodiments, it should be appreciated that that the gateway device <NUM> relies on receipt of a communication from the server <NUM> in order to transmit relevant access control data updates. At least one embodiment of the "gateway as server mode" is described below in reference to the method <NUM> of <FIG>.

In some embodiments, the access control system <NUM> may utilize a "gateway as client mode" as indicated above in which the server <NUM> acts as a server (e.g., web server) and the gateway device <NUM> acts as a client device in a server/client IP communication arrangement. In such embodiments, the gateway device <NUM> (as client) may attempt to reach the server <NUM> (as server) and authenticate the server <NUM> (e.g., to ensure a secure connection therebetween). Subsequent to establishing the secure connection, the gateway device <NUM> may request to open a WebSocket connection between the gateway device <NUM> and the server <NUM>, which allows for full duplex communication between the gateway device (as client) and the server <NUM> (as server). Accordingly, in some embodiments, the server <NUM> may make requests of the gateway device <NUM> by transforming RESTful API (or other suitable API) requests (e.g., as utilized in the "gateway as server mode" described above) into a WebSocket communication sub-protocol. It should be appreciated that the "gateway as a client mode" allows for the gateway device <NUM> to be situated "behind" a firewall and still communicate with the server <NUM> without additional overhead of port forwarding or network mapping, which may be required if the server <NUM> and the gateway device <NUM> are on different subnets (e.g., as in some embodiments of "gateway as server mode"). Further, once the WebSocket connection has been established, the gateway device <NUM> need not wait until a request is made of it in order to provide information to the server <NUM>. That is, in the "gateway as client mode," the gateway device <NUM> may provide information to the server <NUM> in real time without waiting for the server <NUM> to request such information, which may permit the server <NUM> to "subscribe" to information associated with particular events and allow the gateway device <NUM> to notify the server <NUM> in real time if any such "subscribed" event occurs. At least one embodiment of the "gateway as client mode" is described below in reference to the method <NUM> of <FIG>.

In some embodiments, the access control system <NUM> may utilize a "modified gateway as client mode" as indicated above, which may allow for a true real-time solution of access control that provides the IP host (e.g., the server <NUM>) with relevant information of credentials that are presented to the access control device <NUM>. In particular, in some embodiments, the "modified gateway as client mode" addresses a technical need in some access control systems for the server <NUM> to be provided with information regarding credentials that are presented to the access control device <NUM> regardless of whether or not the credential data associated with that particular credential <NUM> is already included in the local access control database (or door file) of the access control device <NUM> for "decision at door" operation. More specifically, although it may be unrealistic or impossible (e.g., in very large enterprise environments) to provide a very large amount of credential data to the access control device <NUM> for notification purposes due to memory constraints of the access control device <NUM>, the memory constraints of the gateway device <NUM> are often less limiting. As such, in some embodiments, the gateway device <NUM> may store therein a gateway credential list (GCL) with a significant amount of credential data (e.g., more data than capable of being stored in the memory of the access control device <NUM>). In particular, in some embodiments, the gateway credential list may include/identify a set of credentials (e.g., as credential data, encrypted credential data, or otherwise) and a unique credential index associated with each such credential identified in the list. For example, in some embodiments, the credential indexes may be generated as strictly increasing (or strictly decreasing) indexes. In other embodiments, it should be appreciated that the unique credential indexes may be generated randomly, pseudo-randomly, cryptographically uniquely, and/or otherwise generated in a manner that ensures that no (or minimal) collisions occur. Although the gateway credential list is described herein as a list, it should be appreciated that the gateway credential list may be formatted according to any suitable data structure.

In some embodiments, when the credential is presented to the access control device <NUM>, the access control device <NUM> transmits the credential data to the gateway device <NUM> (e.g., in encrypted or unencrypted form depending on the particular embodiment). If the credential (e.g., in the form of credential data) already exists in the gateway credential list of the gateway device <NUM>, the gateway device <NUM> may transmit the respective credential index associated with that credential to the server <NUM> (e.g., via a WebSocket connection). However, if the credential is not included in the gateway credential list, the gateway device <NUM> may notify the server <NUM> (e.g., via the WebSocket connection) that a credential has been presented to the access control device <NUM> that does not exist in the gateway credential list. As such, in some embodiments, the server <NUM> may request (e.g., via the WebSocket connection) that the gateway device <NUM> enter an enrollment mode in which the credential data (e.g., in encrypted or unencrypted form) is transmitted to the server <NUM>. In some embodiments, if the server <NUM> does not provide the access control device <NUM> with an access control command (e.g., allow/deny access) within a predefined period of time after presentation of the credential, the access control device <NUM> may resort to "decision at door" functionality in which the access control device <NUM> may locally make the access control decision <NUM> based on the current data in the local access control database of the access control device <NUM>. At least one embodiment of the "modified gateway as client mode" is described below in reference to the method <NUM> of <FIG> and the method <NUM> of <FIG>.

Referring now to <FIG>, in use, the access control system <NUM> may execute a method <NUM> for communicating access control information by leveraging serial communication between the gateway device <NUM> and the server <NUM>. It should be appreciated that the particular flows of the method <NUM> are illustrated by way of example, and such flows may be combined or divided, added or removed, and/or reordered in whole or in part depending on the particular embodiment, unless stated to the contrary. As described above, in some embodiments, the method <NUM> may be executed in conjunction with one or more of the features described above in reference to the "serial communication mode" of the access control system <NUM>.

The illustrative method <NUM> begins with flow <NUM> in which the server <NUM> transmits a poll request to the gateway device <NUM>. In flow <NUM>, the gateway device <NUM> evaluates the poll request and transmits a poll response. For example, the gateway device <NUM> may determine that no changes have occurred at the access control device <NUM> and transmit a poll response accordingly. At some time (e.g., a later time), a credential <NUM> may be presented to the access control device <NUM>. In flow <NUM>, the access control device <NUM> transmits credential information/data associated with the credential <NUM> to the gateway device <NUM> (e.g., read from and/or received from the credential <NUM>). In flow <NUM>, at an appropriate time (e.g., periodically or asynchronously), the server <NUM> transmits another poll request to the gateway device <NUM>. In flow <NUM>, the gateway device <NUM> again evaluates the poll request and transmits a poll response. For example, in the illustrative embodiment, the gateway device <NUM> may transmit the credential information received from the access control device <NUM> since the last poll request/response interaction.

In flow <NUM>, the server <NUM> authenticates the credential information, for example, to determine access permissions associated with the credential and makes an access control decision/command (e.g., grant/deny access). In flow <NUM>, the server <NUM> transmits the access control decision to the gateway device <NUM>, which in turn transmits the access control decision to the access control device <NUM> in flow <NUM>. In flow <NUM>, the access control device <NUM> executes the access control decision. For example, in some embodiments, the access control device <NUM> may control an access control mechanism (e.g., a lock mechanism, a motor, and/or other components) to grant/deny access through a passageway.

In flow <NUM>, the access control device <NUM> may transmit a status of the access control device <NUM> to the gateway device <NUM>. For example, in some embodiments, the status may indicate the lock status (locked/unlocked) and/or other conditions of the access control device <NUM>. In flow <NUM>, at an appropriate time (e.g., periodically or asynchronously), the server <NUM> transmits another poll request to the gateway device <NUM>. In flow <NUM>, the gateway device <NUM> again evaluates the poll request and transmits a poll response. For example, in the illustrative embodiment, the gateway device <NUM> may transmit the status information received from the access control device <NUM> since the last post request/response interaction.

Although the flows <NUM>-<NUM> are described in a relatively serial manner, it should be appreciated that various flows of the method <NUM> may be performed in parallel in some embodiments.

Referring now to <FIG>, in use, the access control system <NUM> may execute a method <NUM> for communicating access control information by configuring the gateway device <NUM> to act as a web server to the server <NUM>. It should be appreciated that the particular flows of the method <NUM> are illustrated by way of example, and such flows may be combined or divided, added or removed, and/or reordered in whole or in part depending on the particular embodiment, unless stated to the contrary. As described above, in some embodiments, the method <NUM> may be executed in conjunction with one or more of the features described above in reference to the "gateway as server mode" of the access control system <NUM>.

The illustrative method <NUM> begins with flow <NUM> in which the server <NUM> transmits an audit request to the gateway device <NUM>. In flow <NUM>, the gateway device <NUM> evaluates the audit request and transmits an audit response. For example, the gateway device <NUM> may determine that no audits have been received from the access control device <NUM> and transmit an audit response accordingly. At some time (e.g., a later time), in flow <NUM>, a credential <NUM> may be presented to the access control device <NUM>. In flow <NUM>, the access control device <NUM> authenticates the credential information based on a local access control database of the access control device <NUM>, for example, to determine access permissions associated with the credential and makes an access control decision/command (e.g., grant/deny access). In flow <NUM>, the access control device <NUM> executes the access control decision. For example, in some embodiments, the access control device <NUM> may control an access control mechanism (e.g., a lock mechanism, a motor, and/or other components) to grant/deny access through a passageway.

In flow <NUM>, the access control device <NUM> transmits audit information/data associated with the credential <NUM> to the gateway device <NUM> (e.g., a user identifier, credential identifier, information associated with the access control decision, and/or other access control data). In flow <NUM>, at an appropriate time (e.g., periodically or asynchronously), the server <NUM> transmits another audit request to the gateway device <NUM>. In flow <NUM>, the gateway device <NUM> again evaluates the audit request and transmits an audit response. For example, in the illustrative embodiment, the gateway device <NUM> may transmit the audit information received from the access control device <NUM> since the last audit request/response interaction.

Referring now to <FIG>, in use, the access control system <NUM> may execute a method <NUM> for communicating access control information by configuring the gateway device <NUM> to act as a client to the server <NUM>. It should be appreciated that the particular flows of the method <NUM> are illustrated by way of example, and such flows may be combined or divided, added or removed, and/or reordered in whole or in part depending on the particular embodiment, unless stated to the contrary. As described above, in some embodiments, the method <NUM> may be executed in conjunction with one or more of the features described above in reference to the "gateway as client mode" of the access control system <NUM>.

The illustrative method <NUM> begins with flow <NUM> in which a credential <NUM> may be presented to the access control device <NUM>. In flow <NUM>, the access control device <NUM> authenticates the credential information based on a local access control database of the access control device <NUM>, for example, to determine access permissions associated with the credential and makes an access control decision/command (e.g., grant/deny access). In flow <NUM>, the access control device <NUM> executes the access control decision. For example, in some embodiments, the access control device <NUM> may control an access control mechanism (e.g., a lock mechanism, a motor, and/or other components) to grant/deny access through a passageway.

In flow <NUM>, the access control device <NUM> transmits audit information/data associated with the credential <NUM> to the gateway device <NUM> (e.g., a user identifier, credential identifier, information associated with the access control decision, and/or other access control data), and the gateway device <NUM> in turn transmits/forwards the audit information/data to the server <NUM> in flow <NUM>. In flow <NUM>, the access control device <NUM> may transmit a status of the access control device <NUM> to the gateway device <NUM>, and the gateway device <NUM> in turn may transmit/forward the audit information/data to the server <NUM> in flow <NUM>. For example, in some embodiments, the status may indicate the lock status (locked/unlocked) and/or other conditions of the access control device <NUM>.

Referring now to <FIG>, in use, the access control system <NUM> may execute a method <NUM> for communicating access control information by configuring the gateway device <NUM> to act as a client to the server <NUM>. It should be appreciated that the particular flows of the method <NUM> are illustrated by way of example, and such flows may be combined or divided, added or removed, and/or reordered in whole or in part depending on the particular embodiment, unless stated to the contrary. As described above, in some embodiments, the method <NUM> may be executed in conjunction with one or more of the features described above in reference to the "modified gateway as client mode" of the access control system <NUM>.

The illustrative method <NUM> begins with flow <NUM> in which a credential <NUM> may be presented to the access control device <NUM>. In flow <NUM>, the access control device <NUM> transmits credential information/data associated with the credential <NUM> to the gateway device <NUM> (e.g., read from and/or received from the credential <NUM>), and the gateway device <NUM> in turn transmits credential information/data (e.g., the same data or a credential index) to the server <NUM> in flow <NUM>. In flow <NUM>, the server <NUM> authenticates the credential information, for example, to determine access permissions associated with the credential and makes an access control decision/command (e.g., grant/deny access). In flow <NUM>, the server <NUM> transmits the access control decision to the gateway device <NUM>, which in turn transmits the access control decision to the access control device <NUM> in flow <NUM>. In flow <NUM>, the access control device <NUM> executes the access control decision. For example, in some embodiments, the access control device <NUM> may control an access control mechanism (e.g., a lock mechanism, a motor, and/or other components) to grant/deny access through a passageway.

In flow <NUM>, the access control device <NUM> may transmit a status of the access control device <NUM> to the gateway device <NUM>, which the gateway device <NUM> in turn may transmit/forward to the server <NUM> in flow <NUM>. For example, in some embodiments, the status may indicate the lock status (locked/unlocked) and/or other conditions of the access control device <NUM>.

Returning to flows <NUM>-<NUM>, it should be appreciated that the access control device <NUM> may be unable to establish a connection with the gateway device <NUM>, the gateway device <NUM> may be unable to establish a connection with the server <NUM>, and/or the access control device <NUM> may not receive an access control decision from the server <NUM> (e.g., within a predefined period of time). After the predefined period of time has lapsed (e.g., subsequent to presentation of the credential to the access control device <NUM>), as described above, the access control device <NUM> may authenticate the credential <NUM> and make the access control decision locally at the access control device <NUM> based on the current data of the local access control database in some embodiments. Upon successful reconnection, the access control device <NUM> may transmit the appropriate audit data to the gateway device <NUM> for transmittal to the server <NUM>.

Referring now to <FIG>, in use, the access control system <NUM> may execute a method <NUM> for making access control decisions. It should be appreciated that the particular flows of the method <NUM> are illustrated by way of example, and such flows may be combined or divided, added or removed, and/or reordered in whole or in part depending on the particular embodiment, unless stated to the contrary. In some embodiments, it should be appreciated that the method <NUM> may be executed in conjunction with one or more of the features described above in reference to the "modified gateway as client mode" of the access control system <NUM>.

The illustrative method <NUM> begins with block <NUM> in which a credential <NUM> may be presented to the access control device <NUM>. In block <NUM>, the access control device <NUM> transmits credential information/data associated with the credential <NUM> to the gateway device <NUM> (e.g., read from and/or received from the credential <NUM>). In block <NUM>, the gateway device <NUM> compares the credential information/data to a gateway credential list of the gateway device <NUM>. For example, as indicated above, the gateway credential list may include/identify a set of credentials (e.g., as credential data, encrypted credential data, or otherwise) and a unique credential index associated with each such credential identified in the list. For example, in some embodiments, the credential indexes may be generated as strictly increasing (or strictly decreasing) indexes. As such, in the illustrative embodiment, the gateway device <NUM> compares the credential information/data to the gateway credential list to determine whether the credential information/data matches any of the entries of the list. In other words, the gateway device <NUM> determines whether the credential data is included in the gateway credential list. If so, the gateway device <NUM> identifies the unique credential index corresponding with the credential data.

If the gateway device <NUM> determines, in block <NUM>, that the credential data is included in the gateway credential list, the method <NUM> advances to block <NUM> in which the gateway device <NUM> transmits the corresponding credential index to the server <NUM>. In block <NUM>, the server <NUM> authenticates the credential presented to the access control device <NUM> based on the credential index received from the gateway device <NUM>, for example, to determine access permissions associated with the credential and make an access control decision/command (e.g., grant/deny access). In the illustrative embodiment, the server <NUM> may likewise include a credential list including a plurality of credentials (e.g., credential data) and corresponding credential indexes. For example, in some embodiments, the server's credential list may be a superset of the gateway device <NUM>. In particular, the server's credential list, in some embodiments, may include the credential data and corresponding credential indexes for each of the credentials involved in and/or associated with the access control system <NUM>. As such, the server <NUM> may compare the received credential index to its credential list to identify the matching credential data and authenticate that credential data (e.g., based on the particular access control device <NUM> to which access is requested) accordingly. It should be appreciated that the server <NUM> may transmit the access control decision to the gateway device <NUM>, which in turn may transmit the access control decision to the access control device <NUM>. It should be appreciated that the access control system <NUM> may perform a suitable error handling procedure in response to determining that the credential index does not match an index of the server's credential list.

Returning to block <NUM>, if the gateway device <NUM> determines that the credential data is not included in the gateway credential list, the method <NUM> advances to block <NUM> in which the gateway device <NUM> transmits a message to the server <NUM> indicating that the credential data of the credential presented to the access control device <NUM> does not match any credential identified in the gateway credential list. In block <NUM>, the server <NUM> may determine whether to enroll the presented credential into the access control system <NUM>, for example, and assign suitable access rights to the credential. If so, the method <NUM> advances to block <NUM> in which the gateway device <NUM> transmits the credential data to the server <NUM> for enrollment.

In block <NUM>, the access control device <NUM> determines whether an access control decision/command has been received from the server <NUM> (e.g., via the gateway device <NUM>). If so, the method <NUM> advances to block <NUM> in which the access control device <NUM> executes the access control decision. For example, in some embodiments, the access control device <NUM> may control an access control mechanism (e.g., a lock mechanism, a motor, and/or other components) to grant/deny access through a passageway. However, if the access control decision <NUM> has not received an access control decision/command (e.g., after a predefined period of time has lapsed), the method <NUM> advances to block <NUM> in which the access control device <NUM> may authenticate the credential and make the access control decision locally at the access control device <NUM> based on the current data of the local access control database as described above.

Although the blocks <NUM>-<NUM> are described in a relatively serial manner, it should be appreciated that various blocks of the method <NUM> may be performed in parallel in some embodiments.

It should be appreciated that the methods <NUM>-<NUM> of <FIG> are generally described agnostically with respect to the particular cryptographic and other security features employed in the communications between the various devices of the access control system <NUM> for simplicity and brevity of the disclosure. However, it should be appreciated that the various communications may utilize any suitable cryptographic and/or security features consistent with the description.

According to an embodiments, a method may include receiving, by a gateway device and from an access control device, credential data received by the access control device from a mobile device in response to presentation of the mobile device to the access control device, comparing, by the gateway device, the credential data to a gateway credential list stored in a memory of the gateway device, wherein the gateway credential list identifies a plurality of credentials associated with the gateway device, and wherein each credential of the plurality of credentials is associated with a unique credential index, transmitting, by the gateway device and to a server, the unique credential index associated with the credential data in response to determining that the credential data matches a corresponding credential in the gateway credential list, and receiving, by the gateway device and from the server, an access control decision associated with the credential data in response to transmitting the unique credential index.

In some embodiments, the gateway credential list may include the plurality of credentials and a corresponding set of strictly increasing unique credential indexes.

In some embodiments, the method may further include transmitting, by the gateway device, a message to the server indicating that the credential data does not match any credential identified in the gateway credential list.

In some embodiments, the method may further include enrolling, by the server, the credential data as an authorized credential of the mobile device in response to receiving the message from the gateway device.

In some embodiments, the method may further include authenticating, by the access control device, the credential data based on a local access control database stored in a memory of the access control device in response to a determination that the access control device has not received the access control decision from the server within a predefined period of time since transmittal of the credential data to the gateway device.

In some embodiments, the method may further include receiving, by the access control device, the access control decision from the gateway device, and executing, by the access control device, the access control decision to unlock a lock mechanism associated with the access control device.

In some embodiments, receiving the access control decision may include receiving the access control decision over a Bluetooth communication connection between the gateway device and the access control device.

In some embodiments, transmitting the unique credential index to the server may include transmitting the unique credential index to the server via a WebSocket communication connection between the gateway device and the server.

In some embodiments, the memory of the gateway device may have a greater amount of data storage than a memory of the access control device.

According to another embodiment, a system may include a server, an access control device configured to receive credential data from a mobile device presented to the access control device, and a gateway device communicatively coupled to the server and to the access control device, wherein the gateway device includes a memory having a gateway credential list stored thereon that identifies a plurality of credentials associated with the gateway device, each credential of the plurality of credentials being associated with a unique credential index, and wherein the gateway device is configured to receive the credential data from the access control device, compare the credential data to the gateway credential list, transmit the unique credential index associated with the credential data to the server in response to a determination that the credential data matches a corresponding credential in the gateway credential list, and receive an access control decision associated with the credential data from the server in response to transmittal of the unique credential index.

In some embodiments, the gateway device may be further configured to transmit a message to the server indicating that the credential data does not match any credential identified in the gateway credential list, and the server may be configured to enroll the credential data as an authorized credential of the mobile device in response to receipt of the message from the gateway device.

In some embodiments, the access control device may include a local access control database and may be further configured to authenticate the credential data based on the local access control database in response to a determination that the access control device has not received the access control decision from the server within a predefined period of time since transmittal of the credential data to the gateway device.

In some embodiments, the access control device may be further configured to receive the access control decision from the gateway device and execute the access control decision to unlock a lock mechanism associated with the access control device.

In some embodiments, transmittal of the unique credential index to the server may include transmittal of the unique credential index to the server via a WebSocket communication connection between the gateway device and the server.

According to yet another embodiment, a gateway device may include a processor and a memory comprising a gateway credential list and a plurality of instructions stored thereon, wherein the gateway credential list identifies a plurality of credentials associated with the gateway device, wherein each credential of the plurality of credentials is associated with a unique credential index, and wherein execution of the plurality of instructions by the processor causes the gateway device to receive, from an access control device, credential data received by the access control device from a mobile device in response to presentation of the mobile device to the access control device, compare the credential data to the gateway credential list, transmit, to a server, the unique credential index associated with the credential data in response to determining that the credential data matches a corresponding credential in the gateway credential list, and receive, from the server, an access control decision associated with the credential data in response to transmitting the unique credential index.

In some embodiments, the plurality of instructions may further cause the gateway device to transmit a message to the server indicating that the credential data does not match any credential identified in the gateway credential list.

In some embodiments, receipt of the access control decision may involve receipt of the access control decision over a Bluetooth communication connection between the gateway device and the access control device.

Claim 1:
A method, comprising:
receiving, by a gateway device (<NUM>) and from an access control device (<NUM>), credential data received by the access control device (<NUM>) from a mobile device (<NUM>) in response to presentation of the mobile device (<NUM>) to the access control device (<NUM>);
comparing, by the gateway device (<NUM>), the credential data to a gateway credential list stored in a memory (<NUM>) of the gateway device (<NUM>), wherein the gateway credential list identifies a plurality of credentials (<NUM>) associated with the gateway device (<NUM>), and wherein each credential (<NUM>) of the plurality of credentials (<NUM>) is associated with a unique credential index;
transmitting, by the gateway device (<NUM>) and to a server (<NUM>), the unique credential index associated with the credential data in response to determining that the credential data matches a corresponding credential (<NUM>) in the gateway credential list; and
receiving, by the gateway device (<NUM>) and from the server (<NUM>), an access control decision associated with the credential data in response to transmitting the unique credential index.