Interfacing event detectors with a network interface

Techniques and systems are provided for interfacing one or more event detectors coupled by a common interconnect with a network interface. Interconnect signals indicative of events detected by the one or more event detectors using sensor data are propagated on the common interconnect. A monitor device indirectly or directly couple to the common interconnect monitors the interconnect signals. Information about a first event detector of the one or more event detectors is inferred, in part, from the interconnect signals and transmitted via the network interface.

BACKGROUND

This disclosure relates generally to interfacing existing event detectors that may be undiscoverable by network nodes with a network interface. Examples of such event detectors include conventional smoke detectors that are typically interconnected by a common physical medium. By interconnecting conventional smoke detectors with the common physical medium, each of the smoke detectors may generate an alarm whenever any of the smoke detectors detect an event. Conventional smoke detectors accomplish with signals propagating on the common physical medium.

DETAILED DESCRIPTION OF EMBODIMENTS

Various aspects of the technology described herein are generally directed to systems, methods, and computer-readable storage media for, among other things, interfacing event detectors with a network interface. As used herein, “connected device” refers to a device having network connectivity that is configured to communicate with other computing devices via one or more networks (e.g. network150ofFIG.1). That is, a connected device is capable serving as an endpoint, connection point, and/or a redistribution point of a communication session communicatively coupling the connected device with one or more computing nodes of a network. In contrast, “unconnected device” refers to a device lacking network connectivity that is not configured to communicate with other devices via one or more networks. In an embodiment, an “event detector” is an unconnected device.

Furthermore, although the terms “step,” “block,” or “component,” etc., might be used herein to connote different components of methods or systems employed, the terms should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described. As such, the examples provided are not intended to suggest any limitation as to the scope of use or functionality of the present invention. Neither should the examples provided be interpreted as having any dependency or requirement relating to any single component or combination of components depicted.

The present disclosure describes particular embodiments in terms of detailed construction and operation to meet statutory requirements. The embodiments described herein are set forth by way of illustration only and not limitation. Those skilled in the art will recognize, in light of the teachings herein, that there may be a range of equivalents to the exemplary embodiments described herein. Most notably, other embodiments are possible, variations can be made to the embodiments described herein, and there may be equivalents to the components, parts, or steps that make up the described embodiments. For the sake of clarity and conciseness, certain aspects of components or steps of certain embodiments are presented without undue detail where such detail would be apparent to those skilled in the art in light of the teachings herein and/or where such detail would obfuscate an understanding of more pertinent aspects of the embodiments.

According to an aspect of the subject matter, a system is provided for interfacing one or more event detectors coupled by a common interconnect with a network interface. The system monitors interconnect signals propagating on the common interconnect that are indicative of events detected by the one or more event detectors. The system also analyzes the interconnect signals to generate interconnect data associated with a first event detector of the one or more event detectors. The interconnect data being information about the first event detector inferred, in part, from the interconnect signals. Furthermore, the system transmits the interconnect data to a remote client via the network interface.

In another embodiment, a computer-implemented method is provided for interfacing one or more event detectors coupled by a common interconnect with a network interface. The method includes receiving data from a first monitor device monitoring interconnect signals indicative of events detected by the one or more event detectors propagating on the common interconnect. The method also includes analyzing the data received from the first monitor device to generate a status report associated with a first event detector of the one or more event detectors. The status report including information about the first event detector inferred, in part, from the interconnect signals. The method further includes transmitting the status report to a remote client via the network interface.

In another embodiment, a system is provided for interfacing one or more event detectors coupled by a common interconnect with a network interface. The system receives data associated with interconnect signals propagating on the common interconnect at a server. The system also analyzes received data to generate a status report associated with a first event detector of the one or more event detectors. The status report including information about the first event detector inferred, in part, from the interconnect signals. Furthermore, the system transmits the status report to a remote client via the network interface.

Turning toFIG.1, an example operational environment for implementing aspects of the subject matter is depicted and referenced generally by designator100. For instance, monitor device130may implement methods500and600ofFIGS.5and6, respectively. The components shown inFIG.1are a few of the components that embodiments of the present invention may interact with during operation. Accordingly the components therein are described with an emphasis on function and in brief for the sake of simplicity. One skilled in the art will recognize that operational environment100is but one example of a suitable operational environment for implementing aspects of the invention. As such, system100is not intended to suggest any limitation as to the scope of use or functionality of the invention.

Operational environment100includes event detector110, monitor device130, server140, and client device160. Each of the components included in operational environment100are operatively coupled to each other as appropriate for carrying out their respective functions. For example, event detector110is interconnected with one or more event detectors (not shown) via a common physical medium (common interconnect120) that is adapted to propagate interconnect signals among the event detectors. Also, monitor device130, server140, and client device160are configured to communicate data via network150. In an embodiment, event detector110is incapable of communicating data via network150. In an embodiment, operational environment100also includes switch170and router180to facilitate communication via network170. In an embodiment, one or more of the functionalities described below with respect to monitor device130may be implemented in switch170, router180, or a combination thereof. Various embodiments of aspects of monitor device130are further described herein below with respect toFIGS.13A-13C.

Event detector110is configured to detect at least one event associated with a physical environment proximate to event detector110's location. Examples of suitable devices for implementing event detector110include a motion detector, a gas detector, a radio frequency (“RF”) detector, a smoke detector, a presence detector, and the like. Event detector110detects the at least one event using sensor data indicative of a physical quantity associated with the physical environment. The sensor data that event detector110uses to detect the at least one event is provided by one or more sensors associated with event detector110. In an embodiment, the one or more sensors include an internal sensor contained within a housing of event detector110. Responsive to detecting the at least one event, event detector110causes an alert indicator associated with event detector110to generate a sensory notification that alerts nearby observers of the detected event. As used herein, “sensory notification” refers to sensory stimuli capable of being perceived by one or more senses of an observer.

Event detector110is further configured to forward an interconnect signal to the one or more event detectors via common interconnect120. In an embodiment, an interconnect signal corresponds to an alert

The interconnect signal configured to inform the one or more event detectors that event detector110has detected an event. In operational environment100, interconnect signals are propagated among the event detectors to enable each of the event detectors to generate a sensory notification when any single event detector (e.g. event detector110) detects an event. That is, each event detector among the one or more event detectors utilize interconnect signals to communicate to the remaining event detectors that an event was detected. Examples of interconnect signals are discussed below with respect toFIGS.11-12. Accordingly, event detector110is configured to cause the alert indicator to generate a sensory notification in response to receiving an interconnect signal via common interconnect120.

Monitor device130is generally configured to monitor interconnect signals associated with event detector110by interfacing with common interconnect120. In an embodiment, monitor device130directly interfaces with common interconnect120. For example, monitor device130may be directly hardwired to common interconnect120. In an embodiment, monitor device130indirectly interfaces with common interconnect120thereby electrically isolating monitor device130from common interconnect120. For example, monitor device130may indirectly interface with common interconnect120using optical, inductive, capacitive, or similar isolation coupling techniques.

Monitor device130is further configured to generate interconnect data based at least in part on interconnect signals propagating along common interconnect120. As used herein “interconnect data” refers to information about an event detector inferred, in part, from interconnect signals propagating on a common physical medium interconnecting the event detectors. In an embodiment, interconnect data includes information about event detector110's alarm status. For example, interconnect data may include information indicating that event detector110's alarm status is activated (i.e. event detector110detected an event), non-activated (i.e. event detector110has not detected an event). In an embodiment, the interconnect data includes further information about the event detected by event detector110. For example, what type of event was detected, where the event was detected, and the like. As another example, when multiple event detectors are interconnected via interconnect120, interconnect data may include information about which event detector among the multiple event detectors detected an event.

In an embodiment, interconnect data includes information about an event detector's operational status. For example, interconnect data may include information indicating that event detector110's operational status is fully functional, degraded functionality, non-functional, and the like. In an embodiment, monitor device130generates interconnect data that includes identifying information about event detector110. For example, monitor device130may infer event detector110's manufacturer, model number, configuration, and the like.

In an embodiment, monitor device130is configured to generate interconnect metadata based at least in part on secondary data associated with the interconnect data. As used herein “interconnect metadata” refers to information providing context to interconnect data that monitor device130obtains from sources external to the common interconnect. For example, interconnect metadata may include time stamp information, sensor data provided by sensors unassociated with event detector110, a confidence value associated with current interconnect data derived from previous interconnect data, and the like.

Monitor device130is further configured to communicate any combination of interconnect data and interconnect metadata (if available) via network150to one or more devices for further processing. For example, monitor device130may communicate any combination of interconnect data and interconnect metadata to server140for further processing. In an embodiment, monitor device130communicates such data via network150on a continuous basis. In an embodiment, monitor device130communicates such data via network150on a periodic basis. In an embodiment, monitor device130receives a predefined interval (e.g. every 5 minutes, 12 minutes, hour, 2 hours, etc.) for the periodic basis from a remote client (e.g. server140or client device160). In an embodiment, monitor device130communicates such data via network150in response to determining a predefined criterion is met. Examples of predefined criterion include event detector110detecting an event, event detector110's operational status changes, a confidence value associated with current interconnect data falls below a predetermined threshold, and the like. In an embodiment, monitor device130communicates such data in response to a request from a remote device.

Server140provides computing resources to remote clients (e.g. monitor device130and client device160) via network150. Server140may be implemented using one or more computing devices each composed of well-known hardware components such as one or more processors coupled to network interfaces and storage devices. In an embodiment, a computing device further includes a virtualization component (e.g. hypervisor or virtual machine monitor) permitting a plurality of computing devices to share underlying physical hardware of the computing device. The one or more processors of server140execute various software components (e.g. computer executable instructions) loaded from non-transitory storage devices. By executing the software components, the one or more processors are configured to perform various functionalities on behalf of the remote clients.

In an embodiment, server140is a cloud-based server providing a shared pool of configurable computing resources to remote clients as a service. That is, server140may be implemented with a service-oriented architecture in which software components executing on hardware resources associate with server140provide services to other software components executing on remote devices (e.g. monitor device130and client device160). Examples of such services provided by server140include infrastructure services, platform services, software application services, or a combination thereof. In an embodiment, any combination of interconnect data, interconnect metadata, and any other data corresponding to the interconnect signals propagating along common interconnect120is stored on server140. In an embodiment, server140processes any combination of interconnect data, interconnect metadata, and any other data corresponding to the interconnect signals propagating along common interconnect120for client device160's consumption.

Network150represents any communication network that enables computing devices to exchange data. Network150may include a combination of discrete networks that may use different communication protocols, but is depicted in simple form to not obscure other aspects of the present invention. For example, network150may be implemented using a cellular network, a WiFi/broadband network, a local area network (LAN), a wide area network (WAN), a telephony network, a fiber-optic network, the Internet, or a combination thereof.

Client device160represents a computing device that is adapted to exchange data with another computing device via network150. Some lower-level details of client device160are not shown so as to not obscure embodiments of the present invention. For example, client device160may include a bus that directly or indirectly couples the following devices: memory; one or more processors; one or more presentation components such as a display or speaker; input/output (I/O) ports; I/O components; and a power supply such as a battery.

Client device160may take on any of a variety of forms. By way of example, client device160may be a mobile telephone, smart phone, laptop computing device, desktop computing device, server, tablet computer, personal digital assistant (PDA), or any other computing device. Client device160may be associated with a user. The user is the person submitting instructions and interacting with client device160. Operational environment100may include any number of client devices. A single client device is shown for the sake of simplicity.

FIG.2depicts an operational environment for implementing aspects of the present invention is depicted and referenced generally by designator200. For instance, base station290may implement methods700and800ofFIGS.7and8, respectively. In an embodiment, the components of operation environment200operate in a similar manner as the components of operation environment100unless indicated otherwise. Event detectors110A and110B are interconnected via a common physical medium (common interconnect120) that is adapted to propagate interconnect signals among the event detectors. In operational environment200, base station290, server140, and client device160are configured to communicate data via network150. In an embodiment, the event detectors (110A and110B) as well as the monitor devices are incapable of communicating data via network150.

Base station290and one or more monitor devices (e.g. monitor devices130A and/or130B) communicate data via communication links295. In an embodiment, the one or more monitor devices are communicatively coupled via a communication link295. Communication links295each represent one or more bidirectional communication paths that communicatively couple the one or more monitor devices and/or base station290. In an embodiment, communication link295includes at least one wireless link governed by a wireless communication protocol. Examples of such wireless communication protocols include Wi-Fi, Zigbee, Z-Wave, Bluetooth, Bluetooth Low Energy, Near-Field Communications, and the like. In an embodiment, communication link295includes at least one wired link governed by a wired communication protocol. Examples of such wired communication protocols include Ethernet, ATM, Token Ring, FDDI, and the like. In an embodiment, communication link295includes a telecommunication link governed by a telecommunication protocol. Examples of such telecommunication protocols include CDMA, EvDO, GPRS, TDMA, GSM, WiMax technology, LTE, LTE Advanced, and the like.

Base station290, in general, serves as an end access point for remote clients (e.g. server140or client device160) to consume information associated with interconnect data via network150. In operational environment200, a remote client establishes a communication session with a network interface of base station290. Base station290and the remote client exchange communications regarding interconnect data within the communication session. For example, base station290may receive an alert instruction from a remote client within a communication session via the network interface. As another example, base station290may communicate a status report associated with one or more of the event detectors to the remote client within the communication session via the network interface.

Base station290receives information associated with interconnect data for remote clients to consume using data received from one or more monitor devices. Similar to monitor device130ofFIG.1, the one or more monitor devices of operational environment200monitor interconnect signals propagating on a common interconnect coupling one or more event detectors. In an embodiment, the monitor devices analyze the interconnect signals propagating on the common interface and the data received by base station290is any combination of interconnect data and interconnect metadata.

In an embodiment, the one or more monitor devices do not analyze the interconnect signals propagating on the common interface and the data received by base station290is raw data representing the interconnect signals. In an embodiment, base station290generates any combination of interconnect data and interconnect metadata based in part on its own analysis of the raw data. In an embodiment, base station290generates any combination of interconnect data and interconnect metadata based in part on its own analysis of the raw data and secondary data received from a second monitor device (e.g. monitor device130B). In an embodiment, base station290generates any combination of interconnect data and interconnect metadata based in part on its own analysis of the raw data and secondary data received from a sensor not associated with the one or more monitor devices.

In an embodiment, at least two monitor devices among the multiple monitor devices are interfaced with different event detectors. In an embodiment, at least two monitor devices among the multiple monitor devices are interfaced with different common interconnects. In an embodiment, base station290provides computing resources to the one or more monitor devices. Examples of such computing resources include processing resources, communication resources, storage resources, or a combination thereof. For example, base station290may provide monitor device130A with storage resources to store historical data associated with the interconnect signals propagating along the common interconnect. As another example, base station290may provide monitor device130B with communication resources to directly communicate with client device160(or vice versa).

FIG.3depicts an example of an event detector110suitable to implement the functionalities described above with respect to event detector110ofFIG.1. As illustrated by the embodiment depicted inFIG.3, event detector110includes sensor310, controller320, alert indicator330, and interface340. In an embodiment, event detector110also includes internal power source350, data store360, or a combination thereof.

Sensor310is configured to measure a physical quantity associated with a physical environment proximate event detector110. Upon measuring the physical quantity, sensor310converts the physical quantity into sensor data representative of the physical quantity. Examples of sensor310include an electrical sensor, an electrochemical sensor, a tactile sensor, a photoelectric sensor, a pressure sensor, a pyroelectric sensor, a fluid velocity sensor, a radiation sensor, a mechanical variation sensor, and the like. In an embodiment, event detector110includes a plurality of sensors with two or more sensors among the plurality of sensors being configured to measure different physical quantities associated with an environment proximate to event detector110.

Controller320is generally configured to detect one or more events associated with a physical environment proximate a location of event detector110based on sensor data provided by one or more sensors (e.g. sensor310). In an embodiment, controller320is configured to detect an event by executing a custom application stored in memory (e.g. data store360) communicatively coupled to controller320. Responsive to detecting an event, controller320is configured to generate an interconnect signal indicative of the detected event. In an embodiment, controller320is configured to generate a plurality of unique interconnect signals with each unique interconnect signal among the plurality corresponding to a particular detected event.

Controller320forwards the interconnect signal to one or more alert indicators (e.g. alert indicator330) to generate a sensory notification. In an embodiment, controller320is configured to select a particular alert indicator among the one or more alert indicators to forward the interconnect signal. Controller320is further configured to forward the interconnect signal via interface340to a common physical medium (e.g. common interconnect120ofFIG.1). As discussed above with respect toFIG.1, the common physical medium couples event detector110with one or more event detectors. By forwarding the interconnect signal to the common physical medium, controller320enables at least one event detector to likewise generate a sensory notification to indicate detection of an event.

Alert indicator330is configured to generate the sensory notification in response to receiving an interconnect signal from controller320. For example, event detector110may be a smoke event detector. In this embodiment, alert indicator330may generate a conventional smoke alarm sound in response to receiving an interconnect signal indicative of a detected smoke event. In an embodiment, alert indicator330is configured to generate a sensory notification in response to event detector110receiving an interconnect signal via interface340. In an embodiment, alert indicator330is configured to generate a multi-sensory notification capable of being perceived by a plurality of the observer's senses. For example, a multi-sensory notification may be implemented as a combination of optical and acoustic waves. A sensory notification is characterized by one or more attributes, such as a frequency, a duty cycle, an amplitude, a periodicity, and the like. In an embodiment, a sensory notification includes a message component that provides specific information about a detected event. For example, if event detector110is a smoke event detector, the sensory notification may include a message component stating that smoke has been detected in the specific location of the smoke event detector. Continuing with this example, the message component may further provide routing information to enable an observer to identify a safe means of egress.

Interface340is configured to couple event detector110to an external power source and other event detectors. As illustrated byFIG.3, interface340includes power interface342and input/output (“I/O”) interface344. Power interface242is configured to operatively couple event detector110with an external power source thereby enabling event detector110to receive electrical energy from the external power source. I/O interface344is configured to communicatively couple event detector110with the common physical medium. I/O interface344thereby enables propagation of the interconnect signals between event detector110and the one or more interconnected event detectors via the common physical medium. In an embodiment, interface340is a standard three-wire interconnect. In an embodiment, interface340includes components that perform signal conditioning operations that modify the interconnect signals propagating through I/O interface344. Examples of signal conditioning operations include amplification, filtering, isolation, conversion, and the like.

In an embodiment, event detector110includes internal power source350that provides electrical energy to event detector110. In an embodiment, internal power source350serves as a primary source of electrical energy for event detector110. In an embodiment, internal power source350serves as an auxiliary power source for event detector110. In an embodiment, internal power source350stores electrical energy received via power interface342.

In an embodiment, event detector110includes data store360providing internal data storage capabilities to event detector110. In an embodiment, a custom application configuring controller320to detect an event is stored in data store360. In an embodiment, data store360aggregates at least one dataset composed of historical data associated with event detector110, such as sensor data, interconnect signals, alert signals, and the like. In an embodiment, data store360stores metadata associated with sensor data, interconnect signals, alert signals, or a combination thereof. For example, metadata may include a timestamp, location data, source identifying information, sampling intervals, sensor data type, and the like.

Turning toFIG.4, an example of a monitor device130suitable for implementing embodiments of the present disclosure is depicted. In an embodiment, monitor device130is suitable to implement the functionalities described above with respect to monitor device130ofFIG.1. As shown, monitor device130includes interconnect interface410, data store420, processor430, analytics circuitry440, communication circuitry450, power circuitry460, and control circuitry470. In an embodiment, monitor device130includes a subset of components depicted inFIG.4. For example, in some embodiments monitor device130may be implemented without actuator470.

Interconnect interface410is configured to interface monitor device130with a common interconnect to monitor interconnect signals associated with one or more event detectors (e.g. event detector110ofFIG.1). In an embodiment, interconnect interface410is configured to directly interface monitor device130with the common interconnect. In an embodiment, interconnect interface410is configured to indirectly interface monitor device130with the common interconnect. In an embodiment, monitor device130interfaces with secondary data sources via interconnect interface410to obtain secondary data usable to generate interconnect metadata.

Data store420is configured to provide internal data storage capabilities to monitor device130. In an embodiment, interconnect signals obtained via interconnect interface410are stored locally by monitor device130in data store420. In an embodiment, data store420aggregates at least one dataset composed of historical data associated with interconnect signals monitored by monitor device130, such as previously obtained interconnect signals, secondary data, and the like. In an embodiment, data store420stores metadata associated with sensor data, interconnect signals, alert signals, or a combination thereof. Examples of such metadata include a timestamp, location data, source identifying information, sampling intervals, sensor data type, and the like.

Processor430is generally configured to execute processor executable instructions, data structures, program modules and other data tangibly stored in computer storage media (e.g. data store420) communicatively coupled to monitor device130. In an embodiment, processor430enables monitor device130to implement one or more functionalities described herein by executing such processor executable instructions. For example, processor430may execute processor executable instructions to instantiate one or more functionalities associated with analytics circuitry440.

It should be appreciated by those skilled in the art that the functionality of monitor device130implemented through processor executable instructions may readily be converted into a hardware implementation by well-known design rules in the electrical engineering and software engineering arts. For example, the functionality of monitor device130described herein can be converted into a hardware implementation using application-specific integrated circuits, microcontrollers, field programmable gate arrays, digital signal processors, and the like. Those skilled in the art will likewise recognize that the functionality of monitor device130may readily be implemented through a hybrid approach composed of combination of hardware and software techniques.

Analytics circuitry440is generally configured to analyze data associated with interconnect signals obtained by monitor device130from a common interconnect. Analytics circuitry440includes data retrieval service442, inference service444, context service446, and context service448. In an embodiment, one or more of the functionalities of analytics circuitry440are implemented by at least one processor of a base station (e.g. base station290ofFIG.2). In an embodiment, one or more functionalities of analytics circuitry440are implemented by at least one processor of a remote server (e.g. server140ofFIG.1or cloud-based server900ofFIG.9).

Data retrieval service442is configured to retrieve data associated with the interconnect signals as directed by processor430, and provide such data to the other services of analytics circuitry440for further processing. In an embodiment, data retrieval service442retrieves at least a portion of the data from data store420. In an embodiment, data retrieval service442retrieves at least a portion of the data from interconnect interface410. In an embodiment, data retrieval service442is configured to retrieve secondary data associated with the interconnect signals from interconnect interface410.

Inference service444is configured to receive input data associated with interconnect signals from data retrieval service442, machine learning service448, or a combination thereof and generate interconnect data. Inference service444outputs the interconnect data to a network interface via communication circuitry450. In an embodiment, inference service444determines one or more characteristics of an interconnect signal associated with an event detector using input data received from data retrieval service442. As used herein, “characteristics of an interconnect signal” refers to measurable physical properties of the interconnect signal. For example, measurable physical properties may include electrical properties (e.g. resistance, reactance, voltage, current, phase, resonant frequency, etc.) or observable patterns (e.g. a repeated sequence of changes in the electrical properties). For example, inference service444may compare a voltage associated with an interconnect signal at a current time to a voltage value associated with the interconnect signal at a prior time. As another example, inference service444may identify a repeated pattern of phase shifts associated with an interconnect signal.

In an embodiment, the input data from data retrieval service442includes information associated with the interconnect signals provided by a second monitor device (e.g. monitor device130B ofFIG.2). Inference service444may generate interconnect data by comparing one or more characteristics of the interconnect signals from the information provided by the second monitor device with comparable information as measured by monitor device130. For example, inference service444may compare a current value of an interconnect signal as provided by the second monitor device with a current value of the interconnect signal as measured by monitor device130. Inference service444may generate interconnect data based on the results of that comparison.

In an embodiment, inference service444may generate interconnect data by applying information associated with an interconnect signal received from data retrieval service442as an input to a machine learned model received from machine learning service446. For example, inference service444may input information associated with an interconnect signal at a current time from data retrieval service442into a machine learned model trained using previously obtained information associated with the interconnect signal. The machine learned model may generate interconnect data based on that input.

In an embodiment, the information output by inference service444is information about at least one event detector's alarm status. For example, inference service444may determine an event detector's alarm status is activated. That is, the event detector has detected an event associated with a physical environment proximate a location of the event detector. As another example, inference service444may determine an event detector's alarm status is inactivated. That is, the event detector has not detected an event associated with a physical environment proximate a location of the event detector.

In an embodiment, the information output by inference service444is information about at least one event detector's operational status. For example, inference service444may determine an event detector's operational status is fully functional. That is, inference service444may determine the event detector is functioning properly (e.g. the event detector is fully powered or substantially operating without apparent fault).

As another example, inference service444may determine an event detector's operational status is degraded. That is, inference service444may determine the event detector is functioning less than fully functional, but more than non-functional (e.g. the event detector is not fully powered or operating with apparent faults). As another example, inference service444may determine an event detector's operational status is non-functional. That is, inference service444may determine the event detector has ceased functioning (e.g. the event detector lost power or ceased operating).

In an embodiment, the information output by inference service444is identifying information about at least one event detector. As discussed above, examples of identifying information include the event detector's manufacturer, model number, configuration, and the like. For example, inference service444may compare one or more characteristics of an interconnect signal associated with an event detector at a current time with an interconnect signal associated with the event detector at a prior time.

As another example, inference service444may compare one or more characteristics of an interconnect signal associated with a first event detector at a current time with an interconnect signal associated with a second event detector. In an embodiment, the interconnect signal associated with the second event detector is from the current time. In an embodiment, the interconnect signal associated with the second event detector is from a prior time.

As another example, inference service444may compare one or more characteristics of an interconnect signal associated an event detector at a current time with a model interconnect signal. In an embodiment, the model interconnect signal is obtained from a machine learned model trained with historical data associated with the event detector. In an embodiment, the model interconnect signal is obtained from a machine learned model trained with historical data associated a plurality of event detectors. In an embodiment, the model interconnect signal is received via a network interface.

Context service446is configured to receive input data from data retrieval service442, inference service444, or a combination thereof and generate interconnect metadata. In an embodiment, context service446is configured to utilize a machine learned model received from machine learning service448to generate interconnect metadata. In an embodiment, context service446is configured to generate interconnect metadata by analyzing data collected from a plurality of devices (e.g. monitor devices, event detectors, etc.).

In an embodiment, context service446generates interconnect metadata using secondary data received from data retrieval service442in response to receiving interconnect data from inference service444. For example, inference service444may generate interconnect data for an event detector (e.g. a smoke detector) at a current time. In this example, the interconnect data may indicate that the event detector's alarm status is activated (i.e. the event detector has detected an event proximate its location). Upon receiving the interconnect data, context service446acquires sensor data from a temperature sensor external to the event detector at a location proximate to the event detector at the current time. Context service446may generate interconnect metadata indicative of the sensor data associated with the interconnect data.

Continuing with this example, the sensor data from the temperature sensor may indicate that a temperature of the location is normal room temperature. Context service446may further generate a low confidence value upon receiving sensor data from a sensor external to the event detector that is inconsistent with the detected event. Context service446may generate interconnect metadata indicative of the low confidence value associated with the interconnect data. As another example, context service446may receive interconnect data generated by inference service444based in part on interconnect signals. Upon receiving the interconnect data, context service446acquires time stamp information from data retrieval service442to determine a current time. In this example, the sensor data from the temperature sensor may indicate that a temperature of the location is normal room temperature.

In an embodiment, context service446generates interconnect metadata using historical data received from data retrieval service442in response to receiving interconnect data from inference service444. For example, context service446may receive interconnect data for an event detector at a current time from inference service444. In response, context service446may acquire historical data associated with the event detector from data retrieval service442. Upon analyzing the historical data associated with the event detector, context service446may determine that the previous events detected by the event detector were identified as false alerts. Context service446may generate interconnect metadata indicative of the event detector's history of false alerts associated with the interconnect data.

In an embodiment, context service446generates interconnect metadata directly from interconnect data received from inference service444. For example, context service446may receive interconnect data for an event detector that indicates the event detector's alarm status is activated and operational status is degraded. In response, context service446may generate interconnect metadata indicative of the degraded operational status of the event detector for the interconnect data. In an embodiment, a reduced confidence score may be used to indicate the degraded operational status.

Machine learning service448is configured to train machine learned models using training data obtained from data sets composed of historical interconnect signal data received from data retrieval service442. Once trained, the machine learned models may be used by inference service444and/or context service446to generate interconnect data and interconnect metadata, respectively. Machine learning service448may employ any known artificial intelligence, machine learning, knowledge-based, or rule-based mechanisms to train machine learned models. Examples of such mechanisms include support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines, classifiers, and the like.

In training the machine learned models (e.g. find optimal values of for model parameters), machine learning service448may use an objective function to measure the performance of the models using a subset of the training data as a function of the model parameters. For example, optimal values of the parameters of a model may be determined by finding a minimum of the objective function. As another example, multiple iterations of a stochastic gradient descent procedure may be performed to find the optimal values of the parameters. In an embodiment, the machine learning model is composed of a single level of linear or non-linear operations. In an embodiment, the machine learning model is a deep network composed of multiple levels of non-linear operations. For example, the machine learning model may be a neural network with one or more hidden layers.

Communication circuitry450is configured to communicatively couple monitor device130with the one or more connected devices (e.g. monitor device130A, monitor device130B, server140, client device160, and base station290ofFIGS.1-2). Examples of devices usable to implement communication circuitry450include a network interface controller, a modem, various modulators/demodulators and encoders/decoders, wireless interface cards, wired interface cards, antennas, and the like. Monitor device130may utilize communication circuitry450to exchange data (e.g. interconnect data, interconnect metadata, and raw data) with one or more connected devices.

Power circuitry460includes various hardware and software configurations that operatively couples one or more components of monitor device130to a power source. As used herein, “coupled” includes direct coupling and indirect coupling via another component, element, circuit, or module. For example, power circuitry460may be hard wired to a power source or directly coupled to a power plug that is in turn inserted into a corresponding component of the power source. In embodiments where indirect coupling is used, the intervening component, element, circuit, or module may adjust a current level, a voltage level, and/or a power level associated with the power source. For example, an inductive coupling device may intervene between power circuitry460and the power source. As another example, a capacitive coupling device may intervene between power circuitry460and the power source.

In an embodiment, the power source is an internal power source. Examples of internal power sources include a battery, a storage capacitor, a small-scale energy source (e.g. piezoelectric, magnetic induction, or thermoelectric generators, energy harvesting devices, and the like. In an embodiment, the power source is an external power source. Examples of external power sources include one or more event detectors, power lines associated with a common interconnect coupled to the one or more event detectors, an AC power outlet, a power storage device (e.g. a battery) proximate monitor device130's location, an energy harvesting device, and the like.

Control circuitry470is exchange data with a controlling mechanism that manages, commands, directs, or regulates another device thereby causing that device to take defined actions. Examples of controlling mechanisms include programmable logic controllers, microcontrollers, distributed control systems, home automation hubs, and the like.

In an embodiment, control circuitry470exchanges data with a controlling mechanism in response to a command from a remote client received via a network interface. For example, a command may be received from a remote client (e.g. server140or client device160ofFIG.1) via a network interface to turn off a gas valve. The command may be received in response to transmitting interconnect data to the remote client that indicates a smoke detector's alarm status is activated. Upon receiving the command, control circuitry470may exchange data with a controlling mechanism associated with the gas valve thereby causing the gas valve to move to a closed position.

In an embodiment, control circuitry470exchanges data with a controlling mechanism in response to a command from processor430, a second monitor device, a base station associated with monitor device130, or a combination thereof. For example, a base station may receive interconnect data indicating that an event detector associated with an electrical power feed has detected a loss of power event. Upon receiving that interconnect data, the base station may send a command to activate an electrical generator. In response to that command, control circuitry470may exchange data with a controlling mechanism associated with the electrical generator to activate the electrical generator.

FIG.5is a flowchart illustrating an embodiment of a method500for interfacing event detectors with a network interface. Method500may be performed by a monitor device (e.g. monitor device120ofFIG.1) interfaced with a common interconnect coupled to one or more event detectors. At step510, the monitor device monitors signals associated with a first event detector propagating on the common interconnect. In an embodiment, the monitor device is directly interfaced with the common interconnect. In an embodiment, the monitor device is indirectly interfaced with the common interconnect and thereby electrically isolated from the one or more event detectors.

At step520, the monitor device analyzes the signals propagating on the common interconnect to generate interconnect data. As discussed above, the interconnect data being information about event detectors that the monitor device infers, in part, from the signals propagating on the common interconnect. In an embodiment, the interconnect data includes information about the first event detector's alarm status. In an embodiment, the interconnect data includes information about the first event detector's operational status. In an embodiment, the interconnect data includes identifying information about the first event detector.

At optional step530, the monitor device generates interconnect metadata based at least in part on secondary data associated with the interconnect data. In an embodiment, the interconnect metadata includes signals associated with a second event detector propagating along the common interconnect. In an embodiment, the interconnect metadata includes time stamp information associated with the interconnect data. In an embodiment, the interconnect metadata includes sensor data provided by sensors unassociated with the first event detector. In an embodiment, the interconnect metadata includes a confidence value associated with current interconnect data derived from previous interconnect data.

At step540, the monitor device communicates any combination of the interconnect data and the interconnect metadata via a network interface to a remote client. In an embodiment, the remote client is a service executing on a remote server. In an embodiment, the remote server is a cloud-based server. In an embodiment, the remote client is a service executing on a client device. In an embodiment, the monitor device communicates any combination of interconnect data and interconnect metadata on a continuous basis. In an embodiment, the monitor device communicates any combination of interconnect data and interconnect metadata on a periodic basis. In an embodiment, the monitor device receives a predefined interval for the periodic basis from the remote client. In an embodiment, the monitor device communicates any combination of interconnect data and interconnect metadata upon determining a predefined criterion is met. In an embodiment, the monitor device communicates any combination of interconnect data and interconnect metadata in response to a request from the remote client.

FIG.6is a flowchart illustrating an embodiment of a method600for interfacing event detectors with a network interface. Method600may be performed by a monitor device (e.g. monitor device120ofFIG.1) interfaced with a common interconnect coupled to one or more event detectors. At step610, the monitor device receives an alert instruction from a remote client via a network interface. The alert instruction of step610is associated with a request to cause at least one event detector among the one or more event detectors to generate a sensory notification. In an embodiment, the alert instruction is unassociated with an event a first event detector is configured to detect. For example, the first event detector may be a motion detector configured to detect a motion event. In this example, the alert instruction may be associated with a fire emergency event, which is unassociated with the motion event the first event detector is configured to detect. In an embodiment, the alert instruction is directed to a subset of the one or more event detectors.

At step620, in response to receiving the alert instruction, the monitor device generates an alert signal adapted to cause the first event detector to generate a sensory notification. In an embodiment, the monitor device generates the alert signal based in part on monitoring signals associated with the one or more event detectors propagating on a common interconnect. In an embodiment, the monitor device generates the alert signal based in part on monitoring signals identified as being associated with the first event detector. In an embodiment, the alert signal is adapted to cause the first event detector to generate a multi-sensory notification. In an embodiment, the alert signal specifies at least one attribute characterizing the sensory notification. In an embodiment, the alert signal specifies a message component to be included in the sensory notification by the first event detector. In an embodiment, the monitor device generates an alert signal adapted to cause a subset of the one or more event detectors to generate sensory notifications.

At step630, the monitor device transmits the alert signal onto the common interconnect coupled to the one or more event detectors. The alert signal of step630causing the first event detector to generate a sensory notification in response to receiving the alert signal via the common interconnect. In an embodiment, a second event detector not among the subset of the one or more event detectors refrains from generating sensory notifications in response to receiving the alert signal via the common interconnect.

At optional step640, the monitor device transmits a confirmation message in response to transmitting the alert signal onto the common interconnect. In an embodiment, the monitor device confirms that the first event detector has generated the sensory notification requested by the remote client prior to transmitting the confirmation message. In an embodiment, the monitor device transmits the confirmation message to the remote client sending the alert instruction. In an embodiment, the monitor device transmits the confirmation message to a remote service associated with the remote client.

FIG.7is a flowchart illustrating an embodiment of a method700for interfacing event detectors with a network interface. Method700may be performed by a base station (e.g. base station290ofFIG.2) coupled to one or more monitor devices interfaced with a common interconnect coupled to one or more event detectors. At step710, the base station receives data from a first monitor device among the one or more monitor devices that monitor signals propagating along the common interconnect. In an embodiment, the data is received via a wired connection intervening between the first monitor device and the base station. In an embodiment, the data is received via a wireless connection intervening between the first monitor device and the base station. In an embodiment, the data is raw data sent by the first monitor device without analyzing the interconnect signals. In an embodiment, the data is any combination of interconnect data and interconnect metadata that the first monitor device generates in part by analyzing the signals propagating along the common interconnect.

At optional step720when the data is raw data, the base station generates any combination of interconnect data and interconnect metadata based in part on analyzing the raw data. In an embodiment, the base station generates any combination of interconnect data and interconnect metadata based in part on analyzing raw data received from a second monitor device among the one or more monitor devices. In an embodiment, the base station generates any combination of interconnect data and interconnect metadata based in part on analyzing raw data received from a second monitor device. In an embodiment, the raw data received from the second monitor device corresponds to a second event detector among the one or more event detectors. In an embodiment, the base station generates any combination of interconnect data and interconnect metadata based in part on analyzing interconnect data or interconnect metadata associated with the second event detector. In an embodiment, the interconnect data or interconnect metadata associated with the second event detector is generated by the second monitor device.

At step730, the base station analyzes the interconnect data to generate a status report associated with the first event detector. In an embodiment, the status report includes information about the first event detector's alarm status, information about the first event detector's operational status, identifying information about the first event detector, or a combination thereof. In an embodiment, the status report includes context information derived from interconnect metadata associated with the interconnect data. In an embodiment, the status report includes a confidence value associated with the interconnect data used to generate the status report. In an embodiment, the status report includes information about the operational status of the first monitor device, a subset of the one or more monitor devices, the one or more monitor devices collectively, or a combination thereof.

At step740, the base station communicates the status report via a network interface to a remote client. In an embodiment, the remote client is a session executing on a remote server. In an embodiment, the remote server is a cloud-computing platform. In an embodiment, the remote client is a mobile client device. In an embodiment, the base station communicates the status report on a continuous basis. In an embodiment, the base station communicates the status report on a periodic basis. In an embodiment, the base station receives a predefined interval for the periodic basis from the remote client. In an embodiment, the base station communicates the status report upon determining a predefined criterion is met. In an embodiment, the base station communicates the status report in response to a request from the remote client.

FIG.8is a flowchart illustrating an embodiment of a method800for interfacing event detectors with a network interface. Method800may be performed by a base station (e.g. base station290ofFIG.2) coupled to one or more monitor devices interfaced with a common interconnect coupled to one or more event detectors. At step810, the base station receives an alert instruction from a remote client via a network interface. The alert instruction of step810is associated with a request to cause at least one event detector among the one or more event detectors to generate a sensory notification. In an embodiment, the alert instruction is unassociated with an event a first event detector is configured to detect. In an embodiment, the alert instruction is directed to a subset of the one or more event detectors.

At step820, in response to receiving the alert instruction, the base station generates an alert signal adapted to cause the at least one event detector to generate a sensory notification. In an embodiment, the base station generates the alert signal based in part on data received from the one or more monitor devices regarding signals associated with the one or more event detectors propagating on a common interconnect. In an embodiment, the base station generates the alert signal based in part on monitoring signals identified as being associated with the at least one event detector. In an embodiment, the alert signal is adapted to cause the at least one event detector to generate a multi-sensory notification. In an embodiment, the alert signal specifies at least one attribute characterizing the sensory notification. In an embodiment, the alert signal specifies a message component to be included in the sensory notification by the at least one event detector. In an embodiment, the base station generates an alert signal adapted to cause a subset of the one or more event detectors to generate sensory notifications.

At step830, the base station forwards the alert signal to at least one monitor device among the one or more monitoring devices to transmit onto the common interconnect coupled to the one or more event detectors. The alert signal of step830causing the at least one event detector to generate a sensory notification in response to receiving the alert signal via the common interconnect. In an embodiment, a second event detector not among the subset of the one or more event detectors refrains from generating sensory notifications in response to receiving the alert signal via the common interconnect.

At optional step840, the base station transmits a confirmation message in response to forwarding the alert signal to the at least one monitor device. In an embodiment, the base station confirms that the at least one event detector generated the sensory notification requested by the remote client prior to transmitting the confirmation message. In an embodiment, the base station transmits the confirmation message to the remote client sending the alert instruction. In an embodiment, the monitor device transmits the confirmation message to a remote service associated with the remote client.

FIG.9is a schematic diagram illustrating an example cloud-based server900that may be used in accordance with the present disclosure. As discussed above with respect toFIG.1, cloud-based server900may provide infrastructure services, platform services, and software application services. In an embodiment, cloud-based server900is used to implement at least a portion of server140inFIGS.1and2. The infrastructure services may include virtualized resources, such as virtual machines, virtual storage, and so on. The infrastructure services may also include virtualized services, such as database services and others. Each of these infrastructure services may be deployed in an infrastructure service layer920.

The scale and various aspects, such as data, connectivity, and dependency relationships within and between service components, of an infrastructure service deployment are configurable by an administrator user. For instance, the administrator user may submit a configuration specification to cloud-based server900via a frontend interface950and service manager960. The configuration specification can be translated into infrastructure and kernel level APIs calls that create, re-create, move, or delete components such as virtual machines and services, and assign or change attributes of the components.

In addition to the infrastructure services, cloud-based server900may also provide platform services, such as an environment for running virtual machines or a framework for developing and launching a particular type of software applications. The platform services may be implemented in a platform service layer930over the infrastructure service layer #20, and may employ one or more infrastructure services configured in a particular manner. Configuration of platform services can be accomplished by program code written according to the APIs of the platform services and, optionally, the APIs of the infrastructure services that are employed in enabling the platform services.

In some examples, cloud-based server900may also provide software application services in an application service layer940. A software application can be installed on one or more virtual machines or deployed in an application framework in the platform service layer930. The software application can also communicate with one or more infrastructure service components, such as databases, in the infrastructure layer920. The installation and configuration of the software application in the application service layer940can be accomplished through APIs of the software itself and the APIs of the underlying platform and infrastructure service components.

Depending on the type of services, a cloud-service user may be granted different levels of control in configuring the services. For example, if a software application service is employed, an administrator user is given control over how the software application is configured. If a platform service is employed, an administrative user is given control over how the platform and/or application frameworks are configured. Similarly, if infrastructure services are employed, an administrative user is given control over the particular infrastructure services employed.

FIG.10is a block diagram of an example general purpose computing system1000in which embodiments of the invention may be implemented. As depicted, computing system1000includes bus1010that directly or indirectly couples the following components: memory1020, one or more processors1030, I/O interface1040, and network interface1050. Bus1010is configured to communicate, transmit, and transfer data, controls, and commands between the various components of computing system1000

Computing system1000typically includes a variety of computer-readable media. Computer-readable media can be any available media that is accessible by computing system1000and includes both volatile and nonvolatile media, removable and non-removable media. Computer-readable media may comprise both computer storage media and communication media. Computer storage media does not comprise, and in fact explicitly excludes, signals per se.

Computer storage media includes volatile and nonvolatile, removable and non-removable, tangible and non-transient media, implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes RAM; ROM; EE-PROM; flash memory or other memory technology; CD-ROMs; DVDs or other optical disk storage; magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices; or other mediums or computer storage devices which can be used to store the desired information and which can be accessed by computing system1000.

Memory1020includes computer-storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, non-removable, or a combination thereof. Memory1020may be implemented using hardware devices such as solid-state memory, hard drives, optical-disc drives, and the like. Computing system1000also includes one or more processors1030that read data from various entities such as memory1020, I/O interface1040, and network interface1050.

I/O interface1040enables computing system1000to communicate with different peripherals, such as a display, a keyboard, a mouse, etc. I/O interface1040is configured to coordinate I/O traffic between memory1020, the one or more processors1030, network interface1050, and any peripherals. Network interface1050enables computing system1000to exchange data with other computing devices (e.g. monitor device120, server140, and client device160ofFIG.1) via any suitable network (e.g. network150).

FIGS.11-12depict waveform diagrams of conventional interconnect signals propagated by event detectors on a common interconnect.FIG.11depicts an example of an interconnect signal1100propagated on a common interconnect by conventional smoke event detectors. A conventional smoke event detector generates an interconnect signal similar to interconnect signal1100in response to detecting a smoke event. As shown byFIG.11, interconnect signal1100transitions from a first voltage (e.g. 9 volts DC) to a second voltage (e.g. 0 volts DC) in response to detecting the smoke event. In response to sensing that transition from the first voltage to the second voltage, all conventional smoke event detectors coupled to the common interconnect will generate a sensory notification. Upon receiving an acknowledgement of the smoke event, interconnect signal1100transitions from the second voltage to the first voltage.

FIG.12depicts an example of an interconnect signal1200propagated on a common interconnect by conventional carbon monoxide event detectors. A conventional carbon monoxide event detectors generates an interconnect signal similar to interconnect signal1200in response to detecting a carbon monoxide event. As shown byFIG.12, unlike interconnect signal1100, interconnect signal1200indicates detection of a carbon monoxide event with using a sequence of electrical pulses. In response to sensing that sequence of electrical pulses, all conventional carbon monoxide event detectors coupled to the common interconnect will generate a sensory notification.FIGS.13A-13Cdepict various embodiments of aspects of a monitor device130as described above with respect toFIG.4.FIG.13Adiscloses a circuit connected in parallel to common interconnect120. In embodiments, the circuit ofFIG.13Ahas two portions as represented by the dashed line. The top portion is the detecting portion that detects a signal. The bottom portion is a signal injecting portion that injects a signal back onto common interconnect120. The injected signal can emulate an event signal, e.g., a smoke detection event, or can inject another signal that is processed by the detecting portion to cause, e.g., the detecting portion to take some action such as to send out a signal over wireless transceiver1306. In other embodiments, a monitor device may only have an event detecting portion and not an injecting portion. In other embodiments, a monitor device may only have an injection portion that monitors for signals incoming over wireless interface1306and outputs a signal on the common interconnect120.

In an embodiment, a signal that is output onto common interconnect120by an event detector is received by input buffer1312a. Buffer1312acould be an isolation device such as optical isolation, buffer circuitry, analog or digital radio receiver and transmitter. The output from buffer1312ais input into signal translator1308a. Signal Translator1310acould be, for example, a voltage step up/down, radio mixer, an analog to digital convertor, or any other device that translates a signal received on the common interconnect120into a signal that can be processed by a signal analyzer1302. Signal analyzer1302can be hardware, e.g., a gate array, or software operating on a processor, such as a digital signal processor. Signal analyzer1302determines whether the signal matches a known pattern. In response to determining that a signal matches a known pattern, signal analyzer1302can cause a signal to be output over wireless interface1306. The signal output over1306may be a signal that indicates to other devices that an event was detected on a particular common interconnect120.

In embodiments, another portion of the circuit ofFIG.13Acomprises the signal injector portion of the circuit. The signal injector portion comprises a signal creator1304. Signal creator1302could share some or all of the hardware of signal analyzer1302. For example, they may both reside on the same processor. Signal creator1304outputs a signal that is translated by signal translator1310a. Signal translator may comprise, for example, a digital to analog converter, that outputs an analog signal that is processed by buffer1314aand injected back onto common interconnect120.

In another embodiment, as shown inFIG.13B, the circuit can be installed in series. In that case, buffer1312awould receive a signal arriving on one portion of the common interconnect120and process the signal as described with respect toFIG.13A. In this embodiment, the common interconnect120is not continuous, e.g., it was broken during the installation of the circuit. In this embodiment, the could be a second portion of the circuit comprising, signal translators1308b,1310b, buffers1312band1314b. In this configuration, a determination could be made regarding the direction of the signal received on common interconnect120. Similarly, the direction that the signal is injected onto common interconnect120can also be controlled.

In another embodiment, the circuit could comprise passive components. An example embodiment is illustrated with respect toFIG.13C. In that example embodiment, a series of, e.g., resistors131ba,1318b, and1318care provided. The signal analyzer1302is connected between the resistors and can determine from which direction a signal is arriving. In addition to the foregoing configurations and embodiments, other embodiments may combine aspects of both passive and active components. For example, an active signal injector circuit may be combined with a passive signal detection circuit.

It should be understood that the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. The subject matter presented herein may be implemented as a computer process, a computer-controlled apparatus or a computing system or an article of manufacture, such as a computer-readable storage medium. The techniques, or certain aspects or portions thereof, may, for example, take the form of program code (i.e., instructions) embodied in tangible storage media or memory media implemented as storage devices, such as magnetic or optical media, volatile or non-volatile media, such as RAM (e.g., SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc., that may be included in computing devices or accessible by computing devices. When the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the disclosure. In the case of program code execution on programmable computers, the computing device generally includes a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device.

One or more programs that may implement or utilize the processes described in connection with the disclosure, e.g., through the use of an application programming interface (API), reusable controls, or the like. Such programs are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system. However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.

The present disclosure describes particular embodiments and their detailed construction and operation. The embodiments described herein are set forth by way of illustration only and not limitation. Those skilled in the art will recognize, in light of the teachings herein, that there may be a range of equivalents to the exemplary embodiments described herein. Most notably, other embodiments are possible, variations can be made to the embodiments described herein, and there may be equivalents to the components, parts, or steps that make up the described embodiments. For the sake of clarity and conciseness, certain aspects of components or steps of certain embodiments are presented without undue detail where such detail would be apparent to those skilled in the art in light of the teachings herein and/or where such detail would obfuscate an understanding of more pertinent aspects of the embodiments.

The terms and descriptions used above are set forth by way of illustration only and are not meant as limitations. Those skilled in the art will recognize that those and many other variations, enhancements and modifications of the concepts described herein are possible without departing from the underlying principles of the invention. The scope of the invention should therefore be determined only by the following claims and their equivalents.