Patent Publication Number: US-9892621-B2

Title: Systems and methods for intelligent alarming

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 14/335,699 filed Jul. 18, 2014 (now U.S. Pat. No. 9,552,711), which is hereby incorporated by reference. 
    
    
     TECHNICAL FIELD 
     This patent specification relates to systems and methods for controlling a hazard detection system. More particularly, this patent specification relates to systems and methods for managing alarming states and pre-alarming states of the hazard detection system. 
     BACKGROUND 
     Hazard detection systems, such as smoke detectors, carbon monoxide detectors, combination smoke and carbon monoxide detectors, as well as systems for detecting other conditions have been used in residential, commercial, and industrial settings for safety and security considerations. Many hazard detection systems operate according to a set of standards defined by a governing body (e.g., Occupational Safety and Health Administration), or companies approved to perform safety testing (e.g., Underwriters Laboratories (UL)). For example, UL defines thresholds for when a smoke detector should sound an alarm and for when a carbon monoxide detector should sound an alarm. Similar thresholds are set forth for how the alarms are expressed to occupants (e.g., as shrieking or shrill audible sounds having certain minimum loudness metrics and repetition patterns). Conventional hazard detection systems that operate solely based on these thresholds might be characterized as being relatively limited or simplistic in their modes of operation. For example, their mode of operation may be binary: either sound the alarm or do not sound the alarm, and the decision whether to sound the alarm may be based on a reading from only one type of sensor. These relatively simple and conventional systems can bring about one or more disadvantages. For example, users may be subjected to false alarms, or alarming associated with underlying causes or conditions that are not actually hazardous, that might have been avoided if there were a more complete assessment of the environment before the alarm were sounded. Alternatively, users may be subjected to certain conditions that may indeed be potentially hazardous or that may indeed be of genuine concern without the benefit of an associated alarm or warning, for the reason that while there may have been certain elevated levels of one or more hazard conditions, the binary thresholds for triggering the alarm may not have been met. 
     SUMMARY 
     Systems and methods for using multi-criteria state machines to manage alarming states and pre-alarming states of a hazard detection system are described herein. Alarming states refer to activation of an alarm, display, or other suitable mechanism to alert an occupant of a current dangerous condition. In an alarming state, a relatively loud alarm can be sounded to alert occupants. Pre-alarming states refer to activation of a speaker, display, or other suitable mechanism to warn an occupant that conditions are approaching that of alarming state conditions. In a pre-alarming state, a voice message or other audible sound can be played through a speaker to provide advanced warning to occupants that a dangerous condition may be imminent. In some cases, if a hazardous condition is actually present, the pre-alarm warning may be provided before the actual alarm goes off, thereby providing the occupant with additional time to take appropriate action. In other cases, the advanced warning can enable the occupant to take pre-emptive measures to prevent the actual alarm from sounding. For example, if the occupant is cooking and excessive steam and/or smoke is emanating from the kitchen, the pre-alarm warning can prompt the occupant to turn on a fan or open a window. 
     The multi-criteria state machines can include one or more sensor state machines and one or more system state machines. Each sensor state machine and each system state machine can be associated with a particular hazard such as, for example, a smoke hazard, a carbon monoxide hazard, or a heat hazard, and the multi-criteria state machines may leverage data acquired by one or more sensors in managing detection of a hazard. In some embodiments, a sensor state machine can be implemented for each hazard. In other embodiments, a system state machine may be implemented for each hazard or a subset of hazards. In managing detection of a hazard, each sensor state machine and each system state machine can transition among any one of its states based on sensor data values, hush events, and/or transition conditions. A hush event can be a user initiated command to hush a sounding alarm. The sensor data values, states, and transition conditions can vary from one state machine to the next. 
     The transition conditions can include a myriad of different conditions that may define how a state machine may transition from one state to another. The conditions may define thresholds that can be compared against any one or more of the following inputs: sensor data values, time clocks, and user interaction events (e.g., hush events). State change transitions can be governed by relatively simple conditions, referred to herein as single-criteria conditions, or relatively complex conditions, referred to herein as multi-criteria conditions. Single-criteria conditions may compare one input to one threshold. For example, a simple condition can be a comparison between a sensor data value and a threshold. If the sensor data value equals or exceeds the threshold, the state change transition may be executed. In contrast, a multi-criteria condition can be a comparison of at least one input to two or more thresholds or a comparison of two or more inputs to at least one threshold or a comparison of a first input to a first threshold and a second input to a second threshold. For example, a multi-criteria condition can be a comparison between a first sensor value and a first threshold and a comparison between a second sensor value and a second threshold. In some embodiments, both comparisons would need to be satisfied in order to effect a state change transition. In other embodiments, only one of the comparisons would need to be satisfied in order to effect a state change transition. As another example, a multi-criteria condition can be a comparison between a time clock and a time threshold and a comparison between a sensor value and a threshold. 
     In some embodiments, filters may be used to transform raw sensor values into filtered values that can be used by one or more state machines. Such filters may improve accuracy of data interpretation by filtering out readings that may distort data interpretation or cause false positives. For example, smoke sensor readings may be filtered by a smoke alarm filter to mitigate presence of steam. In addition, other filters may be used to speed up performance of a sensor that is relatively slow in obtaining sensor readings. For example, an accelerated humidity filter may be used to provide accelerated humidity readings for a humidity sensor. 
     The sensor state machines can be responsible for controlling relatively basic hazard detection system functions and the system state machines can be responsible for controlling relatively advanced hazard detection system functions. Each sensor state machine can be responsible for controlling an alarming state pertaining to a particular hazard and can operate independently of the other sensor state machines and the system state machines. The independent operation of each sensor state machine promotes reliability in detection and alarming for each hazard. Thus, collectively, the sensor state machines can manage the alarming states for all hazards being monitored by the hazard detection system. 
     In one embodiment, a smoke sensor state machine may manage the alarming state of a smoke hazard. In particular, the smoke sensor state machine can be implemented as a method in a hazard detection system including a smoke sensor, a processor, and an alarm. The method can include receiving smoke data values from the smoke sensor, and filtering the received smoke data values according to first and second filters to produce first filtered output values and second filtered output values. The method can include transitioning among a plurality of states based on the first and second filtered output values, and a plurality of transition conditions, and wherein, for at least one state transition, the transitioning comprises selectively using one of the first filtered output values, the second filtered output values, and both the first and second filtered output values. 
     In another embodiment, a method for controlling a hazard detection system comprising at least one sensor and an alarm is provide. The method can include using a smoke sensor to obtain smoke sensor data values, filtering the smoke sensor data values to produce filtered output values, wherein the filtered output values comprise weighted values representing confidence of a detected fire event, and selectively activating the alarm based on the filtered output values. 
     Each system state machine can be responsible for controlling a pre-alarming state pertaining to a particular hazard. For example, a smoke system state machine may provide pre-alarms in connection with a smoke hazard, and a carbon monoxide system state machine may provide pre-alarms in connection with a carbon monoxide hazard. In some embodiments, each system state machine can manage multiple pre-alarm states. Moreover, each system state machine can manage other states that cannot be managed by the sensor state machines. For example, these other states can include a monitoring state, a pre-alarm hushing state, and post-alarm states such as holding and alarm monitoring states. 
     In one embodiment, a hazard detection system can include several sensors including a smoke sensor and a humidity sensor, an accelerated humidity filter operative to provided accelerated humidity values based on raw values obtained by the humidity sensor, and a sensor state machine. The sensor sensor state machine can be operative to transition to any one of a plurality of sensor states, wherein sensor state machine transitions are based on data acquired by the smoke sensor, a first set of condition parameters, and hush events. The system can include a system state machine operative to transition to any one of a plurality of system states, the system states comprising the sensor states, wherein system state machine transitions are based on the data acquired by at least the smoke and humidity sensors, the accelerated humidity values, and a second set of condition parameters, and wherein the sensor states shared between the sensor state machine and the system state machine are controlled by the sensor state machine. 
     In another embodiment, a method for controlling a hazard detection system including at least one sensor and an alarm is provided. The method can include using a smoke sensor to obtain smoke sensor data values, analyzing the smoke sensor data values to determine whether steam is detected, maintaining a holdoff timer, and selectively activating the alarm based on satisfaction of one of a plurality if conditions, the conditions comprising the smoke sensor data values, whether steam is detected, and the holdoff timer. 
     A further understanding of the nature and advantages of the embodiments discussed herein may be realized by reference to the remaining portions of the specification and the drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram of an enclosure with a hazard detection system, according to some embodiments; 
         FIG. 2  shows an illustrative block diagram of a hazard detection system being used in an illustrative enclosure, according to some embodiments; 
         FIG. 3  shows an illustrative block diagram showing various components of a hazard detection system working together to provide multi-criteria alarming and pre-alarming functionality, according to some embodiments; 
         FIG. 4A  shows an illustrative smoke sensor state machine, according to some embodiments; 
         FIG. 4B  shows conditions associated with each transition of the smoke sensor state machine of  FIG. 4A , according to some embodiments; 
         FIG. 5A  shows an illustrative CO sensor state machine, according to some embodiments; 
         FIG. 5B  shows conditions associated with each transition of the CO sensor state machine of  FIG. 5A , according to some embodiments; 
         FIG. 6A  shows an illustrative heat sensor state machine, according to some embodiments; 
         FIG. 6B  shows conditions associated with each transition of the heat sensor state machine of  FIG. 6A , according to some embodiments; 
         FIG. 7A  shows an illustrative smoke system state machine, according to some embodiments; 
         FIG. 7B  shows conditions associated with each transition of the smoke system state machine of  FIG. 7A , according to some embodiments; 
         FIG. 8A  shows an illustrative CO system state machine, according to some embodiments; 
         FIGS. 8B-1 and 8B-2  show conditions associated with each transition of the CO sensor state machine of  FIG. 8A , according to some embodiments; 
         FIG. 9  shows an illustrative alarm/pre-alarm threshold setting module, according to some embodiments; 
         FIG. 10  shows an illustrative system state machine module, according to some embodiments; 
         FIG. 11  shows an illustrative hush module, in accordance with some embodiments; 
         FIG. 12  shows an illustrative alarm/speaker coordination module, in accordance with some embodiments; 
         FIG. 13  shows an illustrative schematic of a hazard detection system, according to some embodiments; 
         FIGS. 14A-14C  show illustrative timing diagrams of different trigger bands, according to some embodiments; 
         FIG. 15  shows a more detailed block diagram of a trigger adjustment module of  FIG. 13 , according to some embodiments; 
         FIG. 16  shows an illustrative flowchart of steps that may be taken when a system processor transitions to a non-sleep state, according to some embodiments; 
         FIG. 17  shows an illustrative flowchart of steps for implementing multi-criteria alarming and pre-alarming functionalities, according to some embodiments; 
         FIG. 18  shows an illustrative flowchart of steps for sharing states among multi-criteria machines, according to some embodiments; 
         FIG. 19  shows an illustrative flowchart of steps for managing trigger bands, according to some embodiments; 
         FIG. 20  shows an illustrative flowchart of steps for implementing a smoke sensor state machine, according to some embodiments; 
         FIG. 21  shows an illustrative flowchart of steps for implementing a CO sensor state machine, according to some embodiments; 
         FIG. 22  shows an illustrative flowchart of steps for implementing a heat sensor state machine, according to some embodiments; and 
         FIG. 23  shows an illustrative flowchart of steps for adjusting alarm thresholds, according to some embodiments; 
         FIG. 24  shows an illustrative block diagram of a smoke alarm filter according to an embodiment. 
         FIGS. 25 and 26  show illustrative timing diagrams of raw smoke sensor data, according to various embodiments; 
         FIG. 27  shows a graphical representation of a weighting function according to an embodiment; 
         FIG. 28  shows illustrative waveforms of filtered output values and probability values according to an embodiment; 
         FIG. 29  shows illustrative waveforms of filtered output values and probability values according to an embodiment; 
         FIG. 30  shows an illustrative block diagram of a no hush filter according to an embodiment; 
         FIG. 31A  shows an illustrative smoke sensor state machine, according to some embodiments; 
         FIG. 31B  shows a set of conditions that can be used by state machine  3100  when operating in a hazard detection system; 
         FIG. 32  shows an illustrative block diagram of an accelerated humidity filter according to an embodiment. 
         FIG. 33  shows illustrative pseudo code for determining Boolean values for various states used by one or more state machines, according to an embodiment; 
         FIG. 34  shows an alternative set of conditions that can be used by a state machine when operating in a hazard detection system, according to an embodiment; and 
         FIG. 35  shows an illustrative timing diagram of smoke values changing over time, according to an embodiment. 
     
    
    
     DETAILED DESCRIPTION OF THE DISCLOSURE 
     In the following detailed description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of the various embodiments. Those of ordinary skill in the art will realize that these various embodiments are illustrative only and are not intended to be limiting in any way. Other embodiments will readily suggest themselves to such skilled persons having the benefit of this disclosure. 
     In addition, for clarity purposes, not all of the routine features of the embodiments described herein are shown or described. One of ordinary skill in the art would readily appreciate that in the development of any such actual embodiment, numerous embodiment-specific decisions may be required to achieve specific design objectives. These design objectives will vary from one embodiment to another and from one developer to another. Moreover, it will be appreciated that such a development effort might be complex and time-consuming but would nevertheless be a routine engineering undertaking for those of ordinary skill in the art having the benefit of this disclosure. 
     It is to be appreciated that while one or more hazard detection embodiments are described further herein in the context of being used in a residential home, such as a single-family residential home, the scope of the present teachings is not so limited. More generally, hazard detection systems are applicable to a wide variety of enclosures such as, for example, duplexes, townhomes, multi-unit apartment buildings, hotels, retail stores, office buildings, and industrial buildings. Further, it is understood that while the terms user, customer, installer, homeowner, occupant, guest, tenant, landlord, repair person, and the like may be used to refer to the person or persons who are interacting with the hazard detector in the context of one or more scenarios described herein, these references are by no means to be considered as limiting the scope of the present teachings with respect to the person or persons who are performing such actions. 
       FIG. 1  is a diagram illustrating an exemplary enclosure  100  using hazard detection system  105 , remote hazard detection system  107 , thermostat  110 , remote thermostat  112 , heating, cooling, and ventilation (HVAC) system  120 , router  122 , computer  124 , and central panel  130  in accordance with some embodiments. Enclosure  100  can be, for example, a single-family dwelling, a duplex, an apartment within an apartment building, a warehouse, or a commercial structure such as an office or retail store. Hazard detection system  105  can be battery powered, line powered, or line powered with a battery backup. Hazard detection system  105  can include one or more processors, multiple sensors, non-volatile storage, and other circuitry to provide desired safety monitoring and user interface features. Some user interface features may only be available in line powered embodiments due to physical limitations and power constraints. In addition, some features common to both line and battery powered embodiments may be implemented differently. Hazard detection system  105  can include the following components: low power wireless personal area network (LoWPAN) circuitry, a system processor, a safety processor, non-volatile memory (e.g., Flash), WiFi circuitry, an ambient light sensor (ALS), a smoke sensor, a carbon monoxide (CO) sensor, a temperature sensor, a humidity sensor, a noise sensor, one or more ultrasonic sensors, a passive infra-red (PIR) sensor, a speaker, one or more light emitting diodes (LED&#39;s), and an alarm buzzer. 
     Hazard detection system  105  can monitor environmental conditions associated with enclosure  100  and alarm occupants when an environmental condition exceeds a predetermined threshold. The monitored conditions can include, for example, smoke, heat, humidity, carbon monoxide, carbon dioxide, radon, and other gasses. In addition to monitoring the safety of the environment, hazard detection system  105  can provide several user interface features not found in conventional alarm systems. These user interface features can include, for example, vocal alarms, voice setup instructions, cloud communications (e.g. push monitored data to the cloud, or push notifications to a mobile telephone, receive commands from the cloud such as a hush command), device-to-device communications (e.g., communicate with other hazard detection systems in the enclosure), visual safety indicators (e.g., display of a green light indicates it is safe and display of a red light indicates danger), tactile and non-tactile input command processing, and software updates. 
     Hazard detection system  105  can implement multi-criteria state machines according to various embodiments described herein to provide advanced hazard detection and advanced user interface features such as pre-alarms. In addition, the multi-criteria state machines can manage alarming states and pre-alarming states and can include one or more sensor state machines that can control the alarming states and one or more system state machines that control the pre-alarming states. Each state machine can transition among any one of its states based on sensor data values, hush events, and transition conditions. The transition conditions can define how a state machine transitions from one state to another, and ultimately, how hazard detection system  105  operates. Hazard detection system  105  can use a dual processor arrangement to execute the multi-criteria state machines according to various embodiments. The dual processor arrangement may enable hazard detection system  105  to manage the alarming and pre-alarming states in a manner that uses minimal power while simultaneously providing relatively failsafe hazard detection and alarming functionalities. Additional details of the various embodiments of hazard detection system  105  are discussed below. 
     Enclosure  100  can include any number of hazard detection systems. For example, as shown, hazard detection system  107  is another hazard detection system, which may be similar to system  105 . In one embodiment, both systems  105  and  107  can be battery powered systems. In another embodiment, system  105  may be line powered, and system  107  may be battery powered. Moreover, a hazard detection system can be installed outside of enclosure  100 . 
     Thermostat  110  can be one of several thermostats that may control HVAC system  120 . Thermostat  110  can be referred to as the “primary” thermostat because it may be electrically connected to actuate all or part of an HVAC system, by virtue of an electrical connection to HVAC control wires (e.g. W, G, Y, etc.) leading to HVAC system  120 . Thermostat  110  can include one or more sensors to gather data from the environment associated with enclosure  100 . For example, a sensor may be used to detect occupancy, temperature, light and other environmental conditions within enclosure  100 . Remote thermostat  112  can be referred to as an “auxiliary” thermostat because it may not be electrically connected to actuate HVAC system  120 , but it too may include one or more sensors to gather data from the environment associated with enclosure  100  and can transmit data to thermostat  110  via a wired or wireless link. For example, thermostat  112  can wirelessly communicate with and cooperates with thermostat  110  for improved control of HVAC system  120 . Thermostat  112  can provide additional temperature data indicative of its location within enclosure  100 , provide additional occupancy information, or provide another user interface for the user (e.g., to adjust a temperature setpoint). 
     Hazard detection systems  105  and  107  can communicate with thermostat  110  or thermostat  112  via a wired or wireless link. For example, hazard detection system  105  can wirelessly transmit its monitored data (e.g., temperature and occupancy detection data) to thermostat  110  so that it is provided with additional data to make better informed decisions in controlling HVAC system  120 . Moreover, in some embodiments, data may be transmitted from one or more of thermostats  110  and  112  to one or more of hazard detections systems  105  and  107  via a wired or wireless link. 
     Central panel  130  can be part of a security system or other master control system of enclosure  100 . For example, central panel  130  may be a security system that may monitor windows and doors for break-ins, and monitor data provided by motion sensors. In some embodiments, central panel  130  can also communicate with one or more of thermostats  110  and  112  and hazard detection systems  105  and  107 . Central panel  130  may perform these communications via wired link, wireless link, or a combination thereof. For example, if smoke is detected by hazard detection system  105 , central panel  130  can be alerted to the presence of smoke and make the appropriate notification, such as displaying an indicator that a particular zone within enclosure  100  is experiencing a hazard condition. 
     Enclosure  100  may further include a private network accessible both wirelessly and through wired connections and may also be referred to as a Local Area Network or LAN. Network devices on the private network can include hazard detection systems  105  and  107 , thermostats  110  and  112 , computer  124 , and central panel  130 . In one embodiment, the private network is implemented using router  122 , which can provide routing, wireless access point functionality, firewall and multiple wired connection ports for connecting to various wired network devices, such as computer  124 . Wireless communications between router  122  and networked devices can be performed using an 802.11 protocol. Router  122  can further provide network devices access to a public network, such as the Internet or the Cloud, through a cable-modem, DSL modem and an Internet service provider or provider of other public network services. Public networks like the Internet are sometimes referred to as a Wide-Area Network or WAN. 
     Access to the Internet, for example, may enable networked devices such as system  105  or thermostat  110  to communicate with a device or server remote to enclosure  100 . The remote server or remote device can host an account management program that manages various networked devices contained within enclosure  100 . For example, in the context of hazard detection systems according to embodiments discussed herein, system  105  can periodically upload data to the remote server via router  122 . In addition, if a hazard event is detected, the remote server or remote device can be notified of the event after system  105  communicates the notice via router  122 . Similarly, system  105  can receive data (e.g., commands or software updates) from the account management program via router  122 . 
     Hazard detection system  105  can operate in one of several different power consumption modes. Each mode can be characterized by the features performed by system  105  and the configuration of system  105  to consume different amounts of power. Each power consumption mode corresponds to a quantity of power consumed by hazard detection system  105 , and the quantity of power consumed can range from a lowest quantity to a highest quantity. One of the power consumption modes corresponds to the lowest quantity of power consumption, and another power consumption mode corresponds to the highest quantity of power consumption, and all other power consumption modes fall somewhere between the lowest and the highest quantities of power consumption. Examples of power consumption modes can include an Idle mode, a Log Update mode, a Software Update mode, an Alarm mode, a Pre-Alarm mode, a Hush mode, and a Night Light mode. These power consumption modes are merely illustrative and are not meant to be limiting. Additional or fewer power consumption modes may exist. Moreover, any definitional characterization of the different modes described herein is not meant to be all inclusive, but rather, is meant to provide a general context of each mode. 
     Although one or more states of the sensor state machines and system state machines may be implemented in one or more of the power consumption modes, the power consumption modes and states may be different. For example, the power consumption mode nomenclature is used in connection with various power budgeting systems and methods that are explained in more detail in commonly assigned, U.S. Patent Application No. 61/847,905 and U.S. Patent Application No. 61/847,916. 
       FIG. 2  shows an illustrative block diagram of hazard detection system  205  being used in an illustrative enclosure  200  in accordance with some embodiments.  FIG. 2  also shows optional hazard detection system  207  and router  222 . Hazard detection systems  205  and  207  can be similar to hazard detection systems  105  and  107  in  FIG. 1 , enclosure  200  can be similar to enclosure  100  in  FIG. 1 , and router  222  can be similar to router  122  in  FIG. 1 . Hazard detection system  205  can include several components, including system processor  210 , high-power wireless communications circuitry  212  and antenna, low-power wireless communications circuitry  214  and antenna, non-volatile memory  216 , speaker  218 , sensors  220 , which can include one or more safety sensors  221  and one or more non-safety sensors  222 , safety processor  230 , alarm  234 , power source  240 , power conversion circuitry  242 , high quality power circuitry  243 , and power gating circuitry  244 . Hazard detection system  205  may be operative to provide failsafe safety detection features and user interface features using circuit topology and power budgeting methods that may minimize power consumption. 
     Hazard detection system  205  can use a bifurcated processor circuit topology for handling the features of system  205 . Both system processor  210  and safety processor  230  can exist on the same circuit board within system  205 , but perform different tasks. System processor  210  is a larger more capable processor that can consume more power than safety processor  230 . That is, when both processors  210  and  230  are active, processor  210  consumes more power than processor  230 . Similarly, when both processors are inactive, processor  210  may consume more power than processor  230 . System processor  210  can be operative to process user interface features. For example, processor  210  can direct wireless data traffic on both high and low power wireless communications circuitries  212  and  214 , access non-volatile memory  216 , communicate with processor  230 , and cause audio to be emitted from speaker  218 . As another example, processor  210  can monitor data acquired by one or more sensors  220  to determine whether any actions need to be taken (e.g., shut off a blaring alarm in response to a user detected action to hush the alarm). 
     Safety processor  230  can be operative to handle safety related tasks of system  205 . Safety processor  230  can poll one or more of sensors  220  and activate alarm  234  when one or more of sensors  220  indicate a hazard event is detected. Processor  230  can operate independently of processor  210  and can activate alarm  234  regardless of what state processor  210  is in. For example, if processor  210  is performing an active function (e.g., performing a WiFi update) or is shut down due to power constraints, processor  230  can activate alarm  234  when a hazard event is detected. In some embodiments, the software running on processor  230  may be permanently fixed and may never be updated via a software or firmware update after system  205  leaves the factory. 
     Compared to processor  210 , processor  230  is a less power consuming processor. Thus by using processor  230  in lieu of processor  210  to monitor a subset of sensors  220  yields a power savings. If processor  210  were to constantly monitor sensors  220 , the power savings may not be realized. In addition to the power savings realized by using processor  230  for monitoring the subset of sensors  220 , bifurcating the processors also ensures that the safety monitoring and core alarming features of system  205  will operate regardless of whether processor  210  is functioning. By way of example and not by way of limitation, system processor  210  may comprise a relatively high-powered processor such as Freescale Semiconductor K60 Microcontroller, while safety processor  230  may comprise a relatively low-powered processor such as a Freescale Semiconductor KL16 Microcontroller. Overall operation of hazard detection system  205  entails a judiciously architected functional overlay of system processor  210  and safety processor  230 , with system processor  210  performing selected higher-level, advanced functions that may not have been conventionally associated with hazard detection units (for example: more advanced user interface and communications functions; various computationally-intensive algorithms to sense patterns in user behavior or patterns in ambient conditions; algorithms for governing, for example, the brightness of an LED night light as a function of ambient brightness levels; algorithms for governing, for example, the sound level of an onboard speaker for home intercom functionality; algorithms for governing, for example, the issuance of voice commands to users; algorithms for uploading logged data to a central server; algorithms for establishing network membership; and so forth), and with safety processor  230  performing the more basic functions that may have been more conventionally associated with hazard detection units (e.g., smoke and CO monitoring, actuation of shrieking/buzzer alarms upon alarm detection). By way of example and not by way of limitation, system processor  210  may consume on the order of 18 mW when it is in a relatively high-power active state and performing one or more of its assigned advanced functionalities, whereas safety processor  230  may only consume on the order of 0.05 mW when it is performing its basic monitoring functionalities. However, again by way of example and not by way of limitation, system processor  210  may consume only on the order of 0.005 mW when in a relatively low-power inactive state, and the advanced functions that it performs are judiciously selected and timed such the system processor is in the relatively high power active state only about 0.05% of the time, and spends the rest of the time in the relatively low-power inactive state. Safety processor  230 , while only requiring an average power draw of 0.05 mW when it is performing its basic monitoring functionalities, should of course be performing its basic monitoring functionalities 100% of the time. According to one or more embodiments, the judiciously architected functional overlay of system processor  210  and safety processor  230  is designed such that hazard detection system  205  can perform basic monitoring and shriek/buzzer alarming for hazard conditions even in the event that system processor  210  is inactivated or incapacitated, by virtue of the ongoing operation of safety processor  230 . Therefore, while system processor  210  is configured and programmed to provide many different capabilities for making hazard detection unit  205  an appealing, desirable, updatable, easy-to-use, intelligent, network-connected sensing and communications node for enhancing the smart-home environment, its functionalities are advantageously provided in the sense of an overlay or adjunct to the core safety operations governed by safety processor  230 , such that even in the event there are operational issues or problems with system processor  210  and its advanced functionalities, the underlying safety-related purpose and functionality of hazard detector  205  by virtue of the operation of safety processor  230  will continue on, with or without system processor  210  and its advanced functionalities. 
     High power wireless communications circuitry  212  can be, for example, a Wi-Fi module capable of communicating according to any of the 802.11 protocols. For example, circuitry  212  may be implemented using WiFi part number BCM43362, available from Murata. Depending on an operating mode of system  205 , circuitry  212  can operate in a low power “sleep” state or a high power “active” state. For example, when system  205  is in an Idle mode, circuitry  212  can be in the “sleep” state. When system  205  is in a non-Idle mode such as a Wi-Fi update mode, software update mode, or alarm mode, circuitry  212  can be in an “active” state. For example, when system  205  is in an active alarm mode, high power circuitry  212  may communicate with router  222  so that a message can be sent to a remote server or device. 
     Low power wireless communications circuitry  214  can be a low power Wireless Personal Area Network (6LoWPAN) module or a ZigBee module capable of communicating according to a 802.15.4 protocol. For example, in one embodiment, circuitry  214  can be part number EM357 SoC available from Silicon Laboratories. Depending on the operating mode of system  205 , circuitry  214  can operate in a relatively low power “listen” state or a relatively high power “transmit” state. When system  205  is in the Idle mode, WiFi update mode, or software update mode, circuitry  214  can be in the “listen” state. When system  205  is in the Alarm mode, circuitry  214  can transmit data so that the low power wireless communications circuitry in system  207  can receive data indicating that system  205  is alarming. Thus, even though it is possible for high power wireless communications circuitry  212  to be used for listening for alai events, it can be more power efficient to use low power circuitry  214  for this purpose. Power savings may be further realized when several hazard detection systems or other systems having low power circuitry  214  form an interconnected wireless network. 
     Power savings may also be realized because in order for low power circuitry  214  to continually listen for data transmitted from other low power circuitry, circuitry  214  may constantly be operating in its “listening” state. This state consumes power, and although it may consume more power than high power circuitry  212  operating in its sleep state, the power saved versus having to periodically activate high power circuitry  214  can be substantial. When high power circuitry  212  is in its active state and low power circuitry  214  is in its transmit state, high power circuitry  212  can consume substantially more power than low power circuitry  214 . 
     In some embodiments, low power wireless communications circuitry  214  can be characterized by its relatively low power consumption and its ability to wirelessly communicate according to a first protocol characterized by relatively low data rates, and high power wireless communications circuitry  212  can be characterized by its relatively high power consumption and its ability to wirelessly communicate according to a second protocol characterized by relatively high data rates. The second protocol can have a much more complicated modulation than the first protocol. 
     In some embodiments, low power wireless communications circuitry  214  may be a mesh network compatible module that does not require an access point or a router in order to communicate to devices in a network. Mesh network compatibility can include provisions that enable mesh network compatible modules to keep track of other nearby mesh network compatible modules so that data can be passed through neighboring modules. Mesh network compatibility is essentially the hallmark of the 802.15.4 protocol. In contrast, high power wireless communications circuitry  212  is not a mesh network compatible module and requires an access point or router in order to communicate to devices in a network. Thus, if a first device having circuitry  212  wants to communicate data to another device having circuitry  212 , the first device has to communicate with the router, which then transmits the data to the second device. There is no device-to-device communication per se using circuitry  212 . 
     Non-volatile memory  216  can be any suitable permanent memory storage such as, for example, NAND Flash, a hard disk drive, NOR, ROM, or phase change memory. In one embodiment, non-volatile memory  216  can store audio clips that can be played back by speaker  218 . The audio clips can include installation instructions or warnings in one or more languages. Speaker  218  can be any suitable speaker operable to playback sounds or audio files. Speaker  218  can include an amplifier (not shown). 
     Sensors  220  can be monitored by system processor  210  and safety processor  230 , and can include safety sensors  221  and non-safety sensors  222 . One or more of sensors  220  may be exclusively monitored by one of system processor  210  and safety processor  230 . As defined herein, monitoring a sensor refers to a processor&#39;s ability to acquire data from that monitored sensor. That is, one particular processor may be responsible for acquiring sensor data, and possibly storing it in a sensor log, but once the data is acquired, it can be made available to another processor either in the form of logged data or real-time data. For example, in one embodiment, system processor  210  may monitor one of non-safety sensors  222 , but safety processor  230  cannot monitor that same non-safety sensor. In another embodiment, safety processor  230  may monitor each of the safety sensors  221 , but may provide the acquired sensor data to system processor  210 . 
     Safety sensors  221  can include sensors necessary for ensuring that hazard detection system  205  can monitor its environment for hazardous conditions and alert users when hazardous conditions are detected, and all other sensors not necessary for detecting a hazardous condition are non-safety sensors  222 . In some embodiments, safety sensors  221  include only those sensors necessary for detecting a hazardous condition. For example, if the hazardous condition includes smoke and fire, then the safety sensors might only include a smoke sensor and at least one heat sensor. Other sensors, such as non-safety sensors, could be included as part of system  205 , but might not be needed to detect smoke or fire. As another example, if the hazardous condition includes carbon monoxide, then the safety sensor might be a carbon monoxide sensor, and no other sensor might be needed to perform this task. 
     Thus, sensors deemed necessary can vary based on the functionality and features of hazard detection system  205 . In one embodiment, hazard detection system  205  can be a combination smoke, fire, and carbon monoxide alarm system. In such an embodiment, detection system  205  can include the following necessary safety sensors  221 : a smoke detector, a carbon monoxide (CO) sensor, and one or more heat sensors. Smoke detectors can detect smoke and typically use optical detection, ionization, or air sampling techniques. A CO sensor can detect the presence of carbon monoxide gas, which, in the home, is typically generated by open flames, space heaters, water heaters, blocked chimneys, and automobiles. The material used in electrochemical CO sensors typically has a 5-7 year lifespan. Thus, after a 5-7 year period has expired, the CO sensor should be replaced. A heat sensor can be a thermistor, which is a type of resistor whose resistance varies based on temperature. Thermistors can include negative temperature coefficient (NTC) type thermistors or positive temperature coefficient (PTC) type thermistors. Furthermore, in this embodiment, detection system  205  can include the following non-safety sensors  222 : a humidity sensor, an ambient light sensor, a push-button sensor, a passive infra-red (PIR) sensor, and one or more ultrasonic sensors. A temperature and humidity sensor can provide relatively accurate readings of temperature and relative humidity. An ambient light sensor (ALS) can detect ambient light and the push-button sensor can be a switch, for example, that detects a user&#39;s press of the switch. A PIR sensor can be used for various motion detection features. A PIR sensor can measure infrared light radiating from objects in its field of view. Ultrasonic sensors can be used to detect the presence of an object. Such sensors can generate high frequency sound waves and determine which wave(s) are received back by the sensor. Sensors  220  can be mounted to a printed circuit board (e.g., the same board that processors  210  and  230  may be mounted to), a flexible printed circuit board, a housing of system  205 , or a combination thereof. 
     In some embodiments, data acquired from one or more non-safety sensors  222  can be acquired by the same processor used to acquire data from one or more safety sensors  221 . For example, safety processor  230  may be operative to monitor both safety and non-safety sensors  221  and  222  for power savings reasons, as discussed above. Although safety processor  230  may not need any of the data acquired from non-safety sensor  222  to perform its hazard monitoring and alerting functions, the non-safety sensor data can be utilized to provide enhanced hazard system  205  functionality. The enhanced functionality can be realized in alarming algorithms according to various embodiments discussed herein. For example, the non-sensor data can be utilized by system processor  210  to implement system state machines that may interface with one or more sensor state machines, all of which are discussed in more detail below. 
     Alarm  234  can be any suitable alarm that alerts users in the vicinity of system  205  of the presence of a hazard condition. Alarm  234  can also be activated during testing scenarios. Alarm  234  can be a piezo-electric buzzer, for example. 
     Power source  240  can supply power to enable operation of system  205  and can include any suitable source of energy. Embodiments discussed herein can include AC line powered, battery powered, a combination of AC line powered with a battery backup, and externally supplied DC power (e.g., USB supplied power). Embodiments that use AC line power, AC line power with battery backup, or externally supplied DC power may be subject to different power conservation constraints than battery only embodiments. Battery powered embodiments are designed to manage power consumption of its finite energy supply such that hazard detection system  205  operates for a minimum period of time. In some embodiments, the minimum period of time can be one (1) year, three (3) years, or seven (7) years. In other embodiments, the minimum period of time can be at least seven (7) years, eight (8) years, nine (9) years, or ten (10) years. Line powered embodiments are not as constrained because their energy supply is virtually unlimited. Line powered with battery backup embodiments may employ power conservation methods to prolong the life of the backup battery. 
     In battery only embodiments, power source  240  can include one or more batteries or a battery pack. The batteries can be constructed from different compositions (e.g., alkaline or lithium iron disulfide) and different end-user configurations (e.g., permanent, user replaceable, or non-user replaceable) can be used. In one embodiment, six cells of Li—FeS 2  can be arranged in two stacks of three. Such an arrangement can yield about 27000 mWh of total available power for system  205 . 
     Power conversion circuitry  242  includes circuitry that converts power from one level to another. Multiple instances of power conversion circuitry  242  may be used to provide the different power levels needed for the components within system  205 . One or more instances of power conversion circuitry  242  can be operative to convert a signal supplied by power source  240  to a different signal. Such instances of power conversion circuitry  242  can exist in the form of buck converters or boost converters. For example, alarm  234  may require a higher operating voltage than high power wireless communications circuitry  212 , which may require a higher operating voltage than processor  210 , such that all required voltages are different than the voltage supplied by power source  240 . Thus, as can be appreciated in this example, at least three different instances of power conversion circuitry  242  are required. 
     High quality power circuitry  243  is operative to condition a signal supplied from a particular instance of power conversion circuitry  242  (e.g., a buck converter) to another signal. High quality power circuitry  243  may exist in the form of a low-dropout regulator. The low-dropout regulator may be able to provide a higher quality signal than that provided by power conversion circuitry  242 . Thus, certain components may be provided with “higher” quality power than other components. For example, certain safety sensors  221  such as smoke detectors and CO sensors may require a relatively stable voltage in order to operate properly. 
     Power gating circuitry  244  can be used to selectively couple and de-couple components from a power bus. De-coupling a component from a power bus insures that the component does not incur any quiescent current loss, and therefore can extend battery life beyond that which it would be if the component were not so de-coupled from the power bus. Power gating circuitry  244  can be a switch such as, for example, a MOSFET transistor. Even though a component is de-coupled from a power bus and does not incur any current loss, power gating circuitry  244  itself may consume a finite amount of power. This finite power consumption, however, is less than the quiescent power loss of the component. 
     It is understood that although hazard detection system  205  is described as having two separate processors, system processor  210  and safety processor  230 , which may provide certain advantages as described hereinabove and hereinbelow, including advantages with regard to power consumption as well as with regard to survivability of core safety monitoring and alarming in the event of advanced feature provision issues, it is not outside the scope of the present teachings for one or more of the various embodiments discussed herein to be executed by one processor or by more than two processors. 
       FIG. 3  shows an illustrative block diagram showing various components of hazard detection system  300  working together to provide multi-criteria alarming and pre-alarming functionalities according to various embodiments. As shown, system  300  can include sensor data  302 , hush detection events  304 , transition conditions  306 , threshold adjustment parameter  307 , multi-criteria state machines  310 , clock  312 , other states  320 , alarming states  330 , pre-alarming states  340 , alarm  350 , display  352 , and speaker  354 . Also shown are several communication links  370 , each of which may have unidirectional or bidirectional data and/or signal communications capabilities. Multi-criteria state machines  310  can control alarming states  330 , pre-alarming states  340 , and all other state machine states  320  based on sensor data  302 , hush detection events  304 , transition conditions  306 , clock  312 , and other criteria, and alarming and pre-alarming states  330  and  340  can control the output of alarm  350 , display  352 , and speaker  354 . Alarming states  330  can include multiple alarming states (e.g., one for each hazard, such as smoke alarming state  331 , CO alarming state  332 , and heat alarming state  333 ) and pre-alarming states  340  can include multiple pre-alarming states (e.g., one or more for each hazard, such as smoke pre-alarming state  341  and CO pre-alarming state  342 . Other states can include, for example, idling states, monitoring states, alarm hushing states, pre-alarm hushing states, post-alarm states, holding states, and alarm monitoring states. 
     Alarming states  330  can control activation and deactivation of alarm  350  and display  352  in response to determinations made by multi-criteria state machines  310 . Alarm  350  can provide audible cues (e.g., in the form of buzzer beeps) that a dangerous condition is present. Display  352  can provide a visual cue (e.g., such as flashing light or change in color) that a dangerous condition is present. If desired, alarming states  330  can control playback of messages over speaker  354  in conjunction with the audible and/or visual cues. For example, combined usage of alarm  350  and speaker  354  can repeat the following sequence: “BEEP, BEEP, BEEP—Smoke Detected In Bedroom—BEEP BEEP BEEP,” where the “BEEPS” emanate from alarm  350  and “smoke detected in bedroom” emanates from speaker  354 . As another example, usage of alarm  350  and speaker  354  can repeat the following sequence: “BEEP, BEEP, BEEP—Wave to Hush Alarm—BEEP BEEP BEEP,” in which speaker  354  is used to provide alarming hush instructions. Any one of the alarming states  330  (e.g., smoke alarm state  331 , CO alarm state  332 , and heat alarm state  333 ) can independently control alarm  350  and/or display  352  and/or speaker  354 . In some embodiments, alarming states  330  can cause alarm  350  or display  352  or speaker  354  to emit different cues based on which specific alarm state is active. For example, if a smoke alarm state is active, alarm  350  may emit a sound having a first characteristic, but if a CO alarm state is active, alarm  350  may emit a sound having a second characteristic. In other embodiments, alarming states  330  can cause alarm  350  and display  352  and speaker  354  to emit the same cue regardless of which specific alarm state is active. 
     Pre-alarming states  340  can control activation and deactivation of speaker  354  and display  352  in response to determinations made by multi-criteria state machines  310 . Pre-alarming can serve as a warning that a dangerous condition may be imminent. Speaker  354  may be utilized to playback voice warnings that a dangerous condition may be imminent. Different pre-alarm messages may be played back over speaker  354  for each type of detected pre-alarm event. For example, if a smoke pre-alarm state is active, a smoke related message may be played back over speaker  354 . If a CO pre-alarm state is active, a CO related message may be played back. Furthermore, different messages may be played back for each one of the multiple pre-alarms associated with each hazard (e.g., smoke and CO). For example, the smoke hazard may have two associated pre-alarms, one associated with a first smoke pre-alarming state (e.g., suggesting that an alarming state may be moderately imminent) and another one associated with a second smoke pre-alarming state (e.g., suggesting that an alarming state may be highly imminent). Pre-alarm messages may also include voice instructions on how to hush pre-alarm messages. Display  352  may also be utilized in a similar fashion to provide visual cues of an imminent alarming state. In some embodiments, the pre-alarm messages can specify the location of the pre-alarming conditions. For example, if hazard system  300  knows it is located in the bedroom, it can incorporate the location in the pre-alarm message: “Smoke Detected In Bedroom.” 
     Hazard detection system  300  can enforce alarm and pre-alarm priorities depending on which conditions are present. For example, if elevated smoke and CO conditions exist at the same time, the smoke alarm state and/or pre-alarm smoke state may take precedence over the CO alarm state and/or CO pre-alarm state. If a user silences the smoke alarm or smoke pre-alarm, and the CO alarm state or CO pre-alarm state is still active, system  300  may provide an indication (e.g., a voice notification) that a CO alarm or pre-alarm has also been silenced. If a smoke condition ends and the CO alarm or pre-alarm is event is still active, the CO alarm or pre-alarm may be presented to the user. 
     Multi-criteria state machines  310  can transition to an idling state when it determines that relatively little or no dangerous conditions exist. The idling state can enforce a relatively low level of hazard detection system activity. For example, in the idle state, the data sampling rates of one or more sensors may be set at relatively slow intervals. Multi-criteria state machines  310  can transition to a monitoring state when it determines that sensor data values have risen to a level that warrants closer scrutiny, but not to a level that transitions to a pre-alarming or alarming state. The monitoring state can enforce a relatively high level of hazard detection system activity. For example, the data sampling rates of one or more sensors may be set at relatively fast intervals. In addition, the data sampling rates of one or more sensors may be set at relatively fast intervals for alarming states  330 , pre-alarming states  340 , or both. 
     Alarm hushing and pre-alarm hushing states may refer to a user-instructed deactivation of an alarm or a pre-alarm. For example, in one embodiment, a user can press a button (not shown) to silence an alarm or pre-alarm. In another embodiment, a user can perform a hush gesture in the presence of the hazard detection system. A hush gesture can be a user initiated action in which he or she performs a gesture (e.g., a wave motion) in the vicinity of system  300  with the intent to turn off or silence a blaring alarm. One or more ultrasonic sensors, a PIR sensor, or a combination thereof can be used to detect this gesture. The gesture hush feature and systems and methods for detecting and processing the gesture hush feature are discussed in more detail in U.S. Patent Application No. 61/889,013. 
     Post-alarming states may refer to states that multi-criteria state machines  310  can transition to after having been in one of alarming states  330  or one of pre-alarming states  340 . In one post-alarming state, hazard detection system  300  can provide an “all clear” message to indicate that the alarm or pre-alarm condition is no longer present. This can be especially useful, for example, for CO because humans cannot detect CO. Another post-alarming state can be a holding state, which can serve as a system debounce state. This state can prevent hazard detection system  300  from immediately transitioning back to a pre-alarming state  340  after having just transitioned from an alarming state  330 . 
     Multi-criteria state machines  310  can include several different state machines: sensor state machines and system state machines. Each state machine can be associated with a particular hazard such as, for example, a smoke hazard, a carbon monoxide hazard, or a heat hazard, and the multi-criteria state machines may leverage data acquired by one or more sensors in managing detection of a hazard. In some embodiments, a sensor state machine can be implemented for each hazard. In other embodiments, a system state machine may be implemented for each hazard or a subset of hazards. The sensor state machines can be responsible for controlling relatively basic hazard detection system functions and the system state machines can be responsible for controlling relatively advanced hazard detection system functions. In managing detection of a hazard, each sensor state machine and each system state machine can transition among any one of its states based on sensor data  302 , hush events  304 , and transition conditions  306 . A hush event can be a user initiated command to hush, for example, a sounding alarm or pre-alarm voice instruction. 
     Transition conditions  306  can include a myriad of different conditions that may define how a state machine transitions from one state to another. Each state machine can have its own set of transition conditions, and examples of state machine specific transition conditions can be found in  FIGS. 4B, 5B   6 B,  7 B, and  8 B. The conditions can define thresholds that may be compared against any one or more of the following inputs: sensor data values, time clocks, and user interaction events (e.g., hush events). State change transitions can be governed by relatively simple conditions (e.g., single-criteria conditions), or relatively complex conditions (e.g., multi-criteria conditions). Single-criteria conditions may compare one input to one threshold. For example, a simple condition can be a comparison between a sensor data value and a threshold. If the sensor data value equals or exceeds the threshold, the state change transition may be executed. In contrast, a multi-criteria condition can be a comparison of one or more inputs to one or more thresholds. For example, a multi-criteria condition can be a comparison between a first sensor value and a first threshold and a comparison between a second sensor value and a second threshold. In some embodiments, both comparisons would need to be satisfied in order to effect a state change transition. In other embodiments, only one of the comparisons would need to be satisfied in order to effect a state change transition. As another example, a multi-criteria condition can be a comparison between a time clock and a time threshold and a comparison between a sensor value and a threshold. 
     In some embodiments, the threshold for a particular transition condition can be adjusted. Such thresholds are referred to herein as adjustable thresholds (e.g., shown as part of transition conditions  306 ). The adjustable threshold can be changed in response to threshold adjustment parameter  307 , which may be provided, for example, by an alarm threshold setting module according to an embodiment. Adjustable thresholds can be selected from one of at least two different selectable thresholds, and any suitable selection criteria can be used to select the appropriate threshold for the adjustable threshold. In one embodiment, the selection criteria can include several single-criteria conditions or a multi-criteria condition. In another embodiment, if the adjustable threshold is compared to sensor values of a first sensor, the selection criteria can include an analysis of at least one sensor other than the first sensor. In another embodiment, the adjustable threshold can be the threshold used in a smoke alarm transition condition, and the adjustable threshold can be selected from one of three different thresholds. 
     In some embodiments, the threshold for a particular transition condition can be a learned condition threshold (not shown). The learned condition threshold can be the result of a difference function, which may subtract a constant from an initial threshold. The constant can be changed, if desired, based on any suitable number of criteria, including, for example, heuristics, field report data, software updates, user preferences, device settings, etc. Changing the constant can provide a mechanism for changing the transition condition for one or more states (e.g., a pre-alarming state). This constant can be provided to transition conditions  306  to make adjustments to the learned condition threshold. In one embodiment, the constant can be selected based on installation and setup of hazard detection system  300 . For example, the home owner can indicate that hazard detection system  300  has been installed in a particular room of an enclosure. Depending on which room it is, system  300  can select an appropriate constant. For example, a first constant can be selected if the room is a bedroom and a second constant can be selected if the room is a kitchen. The first constant may be a value that makes hazard detection system  300  more sensitive to potential hazards than the second constant because the bedroom is in a location that is generally further away from an exit and/or is not generally susceptible to factors that may otherwise cause a false alarm. In contrast, the kitchen, for example, is generally closer to an exit than a bedroom and can generate conditions (e.g., steam or smoke from cooking) that may cause a false alarm. Other installation factors can also be taken into account in selecting the appropriate constant. For example, the home owner can specify that the room is adjacent to a bathroom. Since humidity stemming from a bathroom can cause false alarms, hazard system  300  can select a constant that takes this into account. As another example, the home owner can specify that the room includes a fireplace. Similarly, hazard system  300  can select a constant that takes this factor into account. 
     In another embodiment, hazard detection system  300  can apply heuristics to self-adjust the constant. For example, conditions may persist that keep triggering pre-alarms, but the conditions do not rise to alarming levels. In response to such persistent pre-alarm triggering, hazard detection system  300  can modify the constant so that the pre-alarms are not so easily triggered. In yet another embodiment, the constant can be changed in response to a software update. For example, a remote server may analyze data acquired from several other hazard detection systems and adjust the constant accordingly, and push the new constant to hazard detection system  300  via a software update. In addition, the remote server can also push down constants based on user settings or user preferences to hazard detection system  300 . For example, the home owner may be able to define a limited number of settings by directly interacting with hazard detection system  300 . However, the home owner may be able to define an unlimited number of settings by interacting with, for example, a web-based program hosted by the remote server. Based on the settings, the remote server can push down one or more appropriate constants. 
     The sensor state machines can control alarming states  330  and one or more of other states  320 . In particular, smoke sensor state machine  314  can control smoke alarm state  331 , CO sensor state machine  316  can control CO alarming state  332 , and heat sensor state machine  318  can control heat alarming state  333 . For example, smoke sensor state machine  314  may be operative to sound alarm  350  in response to a detected smoke event. As another example, CO sensor state machine  316  can sound alarm  350  in response to a detected CO event. As yet another example, heat sensor state machine  318  can sound alarm  350  in response to a detected heat event. In some embodiments, a sensor state machine can exercise exclusive control over one or more alarming states  330 . 
     The system state machines can control pre-alarming states  340  and one or more of other states  320 . In particular, smoke system state machine  315  may control smoke pre-alarm state  341 , and CO system state machine  317  may control CO pre-alarm state  342 . In some embodiments, each system state machine can manage multiple pre-alarm states. For example, a first pre-alarm state may warn a user that an abnormal condition exists, and a second pre-alarm state may warn the user that the abnormal condition continues to exist. Moreover, each system state machine can manage other states that cannot be managed by the sensor state machines. For example, these other states can include a monitoring state, a pre-alarm hushing state, and post-alarm states such as holding and alarm monitoring states. 
     The system state machines can co-manage one or more states with sensor state machines. These co-managed states (“shared states”) can exist as states in both system and sensor state machines for a particular hazard. For example, smoke system state machine  315  may share one or more states with smoke sensor state machine  314 , and CO system state machine  317  may share one or more states with CO sensor state machine  316 . The joint collaboration between system and sensor state machines for a particular hazard is shown by communications link  370 , which connects the two state machines. In some embodiments, any state change transition to a shared state may be controlled by the sensor state machine. For example, the alarming state may be a shared state, and anytime a sensor state machine transitions to the alarming state, the system state machine that co-manages states with that sensor state machine may also transition to the alarming state. In some embodiments, shared states can include idling states, alarming states, and alarm hushing states. The parameters by which multi-criteria state machines  310  may function are discussed in more detail in connection with the description accompanying  FIGS. 4A-8B , below. 
       FIG. 4A  shows an illustrative smoke sensor state machine  400  according to an embodiment. For example, smoke sensor state machine  400  can be one of the multi-criteria state machines (of  FIG. 3 ) that manages a smoke detector. Smoke sensor state machine  400  can include idle state  410 , monitor state  420 , alarm state  430 , and alarm hush state  440 . State machine  400  can transition between states  410 ,  420 ,  430 , and  440  based on one or more conditions. As shown, seven (7) different state transitions can exist in state machine  400 .  FIG. 4B  shows the conditions associated with each transition. In particular,  FIG. 4B  includes several columns of information labeled as Transition, From, To, Condition Set #1, Condition Set #2, and Condition Variables. Each row corresponds to one of the transitions of  FIG. 4A , identifies the “From” state and the “To” state, and one or more conditions that may need to be met in order for the transition to take place, and the condition variables, if any. Two condition sets, condition set #1 and condition set #2, are shown to illustrate that different conditions can be imposed on state machine  400 . Condition set #1 may apply to a first geographic region such as the United States and condition set #2 may apply to a second geographic region such as Europe. Referring collectively to  FIGS. 4A and 4B , each transition is discussed, primarily in reference with condition set #1. 
     In transition  1 , state machine  400  transitions from idle state  410  to monitor state  420  when the monitored smoke data value (referred to herein as “Smoke”) is greater than or equal to a relatively low smoke alarm threshold value (referred to herein as Smoke_T_Low). The monitored smoke data value can be measured in terms of obscuration percentage or dBm. More particularly, the monitored smoke data value can be a measure of obscuration percentage per meter (e.g., obs %/meter), obscuration per foot (e.g., obs %/foot) or dBm per meter (e.g., obs %/meter). Obscuration is the effect that smoke has on reducing sensor “visibility,” where higher concentrations of smoke result in higher obscuration levels. dBm is a sensitivity measurement of a smoke sensor. 
     A smoke sensor can include a photoelectric smoke chamber, which may be dark inside and which may include vents that permit air to enter and exit. The chamber can include a laser diode that may transmit an infrared beam of light across the chamber in a particular direction. The chamber can also include a sensor that may operate to ‘see’ the light. When there is no smoke in the chamber, the beam of light may just get absorbed and the sensor may not ‘see’ any light. However, when smoke enters the chamber, the particulate of the smoke can cause the light to scatter and thereby cause some light to hit the sensor. The amount of light sensed by the sensor can be directly proportional to the obscuration value: the more light, the higher the obscuration. At 100% obscuration, the chamber may be filled with smoke, and a substantial amount of light may be hitting the senor. At 0%, there may be no smoke in the chamber and no light may reach the sensor. Per UL requirements for sounding an alarm, anything that exceeds 4% considered an alarm condition. 
     The relatively low smoke alarm threshold value, Smoke_T_Low, can be one of several smoke alarm threshold values. Other smoke alarm values can include base level smoke alarm threshold level, Smoke_T_Base, relatively moderate smoke alarm threshold level, Smoke_T_Mid, and relatively high smoke alarm threshold level, Smoke_T_High. Each of these smoke alarm values can be accessible by smoke state machine  400  when making state machine transition decisions. For example, Smoke_T_Base can define to a smoke threshold for exiting an alarm state, and Smoke_T_Low, Smoke_T_Mid, and Smoke_T_High can define thresholds for triggering an alarm. Table 1, below, shows illustrative values associated with each smoke alarm threshold. 
     
       
         
           
               
               
               
               
             
               
                   
                 TABLE 1 
               
               
                   
                   
               
               
                   
                   
                 Condition Set #1 - 
                 Condition Set #2 - 
               
               
                   
                 Level 
                 (OBS %/m) 
                 (dBm/m) 
               
               
                   
                   
               
             
            
               
                   
               
            
           
           
               
               
               
               
            
               
                   
                 Smoke_T_Base 
                 0.9 
                 0.01 
               
               
                   
                 Smoke_T_Low 
                 2.2 
                 0.08 
               
               
                   
                 Smoke_T_Mid 
                 3.3 
                 0.1 
               
               
                   
                 Smoke_T_High 
                 3.6 
                 .12 
               
               
                   
                   
               
            
           
         
       
     
     In monitor state  420 , the hazard detection system may poll several of its sensors at a faster rate than it was in idle state  410 . For example, instead of polling the smoke sensor (e.g., smoke sensor  1324 ) every 10 seconds, it may poll the smoke sensor every 2 seconds. Faster polling can enable the hazard detection system to acquire data at a faster rate so that it can more quickly make an informed decision on whether to sound the alarm. 
     In transition  2 , state machine  400  transitions from monitor state  420  to alarm state  430  when Smoke is greater than or equal to the currently selected smoke alarm threshold, Smoke_T_Cur. The currently selected smoke alarm threshold can be set to any one of the smoke alarm threshold values (e.g., Smoke_T_Base, Smoke_T_Low, Smoke_T_Mid, or Smoke_T_High). In one embodiment, Smoke_T_Cur can be set to Smoke_T_Low, Smoke_T_Mid, or Smoke_T_High by alarm/pre-alarm threshold setting module  900 , discussed below. In another embodiment, Smoke_T_Cur can be set to Smoke_T_Low as a default setting unless alarm/pre-alarm threshold setting module  900  instructs state machine  400  otherwise. 
     In transition  3 , and according to condition set #1, state machine  400  transitions from alarm state  430  to alarm hush state  440  when a hush event is detected and Smoke is less than Smoke_T_High. The hush event may be a gesture recognized hush event processed by hush module  1307  (discussed below in connection with  FIGS. 13 and 15 ) or a button press event of button  1340  (discussed below in connection with  FIGS. 13 and 15 ). If Smoke is greater than or equal to Smoke_T_High, then state machine  400  remains in alarm state  430 . According to condition set #2, only a hush event need be detected in order to effect transition  3 . Thus, even if Smoke is greater than Smoke_T_High, the detected hush event is sufficient to silence the alarm. 
     In transition  4 , and according to condition set #1, state machine  400  can transition from alarm hush state  440  to alarm state  430  when Smoke is greater than or equal to Smoke_T_High. This particular condition requires that state machine  400  be in alarm state  440  if the monitored smoke data value exceeds the relatively high smoke alarm threshold level, regardless of whether a hush event is detected. Thus, the alarm will continue to sound if Smoke exceeds Smoke_T_High and a hush event is detected. Also, according to condition set #1, state machine  400  can transition from alarm hush state  440  to alarm state  430  when the time elapsed since entering state  440  (hereinafter T_Hush) is greater than or equal to a maximum allowable hush time period (hereinafter Max_Hush_Time) and Smoke is greater than or equal to Smoke_T_Cur minus a constant, K s . This condition can cover the situation where the Smoke level has not decreased by a predetermined amount after a predetermined period of time has elapsed. According to condition set #2, state machine  400  is essentially the same as condition set #1, but forces the alarm to be silenced for a minimum allowable hush time period (herein after Min_Hush_Time). Only after T_Hush exceeds (or equals) Min_Hush_Time can state machine  400  evaluate the conditions to make a potential state change transition. 
     K s  is the constant used in determining a learned condition threshold. As discussed above, K s  can be changed based on any suitable number of factors. For example, K s  can be changed based on learned device behavior. Learned device behavior can be based on one hazard detection device or an aggregate of hazard detection devices. 
     In transition  5 , state machine  400  can transition from alarm hush state  440  to monitor state  420  when T_Hush is greater than or equal to Max_Hush_Time and Smoke is less than Smoke_T_Cur minus K s . This covers the condition where the Smoke level decreased by a predetermined amount after a first predetermined period of time has elapsed. State machine  400  can also transition from alarm hush state  440  to monitor state  430  when T_Hush is greater than or equal to Min_Hush_Time and Smoke is less than Smoke_T_Base. This can cover the condition where the Smoke level decreased to an extremely low level after a second predetermined period of time has elapsed. 
     In transition  6 , state machine  400  can transition from alarm state  430  to monitor state  420  when smoke is less than Smoke_T_Cur minus K s . In transition  7 , state machine  400  can transition from monitor state  420  to idle state  410  when Smoke is less than Smoke_T_Base. 
     As known in the art, because of the way CO harms the human body only upon build-up over a period of time, CO detectors may not operate by simple thresholding of a measured CO level condition. Instead, CO detectors may work on a time-integral methodology in which different “time buckets” begin to fill when the CO level rises above certain thresholds, and then a CO alarm may only be sounded when there has been sustained CO levels for certain periods of time. In some embodiments, the time buckets can empty when the CO level falls below certain thresholds. These CO “time buckets” are shown in Table 2, below. Table 2 has several columns including Bucket, U.S. Regulation Level (ppm), U.S. Implementation level (ppm), U.S. Pre-Alarm Time (min), U.S. Alarm Time (min), Europe Regulation Level (ppm), Europe Implementation Level (ppm), Europe Pre-Alarm Time (min), and Europe Time (min). The U.S. parameters are shown grouped together as condition 1 and the Europe parameters are shown grouped together as condition 2. There are four CO time buckets: CO_B_Low, CO_B_Mid, CO_B_High, and CO_B_VeryHigh. The U.S. and Europe Regulation Level (ppm) columns define government mandated threshold for managing the different CO time buckets. For example, for CO_B_Low bucket, this bucket should begin to fill when CO levels exceed 70+/−5 ppm for the U.S. and 50 ppm for Europe. 
     
       
         
           
               
               
               
             
               
                   
                 TABLE 2 
               
             
            
               
                   
                   
               
               
                   
                 Condition Set #1 - U.S. 
                 Condition Set #2 - Europe 
               
            
           
           
               
               
               
               
               
               
               
               
               
            
               
                   
                   
                   
                 PA 
                 Alarm 
                   
                   
                 PA 
                 Alarm 
               
               
                   
                 Reg. 
                 Imp. 
                 Time 
                 Time 
                 Reg. 
                 Imp. 
                 Time 
                 Time 
               
               
                 Bucket 
                 (ppm) 
                 (ppm) 
                 (min) 
                 (min) 
                 (ppm) 
                 (ppm) 
                 (min) 
                 (min) 
               
               
                   
               
            
           
           
               
               
               
               
               
               
               
               
               
            
               
                 CO_B_Low 
                  70 ± 5 
                 58 
                 63 
                 120 
                 50 
                 48 
                 63 
                 75 
               
               
                 CO_B_Mid 
                 150 ± 5 
                 131 
                 13 
                 30 
                 100 
                 98 
                 13 
                 25 
               
               
                 CO_B_High 
                 400 ± 5 
                 351 
                 7 
                 10 
                 300 
                 298 
                 1 
                 2 
               
               
                 CO_B_VH 
                 1000 
                 675 
                 0.5 
                 1 
                 1000 
                 748 
                 0.5 
                 1 
               
               
                   
               
            
           
         
       
     
     The U.S. and Europe Implementation Level (ppm) may define hazard detection system implementation thresholds for managing the different CO buckets, according to embodiments discussed herein. As shown, the implementation levels can be set to thresholds that are more conservative than the government mandated levels. For example, the implementation level for the CO_B_Low bucket can be initially set to a value below the minimum U.S. Regulation value such as value of 64 or less. In addition, a variable safety factor (not shown) can be incorporated into a function used to define the implementation levels so that the implementation level can be changed, for example, once the hazard detection device enters the field. The function can be a subtraction function that reduces an initial level by a certain percentage. For example, an initial implementation level may be selected that satisfies the government regulation level, and this initial level can be reduced by a percentage. As a specific example, for the U.S. CO_B_Low bucket, the initial implementation level can be set to 65 and the reduction percentage can be set to 10%. The resultant implementation level is 58: 65-10% of 65=58. 
     During operation, the CO time buckets can be managed by selectively adding and subtracting time units to one or more of the buckets based on the CO data values received from a CO sensor. Time units can be represented by any suitable time factor, such as minutes or hours. For ease of discussion, assume that time units are in minutes. A time unit quantity indicates the number of time units that are in a CO time bucket. In some embodiments, the time unity quantity for each CO bucket may be initially set to zero (0), and the time unit quantity does not drop below zero (0), nor does it increase above the alarm time designated for that particular CO time bucket. A time unit can be added to one or more of the CO time buckets if the CO data value is equal to or greater than the implementation level associated with that CO time bucket. For example, assuming the implementation level for the CO_B_Low bucket is 58, a time unit is added to the CO_B_Low bucket for each minute the CO level meets or exceeds 58. A time unit may be subtracted from one or more of the CO time buckets if the CO data value is less than a fraction of the implementation level associated with each CO time bucket. For example, if CO&lt;CO_B_X_Level−(CO_B_X_Level*0.2), where CO_B_X_Level is the time unit quantity for CO time bucket X, and where X is one of the four time buckets, a time unit can be subtracted from time bucket X. 
     The U.S. and EU Alarm Times are time values that can define when an alarm should be sounded for a particular bucket. Thus, when the time unit quantity of one CO time bucket equals or exceeds the alarm time for that CO time bucket, the alarm can be activated. These alarm time parameters are generally defined by a government entity or other official safety organization. For example, regarding U.S. conditions, if monitored CO levels have exceeded 80 ppm for more than 120 minutes, an alarm should be sounded because the CO_B_Low bucket has filled up (i.e., the time unit quantity for the low CO bucket is 120). As another example, regarding U.S. conditions, if monitored CO levels exceed 450 ppm for more than 50 minutes, the CO_B_Mid and CO_B_High buckets may be filled. The CO_B_Low bucket may or may not be filled depending on CO levels prior to the 50 minute time period in which CO levels exceeded 450 ppm. 
     The U.S. and Europe Pre-Alarm Time parameters can define when a pre-alarm should be sounded for a particular bucket. Thus, when the time unit quantity of one CO time bucket equals or exceeds the pre-alarm time for that CO time bucket, a pre-alarm can be activated (e.g., as discussed below in connection with  FIGS. 8A and 8B ). These parameters can be set to thresholds below the U.S. and Europe Alarm Time parameters so that the pre-alarm may be sounded before the actual alarm is sounded. It is understood that while the U.S. and Europe Regulation Levels and Alarm Times are substantially fixed parameters, the parameters associated with the U.S. and Europe Implementation levels and the pre-alarm hush times are illustrative. 
     The CO time buckets can maintain their respective time unit quantity even after a time unit quantity reaches its alarm time parameter. This is in contrast to conventional CO detectors that simply “flush” their buckets and start all over again. Maintaining the time unit quantities throughout the alarming process, and not “flushing” the buckets, may be much more appropriate for safety reasons, because the human body certainly does not “flush” its CO levels upon hearing an alarm and then hushing it. Thus, in a hypothetical scenario in which there is a persistent level (say “70”) of CO in the room, then for a conventional CO alarm that is silenced by the user, it may take over an hour until it alarms again, even though the CO continues to build up in the blood. Thus, based on the operation of the CO sensor state machine according to embodiments discussed, even after a hushing event, it may be the case that the CO alarm continues to sound, because this may be the right thing to do for the health of the occupant. 
       FIG. 5A  shows an illustrative CO sensor state machine  500  according to an embodiment. CO sensor state machine  500  can include idle state  510 , alarm state  520 , and hush state  530 . State machine  500  can transition between states  510 ,  520 , and  530  based on one or more conditions. As shown, five (5) different state transitions can exist in state machine  500 .  FIG. 5B  shows the conditions associated with each transition. In particular,  FIG. 5B  includes several columns of information labeled as Transition, From, To, and Condition. Each row corresponds to one of the transitions of  FIG. 5A , identifies the “From” state and the “To” state, and one or more conditions that may need to be met in order for the transition to take place. The transitions of state machine  500  are now discussed with reference to  FIGS. 5A and 5B . 
     In transition  1 , state machine  500  can transition from idle state  510  to alarm state  520  when any CO bucket is full. Referring to Table 2, above, a CO bucket is full when the monitored CO data value (referred to herein as “CO”) exceeds the implementation threshold for a time duration exceeding the alarm time. The monitored CO data value can be a raw data value or a filtered data value. In transition  2 , state machine  500  can transition from alarm state  520  to hush state  530  in response to a detected hush event. The detected hush event can be a gesture hush or a button press. 
     In transition  3 , state machine  500  can transition from hush state  530  to alarm state  520  if the hush time duration (referred to herein as “T_Hushed”) is greater than or equal to a minimum hush time duration (referred to herein as “Min_Alarm_Hush_Time”) and the monitored CO level (CO) is greater than or equal to a minimum CO threshold (referred to herein as “CO_B_Low_Level”). In one embodiment, CO_B_Low_Level is the implementation level of the CO_B_Low bucket. 
     In transition  4 , state machine  500  can transition from hush state  530  to idle state  510  if the hush time duration (T_Hushed) is greater than or equal to the minimum hush time duration (Min_Alarm_Hush_Time) and the monitored CO level is less than the minimum CO threshold (CO_B_Low_Level). In transition  5 , state machine  500  can transition from alarm state  520  to idle state  510  if the monitored CO level is less than the minimum CO threshold CO_B_Low_Level. 
       FIG. 6A  shows an illustrative heat sensor state machine  600  according to an embodiment. Heat sensor state machine  600  can include idle state  610 , alarm state  620 , and hush state  630 . State machine  600  can transition between states  610 ,  620 , and  630  based on one or more conditions. As shown, five (5) different state transitions can exist in state machine  600 .  FIG. 6B  shows the conditions associated with each transition. In particular,  FIG. 6B  includes several columns of information labeled as Transition, From, To, and Condition. Each row corresponds to one of the transitions of  FIG. 5A , identifies the “From” state and the “To” state, and one or more conditions that may need to be met in order for the transition to take place. The transition between states is discussed in reference to  FIGS. 6A and 6B . 
     In transition  1 , state machine  600  transitions from idle state  610  to alarm state  620  when a heat data value (referred to herein as “Temp”) is greater than a first heat alarm threshold value (referred to herein as “Heat_T_First”). In one embodiment, the heat data value can be a monitored heat value measured directly from a heat sensor (e.g., temperature sensor  1326 ) within the hazard detection system. In another embodiment, the heat data value can be a function of the monitored heat value. The function can apply an accelerated temperature algorithm to the monitored heat value to produce an estimate of the actual temperature of the region surrounding the hazard detection system. The application of such an algorithm can compensate for a temperature sensor&#39;s relatively slow rise time in response to monitored changes in temperature. Additional details on this algorithm are discussed below. 
     In transition  2 , state machine  600  can transition from alarm state  620  to hush state  630  when Temp is less than a second heat alarm threshold (referred to herein as “Heat_T_Second”) and a hush event is detected. Heat_T_Second can have a higher value than Heat_T_First. In transition  3 , state machine  600  can transition from hush state  630  to alarm state  620  when the Temp is greater than Heat_T_Second. State machine  600  can also transition from hush state  630  to alarm state  620  when the hush time duration (referred to herein as “T_Hushed”) is equal to or greater than a minimum hush duration (referred to herein as “Min_T_Hush_Time”) and the Temp is greater than a third heat alarm threshold (referred to herein as “Heat_T_Third). The third heat alarm threshold is less than the first heat alarm threshold. 
     In transition  4 , state machine  600  can transition from hush state  630  to idle state  610  when Temp is less than Heat_T_Third. In transition  5 , state machine  600  can transition from alarm state  620  to idle state  610  when T_Hushed is equal to or greater than Min_T_Hush_Time and the Temp is less than Heat_T_Third. 
     As discussed above, an accelerated temperature algorithm can be used to estimate the actual temperature being sensed by a temperature sensor. In some embodiments, the raw temperature data may be acquired by a NTC thermistor at regular intervals (e.g., every second or every other second). The acquired raw data may be provided to a single-pole infinite impulse response low pass filter to obtain a filter data reading. The tittered data reading can be obtained using the following equation (1):
 
 y   i   =ax   i +(1−α) y   i-1   (1)
 
where y i  is a filtered value, α is a smoothing factor, x i  is raw data received from the sensor, and y i-1  is the previously filtered value. The smoothing factor, by definition, may exist between 0≦α≦1. In particular a may be defined the by the following equation (2):
 
α=Δ T   /RC+Δ   T   (12)
 
where RC may be defined by the following equation (3):
 
 RC=Δ   T (1−α/α)  (3).
 
In one embodiment, when Δ T  is 1, second α can be 0.01. The accelerated temperature can be calculated based on the following equation (4):
 
Accelerated_Team i   =y   i +( x   i   −y   i )*Gain  (4)
 
where the Gain may be 10. It is understood that, in some embodiments, the accelerated temperature can be the parameter used by other state machines and modules. For example, smoke sensor state machine  400  can use the accelerated temperature in transition  6 . As another example, alarm threshold setting module  900  (discussed below) can use the accelerated temperature.
 
     In some embodiments, additional conditions can be imposed on heat sensor state machine  600 . For example, state machine  600  can transition from any state to alarm state  620  if a rate of change of Temp meets or exceeds a predetermined rate of change threshold. The predetermined rate of change threshold can be, for example, a six degree change per minute. In other embodiments, data values acquired from two or more heat sensors can be used by state machine  600 . For example, an average or median of the data values acquired by two or more heat sensors can be used as the Temp parameter in  FIG. 6B . The two or more heat sensors can be of the same type (e.g., two thermistor type heat sensors) or different types. As another example, data values from two heat sensors may be compared against each other and if the difference between the two exceeds a predetermined number, state machine  600  may be temporarily disabled. 
       FIG. 7A  shows illustrative smoke system state machine  700  according to an embodiment. Smoke system state machine  700  can include idle state  710 , monitor state  720 , alarm state  730 , alarm hushed state  738 , first pre-alarm state  740 , second pre-alarm state  744 , pre-alarm hushed state  748 , holding state  750 , and alarm monitor state  760 . It is understood that additional states may be incorporated into state machine  700  and/or that one or more states can be omitted. State machine  700  can transition among these states based on conditions set forth in  FIG. 7B , according to an embodiment.  FIG. 7B  includes several columns of information labeled as Transition, From, To, Condition, and Condition Variables. Each row corresponds to one of the transitions of  FIG. 7A , identifies the “From” state and the “To” state, and one or more conditions that may need to be met in order for the transition to take place, and the condition variables, if any. Reference will be made to  FIGS. 7A and 7B  collectively in the following discussion. 
     Smoke system state machine  700  can permit smoke sensor state machine  400  to control one or more of its state transitions. In particular, smoke sensor state machine  400  can control smoke system state machine  700 &#39;s transitions to idle state  710 , alarm state  730 , holding state  750 , and alarm monitor state  760 . This shared arrangement permits smoke sensor state machine  400  to control the smoke detector&#39;s alarming state and permits smoke system state machine  700  to control the pre-alarming states. Thus, regardless of which non-alarm state (e.g., first pre-alarm state  740 , pre-alarm hushed state  748 , etc.) smoke system state machine  700  is in, smoke sensor state machine  400  can cause the alarm to sound if the monitored smoke levels exceed the smoke alarm threshold. 
     In transition  1 , smoke system state machine  700  can transition from any state to alarm state  730  when Smoke is greater than or equal to Smoke_T_Cur. This transition is controlled by transition  2  of smoke sensor state machine  400  (as discussed above). 
     In transition  2 , smoke system state machine  700  can transition from monitor state  720  to first pre-alarm state  740  when Smoke is greater than or equal to a first pre-alarm threshold (referred to herein as “Smoke_PA 1 _Threshold”). Smoke_PA 1 _Threshold may be determined by alarm/pre-alarm threshold setting module  1312 , which is discussed in more detail below. First pre-alarm state  740  can represent a condition in which elevated smoke levels are detected, but at a level less than that required to sound the alarm. In this state, smoke system state machine  700  can playback a warning over a speaker (e.g., speaker  354 ) or cause a display (e.g., display  352 ) to flash. In transition  3 , smoke system state machine  700  can transition from first pre-alarm state  740  to second pre-alarm state  744  when elapsed time since entering first pre-alarm state  740  (referred to herein as “T_PA 1 ”) equals or exceeds a maximum hush time threshold (referred to herein as “Max_Hush_Time”) and Smoke is greater than or equal to Smoke_PA 1 _Threshold plus a constant, K s . Second pre-alarm state  744  can represent a condition in which very elevated smoke levels are detected. Such a smoke level may be greater than that smoke level in first pre-alarm state  740 , but may be less than that required to sound the alarm. In this state, state machine  700  may playback another message over the speaker and/or flash different lights. 
     In transition  4 , state machine  700  can transition from pre-alarm hushed state  748  to second pre-alarm state  744  when elapsed time since entering pre-alarm hushed state  748  (referred to herein as “T_PA_Hushed”) equals or exceeds the Max_Hush_Time and Smoke is greater than or equal to Smoke_Hushed plus K s , where Smoke_Hushed is the Smoke level when state machine  700  initially transitioned to pre-alarm hushed state  748 . 
     In transition  5 , state machine  700  can transition from alarm hushed state  738  to alarm state  730  when a condition of smoke sensor state machine  400  transition  4  is satisfied. See the conditions of transition  4  in  FIG. 4B  as discussed above. 
     In transitions  6  and  12 , state machine  700  can transition from first pre-alarm state  740  or from second pre-alarm state  744  to monitor state  720  or from pre-alarm hushed state  748  to monitor state  720  when (1) Smoke is less than Smoke_PA 1 _Threshold minus K s  and (2) CO is less than the CO_B_Low_Level and (3) Temp is less than third heat threshold, which is less than the first heat threshold. 
     In transition  7 , state machine  700  can transition from alarm state  730  or alarm hushed state  738  to holding state  750  when the conditions of either transitions  5  or  6  of smoke sensor state machine  400  are satisfied. See conditions of transitions  5  and  6  in  FIG. 4B  as discussed above. If the hazard detection system has experienced an alarm event, and conditions exist that enable it to safely exit from alarm state  730  or alarm hushed state  738 , state machine  700  may transition to holding state  750 . Holding state  750  can serve as a de-bounce state to prevent activation of a pre-alarm (e.g., either first or second pre-alarms). 
     In transition  8 , state machine  700  can transition from idle state  710  to monitor state  720  when Smoke is greater than or equal to one half of Smoke_T_Cur. In monitor state  720 , state machine  700  may instruct the hazard detection system to increase the sampling rate of one more sensors. 
     In transition  9 , state machine  700  can transition from monitor state  720  to idle state  710  when the condition of transition  7  of smoke sensor state machine  400  is satisfied. In addition, state machine  700  can automatically transition from alarm monitor state  760  to idle state  710  immediately after state machine  700  transitions to alarm monitor state  760 . In alarm monitor state  760 , state machine  700  may playback a “condition cleared” message via a speaker. The “condition cleared” message can indicate, for example, that the smoke levels are no longer detected to be at anomalous levels. 
     In transition  10 , state machine  700  can transition from first pre-alarm state  740  or from second pre-alarm state  744  to pre-alarm hushed state  748  in response to a detected hush event. In transition  11 , state machine  700  can transition from alarm state  730  to alarm hushed state  738  in response to a detected hush event. In transition  13 , state machine  700  can transition from holding state  750  to alarm monitor state  760  when the condition of transition  7  of smoke sensor state machine  400  is satisfied. 
       FIG. 8A  shows illustrative CO system state machine  800  according to an embodiment. CO system state machine  800  can include idle state  810 , monitor state  820 , alarm state  830 , alarm hushed state  838 , first pre-alarm state  840 , second pre-alarm state  844 , pre-alarm hushed state  848 , holding state  850 , and alarm monitor state  860 . It is understood that additional states may be incorporated into state machine  800  and that one or more states can be omitted. CO state machine  800  can embody many or all of the same states as smoke system state machine  700 , and any action executed by the hazard detection system in response to entering any one of CO states can be similar to the action taken by the hazard detection system in response to entering any one of the smoke states. Thus, definitions applied to various smoke system sensor states are applicable to CO system sensor states. For example, if either Smoke system state machine  700  or CO system state machine  800  go into an alarm state, the hazard detection system will sound the alarm. The alarm may be characterized as a CO alarm if the CO state machine goes to alarm, or the alarm may be characterized as a smoke alarm if the smoke state machine goes to alarm, or the alarm may be characterized as both smoke and CO alarms if both the smoke and CO state machines go into alarm. Similarly, as another example, if either state machine goes to a pre-alarm state, the hazard detection system can playback a pre-alarm message. The message can be generic or it can be specific to the system state machine that entered into the pre-alarm state. Although many of the CO system states may be the same as the smoke system states, the transitions between those states are based on different conditions. In particular, state machine  800  can transition among states based on conditions set forth in  FIG. 8B , according to an embodiment.  FIG. 8B  includes several columns of information labeled as Transition, From, To, Condition, and Condition Variables. Each row corresponds to one of the transitions of  FIG. 8A , identifies the “From” state and the “To” state, and one or more conditions that may need to be met in order for the transition to take place, and the condition variables, if any. Reference will be made to  FIGS. 8A and 8B  collectively in the following discussion. 
     CO system state machine  800  can permit CO sensor state machine  500  to control one or more of its state transitions. In particular, CO sensor state machine  500  can control CO system state machine  800 &#39;s transitions to alarm state  830  and holding state  850 . This shared arrangement permits CO sensor state machine  500  to control the CO detector&#39;s alarming state and permits CO system state machine  800  to control the pre-alarms. Thus, regardless of which non-alarm state (e.g., first pre-alarm state  840 , pre-alarm hushed state  848 , etc.) CO system state machine  800  is in, CO sensor state machine  500  can cause the alarm to sound if the monitored CO levels exceed the CO alarm threshold. 
     In transition  1 , CO system state machine  800  can transition from any state to alarm state  830  when the condition of transition  1  of CO sensor state machine  500  is satisfied. This transition is controlled by transition  1  of CO sensor state machine  500  (as discussed above). As defined herein, CO_Bx_Time, is the current time level of the CO_Bx bucket, where Bx denotes a particular bucket. As defined herein, CO_Bx_Level, is the implementation level for the bucket corresponding to Bx. For example, referring to Table 2 (above), if Bx is High, then CO_Bx_Level is 388. Continuing with this example, if CO_Bx_Time is 433, then CO_B_High bucket is full. 
     In transition  2 , CO system state machine  800  can transition from monitor state  820  to first pre-alarm state  840  when any one of the CO buckets fills up to a time value (CO_Bx_Time) that meets or exceeds its respective pre-alarm bucket threshold (referred to herein as “CO_Bx_PA 1 _Time”), where Bx denotes one of the buckets. This same condition can also control transition  8 , in which state machine  800  transitions from idle mode  810  to monitor mode  820 . The parameters of the pre-alarm CO buckets are shown in Table 2 (above) in the PA Time columns for conditions  1  and  2 . For example, if the bucket for CO_B_Low exceeds 63, then state machine  800  can transition to first pre-alarm state  840 . When state machine  800  enters first pre-alarm state  840 , it may instruct the hazard detection system to playback a pre-alarm message. CO system state machine  800  can transition from first pre-alarm state  840  to second pre-alarm state  844  in transition  3 . Transition  3  can occur when the time spent in first pre-alarm state  840  (referred to herein as “T_PA 1 ”) is equal to or greater than a minimum hush time threshold (referred to herein as “Min_PA_Hush_Time”) and the bucket responsible for entering into first pre-alarm state  840  has continued to fill up beyond the point it was at when state machine  800  entered into first pre-alarm state  840 . 
     CO system state machine  800  can transition from pre-alarm hushed state  848  to second pre-alarm state  844  in transition  4 . Transition  4  can occur when the time spent in pre-alarm hushed state  848  (referred to herein as “T_PA_Hushed”) is equal to or greater than a minimum hush time threshold (referred to herein as “Min_PA_Hush_Time”) and the bucket responsible for entering into first pre-alarm state  840  has continued to fill up beyond the point it was at when state machine  800  entered into first pre-alarm state  840 . 
     In transition  5 , CO system state machine  800  can transition from alarm hushed state  838  to alarm state  830  when the condition of transition  3  of CO sensor state machine  500  is satisfied (as discussed above). In transition  7 , CO system state machine  800  can transition from alarm state  830  to holding state  850  when the conditions of transition  4  or transition  5  of CO sensor state machine  500  are satisfied. 
     In transition  6 , CO system state machine  800  can transition from first pre-alarm state  840  to monitor state  820  when two of three condition parameters are satisfied. Satisfaction of the first parameter is mandatory and satisfaction of either the second condition or third condition is needed to effect transition  6 . The first condition parameter is satisfied when T_PA 1  is equal to or exceeds a predetermined time threshold (referred to as Min_PA_to_Monitor_Time). The second condition is satisfied when the time value associated with one of the buckets is equal to zero. The bucket can be, for example, the CO_B_Low bucket, though any bucket can be used. The time value associated with the Low CO bucket is referred to herein as CO_B_Low_Time. The third condition is satisfied when (1) CO_B_Low_Time is less than a result of a difference function and (2) CO_B_Low_Time is less than the time value of the low bucket pre-alarm threshold (referred to as CO_B Low   _ PA 1 _Time). The difference function may be the result of the difference of (1) the time value of the bucket that caused the system state machine to enter into first pre-alarm state  840  (referred to herein as “X”) and (2) a predetermined threshold (referred to herein as “Min_ALARM_Clear_Time”). 
     In transition  9 , state machine  800  can transition from monitor state  820  or alarm monitor state  860  to idle state  810  when CO_B Low   _ Time is less than a predetermined threshold (e.g., 45 minutes). In transition  10 , state machine  800  can transition from first pre-alarm state  840  or from second pre-alarm state  844  to pre-alarm hushed state  848  in response to a detected hush event. In transition  11 , state machine  800  can transition from alarm state  830  to alarm hushed state  838  in response to a detected hush event. 
     In transition  12 , state machine  800  can transition from second pre-alarm state  844  or pre-alarm hushed state  848  to monitor state  820  when (1) the amount of time spent in second pre-alarm state  844  (referred to has T_PA 2 ) is equal to or greater than Min_PA_to_Monitor_Time and (2) CO is less than a fraction of CO_B_Low_Level (e.g., 80% of CO_B_Low_Level). 
     In transition  13 , state machine  800  can transition from holding state  850  to alarm monitor state  860  when (1) the amount of time spent in holding state  850  (T_Holding) is equal to or greater than Min_Alarm_Clear_Time and one of (2) CO_B_Low_Time is equal to zero and (3) CO_B_Low_Time is less than a result of a difference function. The difference function may be the result of the difference of (1) the time value of the bucket that caused the system state machine to enter into first pre-alarm state  840  (e.g., “X”) and (2) Min_ALARM_Clear_Time. 
       FIG. 9  shows an illustrative alarm/pre-alarm threshold setting module  900  according to an embodiment. Module  900  can include two sub modules: alarm selection module  910  and pre-alarm selection module  930 . Module  910  may be operative to set the smoke alarm threshold, Smoke_T_Cur, that is used by smoke sensor state machine  400  in making a determination whether to enter into an alarming state. In addition, module  930  is also operative to set the smoke pre-alarm threshold, Pre_Alarm 1 _Threshold, that is used by smoke system state machine  700  in making a determination whether to enter into a pre-alarming state. 
     Alarm selection module  910  includes selection engine  920 , which receives inputs from smoke sensor  901 , heat sensor  902 , CO sensor  903 , humidity sensor  904 , smoke alarm thresholds Smoke_T_Low  911 , Smoke_T_Mid  912 , and Smoke_T_High  913 , and selection criteria  914 . Selection engine  920  can produce output, Smoke_T_Cur  922 , based on the received inputs. The inputs received from sensors  901 - 904  can be raw data values or processed data values. For example, data received from sensor  901  can be the instantaneously monitored smoke data value, Smoke. Data received from sensor  903  can be the instantaneously monitored CO data value, CO. Data received from sensor  904  can be the instantaneously monitored relative humidity data value, Hum. Data received from heat sensor  902  may be processed through an accelerated temperature algorithm (discussed above in connection with  FIGS. 6A and 6B ) before being provided to selection engine  920 . The accelerated temperature value may be referred to as Heat. Other sensor data values (not shown) can be provided to selection engine  920 . Smoke alarm thresholds Smoke_T_Low  911 , Smoke_T_Mid  912 , and Smoke_T_High  913  can correspond to the thresholds defined in Table 1, above. 
     Selection criteria  914  may define the parameters by which selection engine  920  selects one of smoke alarm thresholds Smoke_T_Low  911 , Smoke_T_Mid  912 , and Smoke_T_High  913  as Smoke_T_Cur  922  based on data received by sensors  901 - 904 . Table 3, below, shows the conditions that dictate which smoke alarm threshold is selected for Smoke_T_Cur  922 . Table 3 has three columns: smoke alarm threshold, enter condition, and exit condition. Each row specifies a particular smoke alarm threshold and the parameter(s) that causes selection engine  920  to select that particular smoke alarm threshold and the parameter(s) that enables selection  920  to deselect that particular smoke alarm threshold. The values presented in Table 3 are illustrative and can be modified or changed as desired by the hazard detection system. As shown in Table 3, Smoke_T_Mid is the default smoke alarm threshold. Thus, provided that none of the sensor data values meet any of the entry conditions of the other smoke alarm thresholds, selection engine  920  can select Smoke_T_Mid as Smoke_T_Cur  922 . In addition, selection engine  920  can select Smoke_T_Mid upon initial startup of the hazard detection system. 
     
       
         
           
               
               
               
             
               
                 TABLE 3 
               
               
                   
               
               
                 Smoke_Alarm_Threshold 
                   
                   
               
               
                 Value 
                 Enter Condition 
                 Exit Condition 
               
               
                   
               
             
            
               
                 Smoke_T_Mid 
                 Default 
                   
               
               
                 Smoke_T_Low 
                 CO &gt;= 70 (ppm) 
                 CO &lt; 20 (ppm) 
               
               
                 Smoke_T_Low 
                 Heat &gt;= 120 (F.) 
                 Heat &lt; 100 (F.) 
               
               
                 Smoke_T_High 
                 Hum &gt;= 
                 Hum &lt; Hum_Re- 
               
               
                   
                 Hum_Recent + 25 
                 cent_at_Entry + 10 
               
               
                   
                   
                 OR 
               
               
                   
                   
                 One Minute Elapsed 
               
               
                   
               
            
           
         
       
     
     Selection engine  920  can select Smoke_T_Low when CO meets or exceeds a first CO threshold (illustrated in Table 3 as 70 ppm) and selection of Smoke_T_Low is held until CO falls below a second CO threshold (illustrated in Table 3 as 20 ppm). The second CO threshold is less than the first CO threshold. The selection of Smoke_T_Low as an alarm threshold based on CO values illustrates an example of how multi-criteria state machines can be implemented according to various embodiments. Thus, if elevated CO levels are detected, then the smoke alarm threshold is lowered to Smoke_T_Low (as opposed to Smoke_T_Mid or Smoke_T_High), thereby “pre-arming” the smoke detector with pre-emptive smoke alarm sensitivity because non-smoke conditions are present that are more likely than not to correlate to a smoke condition. Selection engine  920  can also select Smoke_T_Low when Heat is equal to or exceeds a first heat threshold (illustrated in Table 3 as 120 F) and selection of Smoke_T_Low is held until Heat falls below a second heat threshold (shown as 100 F). The second heat threshold is less than the first heat threshold. 
     Selection engine  920  can select Smoke_T_High when Hum is greater than or equal to the sum of (1) Hum_Recent and (2) a first predetermined humidity constant (e.g., 25). Hum_Recent is an average or median of historical humidity readings. Hum_Recent can be a moving value that is updated at regular intervals. For example, in one embodiment, Hum_Recent can be the average or median humidity over the past 5 hours and updated every 30 minutes. Selection engine  920  can deselect Smoke_T_High when (1) Hum is less than the sum of Hum_Recent_at_entry (which may be the Hum_Recent value at the time the entry condition was satisfied) and a second predetermined humidity constant (e.g., 10) or (2) a predetermined period of time has elapsed since selecting Smoke_T_High (illustrated in Table 3 as one minute). The second predetermined humidity constant may be less than the first predetermined humidity constant. Selection of Smoke_T_High may at least temporarily set the smoke alarm threshold to a higher value in response to sudden increases in humidity. Because relatively sudden changes in humidity can sometimes cause the smoke sensor to falsely think it is reading elevated smoke levels, setting the alarm threshold to Smoke_T_High can prevent false alarms. 
     Selection engine  920  can perform its evaluation of the sensor data at regular intervals or in response to one or more events. The events can include state change events in one or more of the sensor state machines or system state machines, or the events can include trigger events. Trigger events can occur when a data value associated with a sensor moves out of a trigger band associated with that sensor. As defined herein, a trigger band can define upper and lower boundaries of data values for each sensor. Regardless of what triggers selection engine  920  to perform an evaluation, after all conditions are evaluated, selection engine  920  sets Smoke_T_Cur to the lowest alarm threshold satisfying the conditions. For example, assume that entry conditions for Smoke_T_High and Smoke_T_Low (for Heat) are satisfied. In this situation, selection engine  920  may select Smoke_T_Low for Smoke_T_Cur. If no conditions are satisfied, selection engine  920  may set Smoke_T_Cur to Smoke_T_Mid. 
     After selection  920  selects an alarm threshold for Smoke_T_Cur, this alarm threshold can be provided to trigger adjustment module  1310  (of  FIG. 13 ), smoke sensor state machine  400 , and pre-alarm selection module  930 . Pre-alarm selection module  930  can apply Smoke_T_Cur to function engine  932  to generate Pre-Alarm 1 _Threshold  934 . Function engine  932  can apply a multiplication factor ranging between 0.01 and 0.99 to Smoke_T_Cur to generate Pre-Alarm 1 _Threshold  934 . For example, in one embodiment, the multiplication factor may be 0.75. As shown, Pre-Alarm 1 _Threshold  934  can be provided to system module  1000  (of  FIG. 10 ) and smoke system state machine  700 . 
       FIG. 10  shows an illustrative system state machine module  1000  according to an embodiment. System state machine module  1000  may be a generic representation of system state machines  700  and  800 , and in particular, shows inputs being provided to system state machine engine  1050 , and outputs thereof. Engine  1050  is operative to control the system states of the smoke system state machine and the CO system state machine. The outputs of engine  1050  can include the following system states: monitor state  1052 , first pre-alarm state  1054 , second pre-alarm state  1056 , pre-alarm hushed state  1058 , hushing state  1060 , and alarm monitoring state  1062 . Engine  1050  can select one of these outputs based on one or more of the following inputs: hush event  1002 , smoke sensor data  1006 , CO sensor data  1008 , heat sensor data  1009 , smoke sensor state machine  400 , CO sensor state machine  500 , condition criteria  1070 , and time  1072 . Other inputs (not shown) can also be provided to engine  1050 . 
       FIG. 10  also illustrates which states may be shared between the sensor state machines and the system state machines. As shown, system state machine module  1000  includes dashed line representations of idle state  1080 , alarm state  1082 , and alarm hush state  1084 . States  1080 ,  1082 , and  1084  may be shared with the respective same states in smoke sensor state machine  400  and CO sensor state machine  500 . Thus, although module  1000  may be aware of the status of idle state  1080 , alarm state  1082 , and alarm hush state  1084 , engine  1050  does not control these states; sensor state machines  400  and  500  control these states. This is illustrated by arrows stemming from sensor state machines  400  and  500  and delivered to engine  1050 . Two different monitor states can exist among smoke sensor state machine  400  and module  1000  because different conditions can be used to control respective state machine transitions to that state. 
     Condition criteria  1070  can include the conditions embodied in  FIGS. 7B and 8B . In addition, condition criteria  1070  can receive the Pre_Alarm 1 _Threshold from alarm/pre-alarm threshold setting module  900 . Thus, for example, by referencing  FIG. 10  in connection with  FIGS. 7A and 7B , the reader can readily discern the operating principles of smoke system state machine  700 , and by referencing  FIG. 10  in connection with  FIGS. 8A and 8B , the reader can readily discern the operating principles of CO system state machine  800 . 
       FIG. 11  shows an illustrative hush module  1100  in accordance with an embodiment. Hush module  1100  is operative to process data received from one or more sensors, determine whether a hush event is detected, and provide indications of detected hush events to the system and/or sensor state machines. For example, as shown, hush detection engine  1150  can make a determination whether data received from any one or more of ultrasonic sensors  1102 , PIR sensor  1104 , and button  1106  include a hush event. Data from other sensors (not shown) may also be provided to hush detection engine  1150 . In response to determining that a hush event is detected, engine  1150  can provide alarm hush event notification  1152  to sensor state machines  1160  and pre-alarm hush event notification  1154  to system state machines  1170 , and, in particular to system module  1172 . Alarm hush event  1152  can be provided to and processed based on the conditions defined in each sensor state machine (e.g., sensor state machines  400 ,  500 , and  600 ). Similarly, pre-alarm hush event  1154  can be provided to and processed based on the conditions defined in each system state machine (e.g., system state machines  700  and  800 ). In some embodiments, hush detection engine  1150  can provide a generic hush event notification to sensor state machines  1160  and system state machines  1170 . The generic hush event notification may not be specific to any particular state machine or state, but rather may be an input that can be processed by each state machine based on the conditions defined therein. 
       FIG. 12  shows an illustrative alarm/speaker coordination module  1200  in accordance with an embodiment. Module  1200  can coordinate playback of messages through speaker  1290  in a manner that does not interfere or overlap with any sounds being emitted by alarm buzzer  1292 . As shown, module  1200  can include pre-alarm  1  message  1210 , pre-alarm  2  message  1212 , alarm message  1220 , and alarm/speaker coordination engine  1250 . Also shown in  FIG. 12  are sensor state machines  1280 , which may provide alarm info to coordination engine  1250  and can control operation of alarm buzzer  1292 . Messages  1210 ,  1212 , and  1220  may represent messages that can be played back through speaker  1290 . Each of messages  1210 ,  1212 , and  1220  can include one more messages that can be played back. The messages can include warnings and/or instructions on how to hush the alarm or pre-alarm. For example message  1210  may pertain to the first pre-alarm state of a system state machine, and message  1212  may pertain to the second pre-alarm state of a system state machine. When a system state machine enters into a first pre-alarm state, pre-alarm  1  message  1210  may be played back through speaker  1290  (as indicated by the line connecting message  1210  to speaker  1290 ). In some embodiments, the message played may be specific to the particular system state machine that is in the first pre-alarm state (e.g., a smoke system state machine may playback a message related to “smoke”). In other embodiments, the message played back can be generic, and the generic message may be played back regardless of which system state machine entered into the first pre-alarm state. Pre-alarm  2  message  1212  can be played back in a manner similar as to how pre-alarm  1  message  1210  may be played backed (as indicated by the line connecting message  1212  to speaker  1290 ). 
     Alarm message  1220  may pertain to the alarm state of a system state machine (e.g., smoke system state machine  700  or CO system state machine  800 ). When a system state machine wishes to playback alarm message  1220 , it is first provided to coordination engine  1250 , which determines when message  1220  can be played back based on the alarm info being received from sensor state machines  1280 . Since sensor state machines  1280  control the operation of alarm buzzer  1292 , it can inform coordination engine  1250  (via the alarm info) when the alarm buzzer will be emitting sounds. Coordination engine  1250  can use the alarm info to determine periods of time in which alarm buzzer  1292  will be silent and that are sufficient duration suitable for alarm message  1220  to be played back. For example, when alarm buzzer  1292  is being used, it may sound a “buzz,” then remain silent for a predetermined period of time, and, then sound another “buzz.” Alarm message  1220  can be played back during the alarm&#39;s silent predetermined period of time. 
       FIG. 13  shows an illustrative schematic of hazard detection system  1300  according to an embodiment and shows, among other things, signal paths among various components, state machines, and illustrative modules being executed by different processors. System  1300  can include system processor  1302 , safety processor  1330 , ultrasonic sensors  1321 , ALS sensor  1322 , humidity sensor  1323 , smoke sensor  1324 , CO sensor  1325 , temperatures sensors  1326 , and PIR sensor  1327 , button  1340 , LED(s)  1342 , alarm  1344 , and speaker  1346 . System processor  1302  can be similar to system processor  210  of  FIG. 2 . System processor  1302  can operate system state machines  1304 , system state machine module  1305 , alarm/speaker coordination module  1306 , hush module  1307 , trigger adjustment module  1310 , and sleep/wake module  1314 . System state machines  1304  can access system state machine module  1305 , alarm/speaker coordination module  1306 , and hush module  1307  in making state change determinations. System processor  1302  can receive data values acquired by ultrasonic sensors  1321  and other inputs from safety processor  1330 . System processor  1302  may receive data from sensors  1322 - 1327 , data from sensor log  1338 , trigger events from trigger module  1336 , state change events and alarm information from sensor state machines  1332 , and button press events from button  1340 . 
     Safety processor  1330  can be similar to safety processor  230  of  FIG. 2 . Safety processor  1330  can operate sensor state machines  1332 , alarm thresholds  1333 , trigger module  1336 , and sensor log  1338 . Safety processor  1330  can control operation of LEDs  1342  and alarm  1344 . Safety processor  1330  can receive data values acquired by sensors  1322 - 1327  and button  1340 . All or a portion of acquired sensor data can be provided to sensor state machines  1332 . For example, as illustrated in  FIG. 13 , smoke, CO, and heat sensor data is shown being directly provided to sensor state machines  1332 . Sensor log  1338  can store chunks of acquired data that can be provided to system processor  1302  on a periodic basis or in response to an event such as a state change in one of sensor state machines  1332  or a trigger event detected by trigger module  1336 . In addition, in some embodiments, even though the sensor data may be stored in sensor log  1338 , it can also be provided directly to system processor  1302 , as shown in  FIG. 13 . 
     Alarm thresholds  1333  can store the alarming thresholds in a memory (e.g., Flash memory) that is accessible by sensor state machines  1332 . As discussed above, sensor state machines  1332  can compare monitored sensor data values against alarm thresholds  1333  that may be stored within safety processor  1330  to determine whether a hazard event exists, and upon determining that the hazard event exists, may cause the alarm to sound. Each sensor (e.g., smoke sensor, CO sensor, and heat sensor) may have one or more alarm thresholds. When multiple alarm thresholds are available for a sensor, safety processor  1330  may initially select a default alarm threshold, but responsive to an instruction received from system processor  1302  (e.g., from Alarm/Pre-Alarm Threshold Setting Module  1312 ), it can select one of the multiple alarm thresholds as the alarm threshold for that sensor. Safety processor  1330  may automatically revert back to the default alarm threshold if certain conditions are not met (e.g., a predetermined period of time elapses in which an alarm setting threshold instruction is not received from system processor  1302 ). 
     Safety processor  1330  and/or system processor  1302  can monitor button  1340  for button press events. Button  1340  can be an externally accessible button that can be depressed by a user. For example, a user may press button  1340  to test the alarming function or to hush an alarm. Safety processor  1330  can control the operation of alarm  1344  and LEDs  1342 . Processor  1330  can provide alarm information to alarm/speaker coordination module  1306  so that module  1306  can coordinate speaker voice notification with alarm sounds. In some embodiments, safety processor  1330  is the only processor that controls alarm  1344 . Safety processor  1330  can also receive inputs from system processor  1302  such as hush events from hush module  1307 , trigger band boundary adjustment instructions from trigger adjustment module  1310 , and change threshold instructions from alarm/pre-alarm threshold setting module  1312 . 
     As shown, hazard detection system  1300  may use a bifurcated processor arrangement to execute the multi-criteria state machines to control the alarming and pre-alarming states, according to various embodiments. The system state machines can be executed by system processor  1302  and the sensor state machines can be executed by safety processor  1330 . As shown, sensor state machines  1332  may reside within safety processor  1330 . This shows that safety processor  1330  can operate sensor state machines such as smoke sensor state machine  400 , CO sensor state machine  500 , and heat sensor state machine  600 , as discussed above. Thus, the functionality of the sensor state machines (as discussed above) are embodied and executed by safety processor  1330 . As also shown, system state machines  1304  may reside within system processor  1302 . This shows that system processor  1302  can operate system state machines such as smoke system state machine  700  and CO system state machine  800 , as discussed above. Thus, the functionality of the system state machines (as discussed above) are embodied and executed by system processor  1302 . Moreover, modules  1305 ,  1306 , and  1307  can correspond to system state machine module  1000  of  FIG. 10 , alarm/speaker coordination module  1200  of  FIG. 12 , and hush module  1100  of  FIG. 11 , respectively. 
     In the bifurcated approach, safety processor  1330  can serve as the “brain stem” of hazard detection system  1300  and system processor  1302  can serve as the “frontal cortex.” In human terms, even when a person goes to sleep (i.e., the frontal cortex is sleeping) the brain stem maintains basic life functions such as breathing and heart beating. Comparatively speaking, safety processor  1330  is always awake and operating; it is constantly monitoring one or more of sensors  1322 - 1327 , even if system processor  1302  is asleep or non-functioning, and managing the sensor state machines of hazard detection system  1300 . When the person is awake, the frontal cortex is used to processes higher order functions such as thinking and speaking. Comparatively speaking, system processor  1302  performs higher order functions implemented by system state machines  1304 , alarm/speaker coordination module  1306 , hush module  1307 , trigger adjustment module  1310 , and alarm/pre-alarm threshold setting module  1312 . In some embodiments, safety processor  1330  can operate autonomously and independently of system processor  1302 . Thus, in the event system processor  1302  is not functioning (e.g., due to low power or other cause), safety processor  1330  can still perform its hazard detection and alarming functionality. 
     The bifurcated processor arrangement may further enable hazard detection system  1300  to minimize power consumption by enabling the relatively high power consuming system processor  1302  to transition between sleep and non-sleep states while the relatively low power consuming safety processor  1330  is maintained in a non-sleep state. To save power, system processor  1302  can be kept in the sleep state until one of any number of suitable events occurs that wakes up system processor  1302 . Sleep/wake module  1314  can control the sleep and non-sleep states of system processor  1302 . Safety processor  1330  can instruct sleep/wake module  1314  to wake system processor  1302  in response to a trigger event (e.g., as detected by trigger module  1336 ) or a state change in sensor state machines  1332 . Trigger events can occur when a data value associated with a sensor moves out of a trigger band associated with that sensor. A trigger band can define upper and lower boundaries of data values for each sensor and are stored with safety processor  1330  in trigger module  1336 . See, for example,  FIG. 14A , which shows timing diagram  1410  of sensor data values changing over time, and trigger band  1412 . The sensor data values can be acquired from a particular sensor (e.g., a smoke sensor). Trigger band  1412  has lower boundary (LB) at position 0 and upper boundary (UB) at position 1. Trigger module  1336  can monitor sensor data values and compare them against the boundaries set for that particular sensor&#39;s trigger band. Thus, when a sensor data value moves out of band, trigger module  1336  registers this as a trigger event (shown in  FIG. 14A  when the sensor data value crosses over the upper boundary) and notifies system processor  1302  of the trigger event (e.g., by sending a signal to sleep/wake module  1314 ). 
     The boundaries of the trigger band can be adjusted by system processor  1302 , when it is awake, based on an operational state of hazard detection system  1300 . The operational state can include the states of each of the system and sensor state machines, sensor data values, and other factors. System processor  1302  may adjust the boundaries of one or more trigger bands to align with one or more system state machine states before transitioning back to sleep. Thus, by adjusting the boundaries of one or more trigger bands, system processor  1302  effectively communicates “wake me” instructions to safety processor  1330 . 
     The “wake me” instructions can be generated by trigger adjustment module  1310  and transmitted to trigger module  1336 , as shown in  FIG. 13 . The “wake me” instructions can cause module  1336  to adjust a boundary of one or more trigger bands. For example, as a result of receiving instructions to adjust the boundary of one or more bands, trigger module  1336  may change the trigger band as illustrated in  FIGS. 14B and 14C .  FIGS. 14B and 14C  show timing diagrams  1420  and  1430 , respectively, in which the upper and lower boundaries of trigger bands  1422  and  1432  have changed relative to timing diagram  1410  and with respect to each other. In particular, trigger band  1422  has lower boundary (LB) at position 1 and upper boundary (UB) at position 2. In some embodiments, the upper and lower boundaries can be the same. Trigger band  1432  has LB at position 2 and UB at position 3. 
       FIG. 15  shows a more detailed block diagram of trigger adjustment module  1310  according to an embodiment. Trigger adjustment module  1310  can include trigger adjustment engine  1550  that can adjust boundaries of one or more trigger bands based on any suitable number of different factors, including, for example, sensor data obtained from sensors  1321 - 1327 , logged sensor data  1338 , system state machines  1304 , alarm/pre-alarm threshold setting module  1312 , and sensor state machines  1332 . Any boundary adjustments  1565  are updated in trigger band boundary table  1560  and transmitted to trigger module  1336  in safety processor  1330 . As shown, trigger band boundary table  1560  can maintain the upper and lower trigger band boundaries for several different sensors. In some embodiments, a separate trigger band can be maintained for each one of sensors  1321 - 1327 . 
     By maintaining a trigger band for one or more sensors, and transmitting the trigger band boundaries to trigger module  1336 , system processor  1302  is able to inform safety processor  1330  of when it wants to be woken up. Since system processor  1302  is preferably maintained in a sleep state, the trigger bands provide a mechanism that enables system processor  1302  to remain asleep until a sensor data value moves out of band. Once a sensor value moves out of band, the trigger event causes system processor  1302  to wake up and evaluate its operational state, and as a result of that evaluation, a state change transition may occur and/or a trigger band adjustment can be made. 
     In some embodiments, there may be a correlation between the trigger band boundaries of one or more sensors and the conditions defining state transitions (e.g., conditions in  FIGS. 4B, 5B, 6B, 7B , and/or  8 B) set forth in the multi-criteria state machines. In other embodiments, the correlation between the trigger band boundaries of one or more sensors can be based on the conditions defining system state machine transitions (e.g., such as those defined in  FIGS. 7B and 8B ). For example, assume that smoke system state machine  700  is in its monitor state, the trigger band for the smoke sensor is defined by trigger band  1422  (of  FIG. 14B ), and system processor  1302  is asleep. When the sensor data value crosses the UB of trigger band  1422 , trigger module  1336  registers this as a trigger event and causes system processor  1302  to wake up. Once awake, system processor  1302  can evaluate its operational state (e.g., the sensor data, time data, and other suitable data). Now, further assume that the smoke data value has risen to a value greater than a first pre-alarm threshold. In response to this determination, smoke system state machine  700  may transition to the first pre-alarm state. After having transitioned to the first pre-alarm state, trigger adjustment module  1310  may adjust the boundaries of the smoke sensor&#39;s trigger band to have the boundaries of trigger band  1432  (of  FIG. 14C ). The adjustment  1565  to the boundaries are transmitted to trigger module  1336  and system processor  1302  goes back to sleep, and can remain asleep until a boundary of trigger band  1422  is crossed or some other event occurs that causes system processor  1302  to wake up. 
       FIG. 16  shows an illustrative flowchart of steps that may be taken when a system processor transitions to a non-sleep state. A dashed line is shown to illustratively demarcate which processor (i.e., the safety processor or system processor) is executing the step. Either one of trigger event  1602  and state change event  1604  can be registered as a wake event at step  1610 . In response to wake event at step  1610 , the system processor is woken up from a sleep state, at step  1612 . At step  1614 , the operational state of the hazard detection system is evaluated. The evaluation of the operational state can encompass many aspects of the hazard detection system. In some embodiments, this evaluation may encompass all system processor executed operations such as multi-criteria state machines (e.g., sensor state machines  400 ,  500 , and  600  and system state machines  700  and  800 ), alarm threshold setting module (e.g., alarm/pre-alarm threshold setting module  900 ), and trigger adjustment module (e.g., trigger adjustment module  1310 ). In addition, the evaluation may take into account sensor data, which can be logged sensor data, current sensor data, or both. After step  1614 , the flowchart proceeds to steps  1615  and  1617 . 
     At step  1615 , a determination is made whether a trigger band adjustment is needed. If the determination is YES, boundary adjustments for one or more trigger bands are made (at step  1616 ) and transmitted to the safety processor (at step  1620 ). If the determination is NO, the system processor is put back to sleep (at step  1622 ). At step  1617 , a determination is made whether an alarm threshold adjustment is needed. If the determination is YES, change alarm threshold instructions are made (at step  1618 ) and transmitted to the safety processor (at step  1620 ). If the determination is NO, the system processor is put back to sleep (at step  1622 ). In addition, after steps  1616  and  1618  are complete, the system processor is put back to sleep (at step  1622 ). 
       FIG. 17  shows an illustrative flowchart of steps for implementing multi-criteria alarming and pre-alarming functionality according to an embodiment. Beginning at step  1710 , data values can be acquired from several sensors, which are included in a hazard detection system. For example, data values can be obtained from sensors  1321 - 1327  of  FIG. 13 . At step  1720 , a plurality of states can be managed based on the acquired data values and based on at least one condition parameter. The plurality of states can include at least one alarming state and at least one pre-alarming state. At step  1730 , when the hazard detection system is in the at least one alarming state, an alarm is activated. At step  1740 , when the hazard detection system is in the at least one pre-alarming state, a message is played back through the speaker. 
       FIG. 18  shows an illustrative flowchart of steps for sharing states among multi-criteria machines according to an embodiment. At step  1810 , a sensor state machine can be executed to manage transitions to any one of a plurality of sensor states, wherein sensor state machine transitions may be based on data acquired by at least one sensor, a first set of condition parameters, and hush events. At step  1820 , a system state machine can be executed to manage transitions to any one of a plurality of system states. The system states can include the sensor states and the system state machine transitions may be based on the data acquired by the at least one sensor, the hush events, and a second set of condition parameters, and sensor states shared between the sensor state machine and the system state machine may be controlled by the sensor state machine. 
       FIG. 19  shows an illustrative flowchart of steps for managing trigger bands according to an embodiment. At step  1910 , a safety processor can monitor for a wake event signal. The wake event signal can include a trigger event signal that is transmitted by the safety processor to a system processor when a data value associated with a sensor moves out of a trigger band associated with that sensor. At step  1920 , the system processor may transition from a sleep state to a non-sleep state in response to a monitored wake event signal. At step  1930 , an operational state of the hazard detection system may be evaluated. At step  1940 , a boundary of at least one trigger band may be selectively adjusted based on the evaluation of the operational state. At step  1950 , the selective boundary adjustment may be transmitted to the safety processor to update at least one boundary of the at least one trigger band. Then, at step  1960 , the system processor can transition from the non-sleep state to the sleep state after system processor operations are complete. 
       FIG. 20  shows an illustrative flowchart of steps for implementing a smoke sensor state machine according to an embodiment. Beginning at step  2010 , smoke data values may be received from a smoke sensor. At step  2020 , a hush event command can be received. Receipt of the hush event command can be based on a user interaction such as a gesture interaction or a press of a button. At step  2030 , the smoke sensor state machine can transition among a plurality of states based on the received smoke data values, the received hush event command, and a plurality of transition conditions. The plurality of transition conditions can include a plurality of different smoke thresholds, and, for each state transition, a comparison may be made between the smoke data values and one of the different smoke thresholds. 
       FIG. 21  shows an illustrative flowchart of steps for implementing a CO sensor state machine according to an embodiment. Beginning at step  2110 , carbon monoxide (“CO”) data values may be received from a carbon monoxide sensor. At step  2120 , the CO sensor state machine can manage several CO time buckets by selectively adding and subtracting time units to one or more of the buckets based on the received CO data values. Each CO time bucket may include a time unit quantity, and a time unit may be added to one or more of the CO time buckets if the CO data value is equal to or greater than an implementation level associated with those one or more CO time buckets and a time unit may be subtracted from one or more of the CO time buckets if the CO data value is less than a fraction of the implementation level associated with those one or more CO time buckets. At step  2130 , the CO sensor state machine can transition among a plurality of states based on the received CO data values and a plurality of transition conditions, wherein the plurality of transition conditions may include an alarm time threshold for each CO time bucket. 
       FIG. 22  shows an illustrative flowchart of steps for implementing a heat sensor state machine according to an embodiment. Beginning at step  2210 , raw heat data values are received from a heat sensor. At step  2220 , the heat sensor state machine can use an acceleration function to convert the raw heat data values into scaled heat data values. A hush event command can be received at step  2230 . At step  2240 , the heat sensor state machine can transition among a plurality of states based on the scaled heat data values, the received hush event command, and a plurality of transition conditions. The transition conditions can include several different heat thresholds, wherein, for each state transition, the scaled data values are compared to one of the different heat thresholds. 
       FIG. 23  shows an illustrative flowchart of steps for adjusting alarm thresholds according to an embodiment. Beginning at step  2310 , sensor data values from at least two sensors are received. At step  2320 , the adjustable alarm threshold is selected form one of a plurality of different thresholds by applying selection criteria to the received sensor data values. Then, at step  2330 , the selected adjustable alarm threshold is used in a transition condition of a state machine. 
     It is to be understood that the steps shown in the flowcharts of one or more of  FIGS. 16-23  are merely illustrative and that existing steps may be modified or omitted, additional steps may be added, and the order of certain steps may be altered. 
     The smoke sensor used by various embodiments described herein may be calibrated at regular intervals to ensure accurate smoke sensor data are obtained. For example, the smoke sensor may be calibrated by taking readings of a dark (unlit) chamber and subtracting it from readings taken from bright (lit) chamber. This differential reading can be defined by:
 
 R =SMOKE light −SMOKE dark  
 
where SMOKE light  is the reading of the bright chamber and SMOKE dark  is the reading of the dark chamber. If each “R” value is below Smoke_T_Base, it is added to a filter, which is used to determine a clear air offset—the value that is used to calibrate the smoke sensor. The filter can be defined by:
 
 F   n =(0.0029* R )+(0.9971* F   n-1 )
 
where n can define a pre-determined number of samples. In some embodiments, the filter can include four days of R values. Thus, Fn can maintain a running average of filtered R values. The clear air offset can be defined by:
 
 C   cur   =C   last *( R−F   n )
 
where C cur  is the current value of the clear air offset, C last  is the previous value of the clear air offset, R is the current differential reading, and F n  is the filtered average of R values. C cur  can be used to calibrate the smoke sensor. In some embodiments, C cur  can be stored in non-volatile memory every predetermined number of days. Out of the box, the initial C cur  may be set to the value defined by the manufacturer of the smoke sensor, which may be stored in the non-volatile memory.
 
     In some embodiments, if C cur  exceeds a predetermined number, an error signal may be triggered to indicate that the smoke sensor has drifted past a maximum sensor drift threshold. In addition, separate low pass filters of SMOKE light  and SMOKE dark  may be maintained to monitor for smoke sensor performance issues. An error signal may be triggered if the average data value associated with SMOKE dark  exceeds a predetermined threshold. An error signal may be triggered if the average R value is less than a predetermined threshold, where the average R value is derived from the low pass filters of SMOKE light  and SMOKE dark . 
     The CO sensor may also be calibrated. The CO sensor manufacturer&#39;s gain setting may be programmed into non-volatile memory. In addition, locally measured clean air offset readings may be stored in the non-volatile memory. The hazard detection system can compensate for temperature changes by applying a gain correction based on temperature sensor data obtained from one or more temperature sensors. 
     The CO sensor may have a useful life of approximately seven years. The hazard detection system according to various embodiments may be able to keep track of how long the CO sensor has been in use. This can be accomplished, for example, by writing elapsed time data to non-volatile memory. When the elapsed time data exceeds an end-of-life threshold for the CO sensor, an alarm may be sounded to indicate that the CO sensor is no longer functional. 
     In some embodiments, it may be desirable to filter readings obtained from one or more different sensors. Such filters may improve accuracy of data interpretation by filtering out readings that may distort data interpretation or cause false positives. For example, smoke sensor readings may be filtered by a smoke alarm filter to mitigate presence of steam. In addition, other filters may be used to speed up performance of a sensor that is relatively slow in obtaining sensor readings. For example, an accelerated humidity filter may be used to provide accelerated humidity readings for a humidity sensor. 
     Reference is now made to  FIGS. 24-31  to discuss a smoke alarm filter according to an embodiment.  FIG. 24  shows an illustrative block diagram of smoke alarm filter  2400  according to an embodiment.  FIGS. 25 and 26  show illustrative timing diagrams of raw smoke sensor data.  FIG. 27  shows a graphical representation of a weighting function according to an embodiment.  FIGS. 28 and 29  show illustrative waveforms of filtered output values and probability values according to an embodiment.  FIG. 30  shows an illustrative schematic of a no hush filter according to an embodiment.  FIG. 31A  shows an illustrative smoke sensor state machine, according to some embodiments.  FIG. 31B  shows a set of conditions that can be used by state machine  3100  when operating in a hazard detection system 
     Smoke alarm filter  2400  may be an infinite impulse response (IIR) filter that can transform raw smoke sensor values into probabilities, with higher numbers representing a greater degree of confidence that there is a fire, and lower numbers representing a lesser degree of confidence that there is a fire. The parameters used in filter  2400  may be selected to guarantee bounded-input, bounded output (BIBO) stability. 
     Smoke alarm filter  2400  may be operative to produce a filter output value that represents a probability of detected smoke that is weighted over time. The filter is designed to calculate a probability value for each raw sensor reading and maintain a time weighted average of successively calculated probability values as its filter output value. The probability value can account for detection of non-smoke obscuration matter such as steam. As a result, the filter output value can be used independent of any humidity sensor readings obtained by a humidity sensor. This may permit a smoke alarm state machine to use an alarm threshold, regardless of humidity values being detected by a humidity sensor, for comparison with the filter output value to determine whether an alarm should be activated. That is, because the filter output value effectively accounts for presence of humidity and/or water vapor being detected by the smoke sensor, the smoke alarm state machine can selectively activate the alarm independent of humidity sensor readings. More particularly, because humidity can be accounted for in the filter output value, the alarm threshold may not change based on humidity sensor readings. It will be understood, however, that sensitivity of the alarm threshold may change based on sensor readings from other sensors such as, for example, a heat sensor. 
     A further understanding of how smoke alarm filter  2400  is able to account for the presence of humidity, steam, and/or water vapor by only using readings from the smoke sensor is provided by examining the timing diagrams of  FIGS. 25 and 26 .  FIG. 25  shows an illustrative timing diagram of smoke sensor readings obtained in the presence of smoke. As shown, waveform  2502  has a relatively smooth profile, where changes among peaks and valleys are characterized by relatively slow rates of change and relatively small differentials in magnitude. These characteristics are markedly different from waveform  2602 , which illustrates a timing diagram of sensor readings obtained in the presence of water vapor. In contrast to waveform  2502 , waveform  2602  has a relatively jagged profile, where changes among peaks and valleys are characterized by relatively high rates of change and relatively large differentials in magnitude. The difference between the two waveforms may be attributed to variance in the size of smoke particles and water vapor particles. Smoke particles may be more uniform in size, whereas water vapor particles may vary greatly in size. The size variance in water vapor may cause the smoke sensor data values to have relatively large swings in magnitude in successive samples. The smoke alarm filter can detect these large magnitude swings and incorporate them into the probability calculation. 
     Referring back to  FIG. 24 , smoke alarm filter can be separated into a probability calculation portion and time weighted calculation portion. The probability portion can calculate a probability value for each received raw smoke reading. A raw smoke reading (shown in box  2402 ) can be received from a smoke sensor (not shown) at regular intervals. The current raw smoke reading (n 0 ) can be provided to delay module  2404 , weighting function module  2406 , and probability acceleration module  2408 . Delay module  2404  may buffer the current raw smoke reading so that it can provide a previous raw smoke reading (n 1 ) to acceleration module  2408 . Weighting function module  2406  may apply a weighting function to the current raw smoke reading to provide a weighted value W(x). In one embodiment, the weighting function may assign a first value, a second value, or a scaled value to the current raw smoke reading depending on the magnitude of the smoke reading. For example, referring to illustrative weighting function, W(x) below: 
               W   ⁡     (   x   )       =           First   ⁢           ⁢   Value           :     x   ∈     [     0   ,   a     ]                   Scaled   ⁢           ⁢   Value           :     x   ∈     [     a   ,   b     ]                   Second   ⁢           ⁢   Value           :     x   ∈     [     b   ,   ∞     ]                     
W(x) may be assigned the first value when the magnitude of smoke reading falls between 0 and a, the scaled value when the smoke reading falls between a and b, and the second value when the smoke reading is above b. A graphical representation of the weighting function as illustrated in  FIG. 27 . The first value may be a negative number that is associated with no or relatively low magnitude smoke readings (e.g., smoke and/or other particles are considered not be present). Thus, any relatively low magnitude smoke reading is weighted with the first value. The scaled value may be a number that falls between the first value and the second value, and its value depends on the magnitude of the smoke reading. The scaled value may be associated with smoke readings that fall within a medium range of magnitudes (e.g., smoke and/or particles are detected, but do not exhibit magnitude readings associated with unquestionable fire conditions). For example, the scaled value may be derived from an equation that adds a negative number to the product of a scalar constant and the smoke reading. The second value may be a positive number that is associated with relatively high magnitude smoke readings (e.g., smoke is detected because a fire is present). Thus, any relatively high magnitude smoke reading is weighted with the second value.
 
     The weighted value may represent a classification of the current raw sensor reading without taking a previous sample reading into account. Probability accelerator module  2408 , however, may take the current sensor reading (n 0 ) and one or more of the previous sensor readings (e.g., n 1 , n 2 , etc.) into account and is operative to selectively reduce the weighted value (provided by weighting function module  2406 ) by accelerator value, β. Accelerator value, β, can represent the probability that the current smoke sensor reading is based on non-smoke particles such as a water vapor. Module  2406  may yield negative magnitudes for the accelerator value, β, when there exist a probability that the current smoke sensor reading is based on non-smoke particles and may yield a zero magnitude for accelerator value, β when there is no probability that the current smoke sensor reading is based on non-smoke particles. Accelerator value, β, can be derived using any suitable criteria. For example, in one embodiment, accelerator module  2408  may use from the following criteria: 
               B   ⁡     (       n   ⁢           ⁢   0     ,     n   ⁢           ⁢   1       )       =             (       n   ⁢           ⁢   0     -     n   ⁢           ⁢   1       )     ×   AlarmGain                 :     ⁢   n   ⁢           ⁢   0     -     n   ⁢           ⁢   1       ∈     [       -   ∞     ,   0     ]               0               :     ⁢   n   ⁢           ⁢   0     -     n   ⁢           ⁢   1       ∈     [     0   ,   ∞     ]                   
When the difference between the current (n o ) and previous (n 1 ) smoke readings is negative, the accelerator value, β, may be proportional to the product of that difference and a constant (shown as AlarmGain). A negative difference indicates that the previous smoke reading had a higher magnitude. As discussed above in connection with  FIG. 26 , this negative difference may indicate the presence of a non-smoke particle. Because the accelerator value is proportional to the constant, larger magnitude differences result in proportionately larger magnitude accelerator values. When the difference between the current and previous smoke readings is positive, a value of zero is returned for negative accelerator value, β.
 
     It is understood that in some embodiments, such as the one discussed above, that accelerator module  2408  only penalizes a negative change in the smoke reading. In other embodiments, module  2408  may penalize both positive and negative changes in the smoke reading. This alternative embodiment may subtract the absolute value of the difference between consecutive readings multiplied by a gain to produce the acceleration values. In yet another embodiment, module  2408  may only penalize positive changes in successive readings. 
     It is further understood that accelerator module  2408  may analyzes any variation in the signal, and not just negative changes, in order to produce an appropriate accelerator value, β. For example, such a module may be configured to analyze the first, second, or more derivatives of the signal to search for changes that are indicative of humidity. As a specific example, such a module may evaluate three successive samples and determine the second derivative thereof. If the second derivative indicates a directional change in slope, this may represent a higher probability of humidity than the non-occurrence of the directional change in slope. The module may provide an accelerator value, β, that is commensurate with the slope change. Alternatively, the module may examine the samples for a particular signal shape. Stronger pattern matches may result in a commensurate accelerator value β. 
     The weighted value, W, and the accelerator value, β are added together at adder  2410  to produce a probability value, S. As mentioned above, the probability value, S, represents confidence that there is a fire. Thus, when no steam or other non-smoke particles are causing negative accelerator module  2408  to produce negative accelerator value of zero, the probability value can indicate with a higher degree of probability that a fire exists. In other words, the weighted value is not reduced by the acceleration value. When steam or other non-smoke particles are causing accelerator module  2408  to produce accelerator values, the probability value can indicate with a lesser degree of probability that a fire exists. In other words, the weighted value is reduced by the acceleration value. 
     The probability value, S, may be provided to the time-weight calculating portion of filter  2400  to generate the filter output. The time-weight calculating portion can include first constant multiplier  2412 , adder  2414 , second constant multiplier  2416 , and filter output  2418 . The filter output, Filter[n o ], may be calculated by the following equation:
 
Filter [ n   0 ] =S ×α+Filter[ n   1 ]×(1−α)
 
where Filter[n o ] is the result provided by filter  2400 , S is the probability value, α is a constant, and Filter[n 1 ] is the previous filter output. Because filter  2400  includes IIR characteristic, the filter output value will exponentially approach the input value of the filter. As a result, if the input is far from the filter output value, filter  2400  may take a relatively big step towards the input. If the filter output value if close to the input, filter  2400  may take a relatively small step. This is illustrated in  FIG. 28 , where the filter output rises quickly at first, but slows its rate of change when it reaches its output boundary. The output boundary is the maximum output provided by weighting function  2406 . The probability values (as provided by weighting function  2400 ) for each sample are graphically illustrated as shown. The filter output may continue to rise and eventually cross the alarm threshold, so long as a sufficient number of positive probability values are produced. When the filter output value equals or exceeds the alarm threshold, a state machine may activate the alarm. Also shown in  FIG. 29  is a holding threshold, which may define an alarm activation exit point. Thus, when the filter output value drops below the holding threshold, a state machine may cease activation of an alarm. The occurrence of negative probabilities values, however, may cause the filter output values to decline rapidly. For example,  FIG. 29  illustrates a scenario where the filter output values rapidly increase in response to positive probability values, but rapidly decreases in response to negative probability values. In particular,  FIG. 29  illustrate how the filter output value rapidly approaches, but does not cross the alarm threshold, but as soon as negative probability value is calculated, the filter output value decreases, thereby preventing activation of the alarm.
 
     The values of α, β, and alarm threshold may be chosen based on an optimization of data collected from several samples sets. The data can be derived from controlled environment scenarios and from hazard detection units in the field. The value of the holding threshold may be set relatively far below the alarm threshold to provide hysteresis, thereby preventing the hazard detection system from rapidly alternating between alarming and not alarming. 
     It is understood that each of the components of smoke alarm filter  2400  may independently improve the performance of filter  2400 , and that omission of any one of modules  2406  and  2408 , and the time-weighting portion would render filter  2400  unusable. For example, in one embodiment, filter  2400  may include module  2406  and  2408 , but not the time-weighting portion. As another example, filter  2400  may include module  2408  and the time-weighting portion, but not module  2406 . 
       FIG. 30  shows no_hush filter  3000 , which is operative to produce no_hush filter values based on raw smoke values. Filter  3000  may embody characteristics of a IIR filter. These no_hush filter values may be used by a smoke sensor state machine to determine an appropriate state of operation. As shown, No_Hush filter  3000  can process raw smoke readings (shown in box  3002 ) to generate no-hush filter output  3014 . The smoke sensor state machine may use the no_hush filter output when operating in a hushed state or when the hazard detection system is operating in a pre-alarm state. Filter  3000  can include first minimization module  3004 , first multiplier constant  3006 , adder  3008 , second minimization module  3010 , second multiplier constant  3012 , and filter output  3014 . First minimization function  3004  may be operative to yield the minimum of the received raw smoke reading or a first constant value labeled as input max . In effect, first minimization function  3004  imposes a ceiling on the raw smoke values being processed by filter  3000 . This can effectively reduce the rate at which no_hush filter output values can climb. Second minimization function  3010  imposes a ceiling on the filter output value by selecting the minimum of the value received from adder  3008  or a second constant value labeled as ouput max . The ceiling may be imposed to enable one or more system states to clear relatively quickly when smoke levels drop. 
     Filter  3000  may produce a filter output, No_Hush_Filter[n o ] that can be represented by the following equation: 
               No_Hush   ⁢     _Filter   ⁡     [     n   0     ]         =     min   (       output   max     ,         min   ⁡     (       input   max     ,     Smoke   ⁡     [     n   0     ]         )       ×   α     +     No_Hush   ⁢     _Filter   ⁡     [     n   1     ]       ×     (     1   -   α     )                   
wherein α is a constant, smoke[n o ] is the currently sampled raw smoke value, output max  is second constant value, input max  is a first constant value, and No_Hush_Filter[n 1 ] is the previous filter output value. The value of the constant, α, may be selected such that successive raw smoke readings have less impact of the filter output value.
 
     The filter outputs of smoke alarm filter  2400  and no_hush filter  3000  may be used by a smoke sensor state machine, such as smoke sensor state machine  3100  of  FIG. 31A , to determine which state to transition to. State machine  3100  can transition between states  3110 ,  3120 ,  3130 , and  3140  based on one or more conditions. As shown, seven (7) different state transitions can exist in state machine  3100 . State machine  3100  is similar in many respects to state machine  400  of  FIG. 4A , but with a few differences. The differences include state machine  3100 &#39;s use of filter outputs of smoke alarm filter  2400  and no_hush filter  3000  and the conditions for determining state transitions. Whereas state machine  400  may make comparisons between raw sensor values and different multi-criteria controlled thresholds, state machine  3100  may make comparisons between the outputs of the smoke alarm filter and the no_hush filter to filter specific thresholds. That is, the smoke alarm filter outputs may be compared to a first non-changing threshold, and the non_hush filter outputs may be compared to a second non-changing threshold. Thus, use of the filters can simplify operation of the hazard detection system by eliminating the multi-criteria dependency of selecting an appropriate threshold. In contrast, the system can evaluate its respective filter/threshold comparisons to make transition decisions. 
       FIG. 31B  shows a set of conditions that can be used by state machine  3100  when operating in a hazard detection system. In particular,  FIG. 31B  includes several columns of information labeled as Transition, From, To, Condition Set #1, Condition Set #2, and Condition Variables. Each row corresponds to one of the transitions of  FIG. 31B , identifies the “From” state and the “To” state, and one or more conditions that may need to be met in order for the transition to take place, and the condition variables, if any. Two condition sets, condition set #1 and condition set #2, are shown to illustrate that different conditions can be imposed on state machine  400 . Condition set #1 may apply to a first geographic region such as the United States and condition set #2 may apply to a second geographic region such as Europe. Referring collectively to  FIGS. 31A and 31B , each transition is discussed, primarily in reference with condition set #1. 
     In transition  1 , state machine  3100  transitions from idle state  3110  to monitor state  3120  when the monitored smoke data value (referred to herein as “Smoke”) is greater than a relatively low smoke alarm threshold value (referred to herein as Smoke_T_Base). The monitored smoke data value can represent the raw sensor value and can be measured in terms of obscuration percentage or dBm. More particularly, the monitored smoke data value can be a measure of obscuration percentage per meter (e.g., obs %/meter), obscuration per foot (e.g., obs %/foot) or dBm per meter (e.g., obs %/meter). Smoke_T_Base can be hard-coded into the safety processor as one of the threshold values. 
     In monitor state  3120 , the hazard detection system may poll several of its sensors at a faster rate than it was in idle state  3110 . For example, instead of polling the smoke sensor (e.g., smoke sensor  1324 ) every 10 seconds, it may poll the smoke sensor every 2 seconds. Faster polling can enable the hazard detection system to acquire data at a faster rate so that it can more quickly make an informed decision on whether to sound the alarm. 
     In transition  2 , state machine  3100  may select between two conditions to determine whether to transition from monitor state  3120  to alarm state  3130 . Selection of the appropriate condition may depend on whether the hazard detection system is operating in a pre-alarm hushed state (e.g., pre-alarm hushed state  748  of  FIG. 7A ). For example, when the hazard detection device provides a heads up warning that the smoke alarm is about to turn ON (e.g., when the system is in pre-alarm state  740 ), and a user takes action to pre-emptively hush the potentially imminent alarm, state machine  3100  may evaluate a different set of criteria than it would otherwise evaluate if there was no hush event. The two different criteria may be referred to as alarm criteria, which uses the alarm filter (e.g., filter  2400 ) and no-hush criteria, which uses the no_hush filter (e.g., filter  3000 ). This selective criteria evaluation can enable smoke sensor state machine  3100  to defer activating the alarm when smoke levels are present that would ordinarily trigger the alarm using the alarm criteria. The no-hush criteria does not preclude activation of the alarm in the presence of smoke, as the alarm can be activated if the smoke levels rise above a certain threshold, which is referred to herein as a No_Hush_Threshold. 
     When the hazard detection system is NOT in a hushed state, state machine  3100  may check whether an output of the Alarm_Filter (e.g., the filter output value of filter  2400 ) is greater than or equal to the smoke alarm threshold, Alarm Threshold. As mentioned above, in one embodiment, Alarm_Threshold may be fixed and does not change in response to readings obtained from other sensors such as a humidity sensor or heat sensor. In another embodiment, Alarm_Threshold may be selected from at least two different settings, where selection of the appropriate threshold is based on the readings obtained from at least one sensor other than the smoke sensor (e.g., such as a heat sensor). 
     When the hazard detection system is in a hushed state (e.g., pre-alarm hushed state  748  of  FIG. 7B ), state machine  3100  may check whether the output of a No_Hush_Filter (e.g., no_hush filter  3000 ) is greater than or equal to a No_Hush_Threshold. The No_Hush_Threshold may be fixed and does not change in response to readings obtained from other sensors. Because the alarm filter and the no-hush filters are configured differently, there may be no apples to apples comparison of the thresholds to which the output values of each threshold are compared. In other words, the filter and any thresholds used for the alarm criteria are used independent of the filter and any thresholds used for the no-hush criteria. 
     In transition  3 , and according to condition set #1, state machine  3100  transitions from alarm state  3130  to alarm hush state  3140  when a hush event is detected and the No_Hush_Filter is less than the No_Hush_Threshold. The hush event may be a gesture recognized hush event processed by hush module  1307  (discussed above in connection with  FIGS. 13 and 15 ) or a button press event of button  1340  (discussed above in connection with  FIGS. 13 and 15 ). If No_Hush_Filter is greater than or equal to the No_Hush_Threshold, then state machine  3100  may remain in alarm state  3130 . According to condition set #2, only a hush event need be detected in order to effect transition  3 . Thus, even if No_Hush_Filter is greater than or equal to the No_Hush_Threshold, the detected hush event is sufficient to silence the alarm. 
     In transition  4 , and according to condition set #1, state machine  3100  can transition from alarm hush state  3140  to alarm state  3130  when Alarm_Filter is greater than or equal to Holding_Threshold and when the time elapsed since entering state  3140  (hereinafter T_Hush) is greater than or equal to a maximum allowable hush time period (hereinafter Max_Hush_Time). As mentioned above, the Holding_Threshold is set lower than the Alarm_Threshold, and it sets a release point where state machine  3100  can transition away from alarm state  3130  to monitor state  3120 . Thus, even if the Alarm_Filter falls below the Alarm_Threshold, but still equals or exceeds the Holding_Threshold, and T_Hush is equal to or greater than Max_Hush_Time, state machine  3100  transitions to alarm state  3130 . Also, according to condition 1, state machine  3100  can transition from alarm hush state  3140  to alarm state  3130  when No_Hush_Filter is equal to or exceeds the No_Hush_Threshold. 
     According to condition set #2, state machine  3100  is essentially the same as condition set #1, but forces the alarm to be silenced for a minimum allowable hush time period (herein after Min_Hush_Time). Only after T_Hush exceeds (or equals) Min_Hush_Time can state machine  3100  evaluate the conditions to make a potential state change transition. 
     In transition  5 , state machine  3100  can transition from alarm hush state  3140  to monitor state  3120  when T_Hush is greater than or equal to Min_Hush_Time and Alarm_Filter is less than Holding_Threshold. This covers the condition where the Alarm_Filter values fell below the release point (controlled by Holding_Threshold) after a period of time has elapsed. 
     In transition  6 , state machine  3100  can transition from alarm state  3130  to monitor state  3120  when Alarm_Filters less than the Holding_Threshold. In transition  7 , state machine  3100  can transition from monitor state  3120  to idle state  3110  when Smoke is less than Smoke_T_Base. In some embodiments, state machine  3100  may transition to state  3110  when any two successive Smoke samples are less than Smoke_T_Base. 
       FIG. 32  shows an illustrative accelerated humidity filter  3200  according to an embodiment. Accelerated humidity filter  3200  may be operative to calculate an accelerated humidity value based on raw humidity sensor readings. Filter  3200  may embody characteristics of a IIR filter. The accelerated humidity value may provide another data point that enables a multi-criteria state machine to determine whether to transition to another state. In practice, filter  3200  accelerates the humidity sensor value by calculating the accelerated humidity when it determines that the humidity sensor values are rising. In other words, the accelerated humidity value can help make up for relatively slow responding humidity sensor, and help keep pace with the faster responding smoke sensor. The accelerated humidity value can be calculated based on the following equation:
 
Accelerated Humidity =Humidity[ n ]+Humidity_Gain×(Humidity[ n ]−Humidity Filter )
 
where Humidity[n] is the current raw humidity reading, Humidity_Gain is a gain factor, and Humidity Filter  is the filter output of time weighted filter. In particular, the value of Humidity Filter  can be obtained from the following equation:
 
Humidity Filter =Humidity[ n ]×α+(Humidity Filter ×(1−α))
 
where α is a constant.
 
     The accelerated humidity value may be used as a factor in suppressing or disabling a pre-alarm (e.g., preventing a system state machine from transitioning to pre-alarm state  748 ). For example, in a scenario where shower steam or cooking steam is causing the smoke sensor to report elevated obscuration readings, a multi-criteria system state machine (e.g., a variant of system state machine  700  of  FIG. 7 ) may evaluate several factors to determine whether to allow the system state machine to transition to the pre-alarm state or to suppress that transition. In one embodiment, a state machine that uses accelerated humidity values may be similar to system state machine  700 , but differs by replacing the conditions of transition  2  of  FIG. 7B  with the following conditions. This alternative system state machine may transition from the monitor state to the first pre-alarm state when Smoke is greater than or equal to the Smoke_PA 1 _Threshold and that there is 1) High Heat or, 2) High CO, or 3) not High Humidity. The High Humidity condition can be satisfied if the raw humidity is greater than or equal to a Humidity Threshold or if the accelerated humidity is greater than or equal to an Accelerated Humidity Threshold. The Humidity Threshold is less than the Accelerated Humidity Threshold. The High Heat condition can be satisfied if Heat is greater than or equal to a Heat Threshold. The High CO condition can be satisfied if CO is greater than or equal to a CO Threshold. Thus, even if Smoke readings satisfy a state change transitions, but the qualifying conditions associated with High Humidity, High Heat, and High CO are not met, then the alternative system state machine may not transition to the pre-alarm state. As a specific example, the pre-alarm may be deactivated when No High Heat or No High CO is detected and High Humidity is detected. This may prevent the system from entering into the pre-alarm state when a steam event is being detected. However, if either High Heat or High CO is detected, then the detected event is not classified as a steam event and the system may enter into the pre-alarm state. 
       FIG. 33  shows an illustrative shower steam detection pseudocode according to an embodiment. The results of each comparison may provide a Boolean result that is used by different state machines, as illustrated below in connection with  FIG. 34 . For example, as shown, if Accelerated_Humidity greater than or equal to an ACCELERATED_HUMIDITY_THRESHOLD or Humidity is greater than or equal to a HUMIDITY_THRESHOLD), then a steam humidity (S_Humidity) state is set to TRUE. The accelerated humidity is derived from module  3200  above, and Humidity is the value of the humidity sensor. A steam carbon monoxide (S_Carbonmonoxide) state can be set to TRUE if it is greater than a STEAM_REJECTION_CO_THRESHOLD. A steam smoke derivative (S_Smokederivative) state may be set to TRUE if the difference between a current smoke sample (Smoke[n]) and a previous smoke sample (Smoke[n−1]) is less than a SMOKE_STEAM_SIGNAL_THRESHOLD. In addition, a steam smoke samples state (S_SmokeSamples) may be set to TRUE if 4 consecutive smoke samples exceed the SMOKE_T_MID. Each of these Booleans may be latched until state machine returns to Idle or Standby state. 
       FIG. 34  shows an alternative set of conditions that can be used by state machine  3100  when operating in a hazard detection system. Similar to  FIG. 31B ,  FIG. 34  includes several columns of information labeled as Transition, From, To, Condition Set #1, Condition Set #2, and Condition Variables. Two condition sets, condition set #1 and condition set #2, are shown to illustrate that different conditions can be imposed on state machine  3100 .  FIG. 35  shows an illustrative timing diagram of a smoke sensor state machine responding to smoke signal, according to an embodiment. Referring collectively to  FIGS. 31A, 34, and 35  each transition is discussed, primarily in reference with condition set #1. In the interest of brevity, the various operations performed at each state are not repeated because they have been previously discussed. 
     In transition  1 , state machine  3100  transitions from idle state  3110  to monitor state  3120  when the monitored smoke data value (referred to herein as “Smoke”) is greater than a relatively low smoke alarm threshold value (referred to herein as Smoke_T_Base). In  FIG. 33 , state machine  3100  transitions from idle state  3110  to monitor state  3120  when Smoke exceeds Smoke_T_Low. 
     In transition  2 , state machine  3100  may evaluate several conditions to determine whether to transition from monitor state  3120  to alarm state  3130 . State machine  3100  may transition to alarm state  3130  when (1) Smoke is greater than or equal to the currently selected smoke alarm threshold. Smoke_T_Cur and (2) either (a) there is NO Steam_Alarm or (b) the amount of time elapsed since state machine  3100  entered into state  3120 , T_Monitor, is greater than a Steam_HoldOff_Time. The currently selected smoke alarm threshold can be set to any one of the smoke alarm threshold values (e.g., Smoke_T_Base, Smoke_T_Low, Smoke_T_Mid, or Smoke_T_High), as discussed above. In one embodiment, Smoke_T_Cur can be set to Smoke_T_Low, Smoke_T_Mid, or Smoke_T_High by alarm/pre-alarm threshold setting module  900 , discussed above. In another embodiment, Smoke_T_Cur can be set to Smoke_T_Low as a default setting unless alarm/pre-alarm threshold setting module  900  instructs state machine  3100  otherwise. 
     The confirmation of NO Steam_Alarm can be determined by the analysis performed by evaluating the Boolean states of the conditions set forth in  FIG. 33 . If steam exists, the result of the NO Steam_Alarm condition is False, otherwise the condition is True. Steam_Alarm may TRUE if S_Humidity, S_Smokederivative, S_SmokeSamples are all TRUE and S_Carbonmonoxide is FALSE. Thus, if Steam_Alarm is detected, state machine  3100  may not be permitted to transition from monitor state  3120  to alarm state  3130  even if Smoke is greater than or equal to Smoke_T_Cur. The Steam_HoldOff_Time can be a time threshold that delays a transition from monitor state  3120  to alarm state  3130  by a fixed time period even if Smoke is greater than or equal to Smoke_T_Cur. In other words, the Steam_HoldOff_Time condition may impose a forced time delay on the transition to alarm state  3130  to provide sufficient time for any steam, if present, to dissipate. This way, if steam is present, the alarm may not be prematurely activated. However, when T_Monitor exceeds Steam_HoldOff_Time, and Smoke is greater than or equal to Smoke_T_Cur, state machine  3100  may transition to state  3130 . This transition may take place even if steam rejection module  3300  detects the presence of Steam when T_Monitor exceeds Steam_HoldOff_Time. In some embodiments, a steam holdoff timer can control the Steam_HoldOff_Time condition. For example, when the state machine enters into monitor state  3120 , the steam holdoff timer may commence, during which time all smoke values are rejected, but after the timer expires, the smoke values may no longer be rejected. 
     The condition of comparing T_Monitor to Steam_HoldOff_Timer may be used on a periodic basis to prevent the potential for extraordinary delay in transitioning from monitor state  3120  to alarm state  3130 . Thus, the Steam_HoldOff_Time condition may have its own holdoff period, which is referred to herein as a “condition holdoff” period. Thus, the condition of whether T_Monitor exceeds Steam_HoldOff_Time may only be used as a condition once every “condition holdoff” period. This prevents the Steam_HoldOff_Time condition from delaying transition to alarm state  3130  more than once a condition holdoff period. For example, if Steam_HoldOff_Time has X duration, the condition holdoff period may be Y*X. The condition holdoff period may be controlled by a timer that controls whether the Steam_HoldOff_Time condition can be used. 
     In  FIG. 35 , after time t 1 , Smoke exceeds Smoke_T_Cur, but exhibits steam characteristics from time, t 1 , to time, t 3 . In addition the Steam_HoldOff_Time does not expire until time, t 2 . Thus, even though Smoke exceeds Smoke_T_Cur between times t 1  and t 2 , the signal exhibits steam, and therefore, state machine  3100  does not transition to alarm state until the Steam_HoldOff_Time threshold is passed at time, t 2 . At time, t 2 , Smoke exceeds Smoke_T_Cur (but continues to exhibit steam characteristics) and T_Monitor exceeds Steam_HoldOff_Time, thereby meeting the conditions of transition  3 , which causes state machine  3100  enter into alarm state  3130 . As illustrated, even though Smoke continues to exhibit steam characteristics after time t 2 , this may not prevent the state transition. 
     In transition  3 , and according to condition set #1, state machine  3100  transitions from alarm state  3130  to alarm hush state  3140  when a hush event is detected and the No_Hush_Filter is less than the No_Hush_Threshold. The hush event may be a gesture recognized hush event processed by hush module  1307  (discussed above in connection with  FIGS. 13 and 15 ) or a button press event of button  1340  (discussed above in connection with  FIGS. 13 and 15 ). If No_Hush_Filter is greater than or equal to the No_Hush_Threshold, then state machine  3100  may remain in alarm state  3130 . According to condition set #2, only a hush event need be detected in order to effect transition  3 . Thus, even if No_Hush_Filter is greater than or equal to the No_Hush_Threshold, the detected hush event is sufficient to silence the alarm. 
     In transition  4 , and according to condition set #1, state machine  3100  can transition from alarm hush state  3140  to alarm state  3130  when Smoke is greater than or equal to Smoke_T_Current and when the time elapsed since entering state  3140  (hereinafter T_Hush) is greater than or equal to a maximum allowable hush time period (hereinafter Max_Hush_Time). Also, according to condition 1, state machine  3100  can transition from alarm hush state  3140  to alarm state  3130  when No_Hush_Filter is equal to or exceeds the No_Hush_Threshold. 
     According to condition set #2, state machine  3100  is essentially the same as condition set #1, but forces the alarm to be silenced for a minimum allowable hush time period (herein after Min_Hush_Time). Only after T_Hush exceeds (or equals) Min_Hush_Time can state machine  3100  evaluate the conditions to make a potential state change transition. 
     In transition  5 , state machine  3100  can transition from alarm hush state  3140  to monitor state  3120  when T_Hush is greater than or equal to Min_Hush_Time and Smoke is less than Smoke_T_Base. 
     In transition  6 , state machine  3100  can transition from alarm state  3130  to monitor state  3120  when Smoke is less than Smoke_T_Base. In transition  7 , state machine  3100  can transition from monitor state  3120  to idle state  3110  when Smoke is less than Smoke_T_Base. In some embodiments, state machine  3100  may transition to state  3110  when any two successive Smoke samples are less than Smoke_T_Base. 
     Moreover, the processes described with respect to  FIGS. 1-35 , as well as any other aspects of the invention, may each be implemented by software, but may also be implemented in hardware, firmware, or any combination of software, hardware, and firmware. They each may also be embodied as machine- or computer-readable code recorded on a machine- or computer-readable medium. The computer-readable medium may be any data storage device that can store data or instructions which can thereafter be read by a computer system. Examples of the computer-readable medium may include, but are not limited to, read-only memory, random-access memory, flash memory, CD-ROMs, DVDs, magnetic tape, and optical data storage devices. The computer-readable medium can also be distributed over network-coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. For example, the computer-readable medium may be communicated from one electronic subsystem or device to another electronic subsystem or device using any suitable communications protocol. The computer-readable medium may embody computer-readable code, instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and may include any information delivery media. A modulated data signal may be a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. 
     It is to be understood that any or each module or state machine discussed herein may be provided as a software construct, firmware construct, one or more hardware components, or a combination thereof. For example, any one or more of the state machines or modules may be described in the general context of computer-executable instructions, such as program modules, that may be executed by one or more computers or other devices. Generally, a program module may include one or more routines, programs, objects, components, and/or data structures that may perform one or more particular tasks or that may implement one or more particular abstract data types. It is also to be understood that the number, configuration, functionality, and interconnection of the modules or state machines are merely illustrative, and that the number, configuration, functionality, and interconnection of existing modules may be modified or omitted, additional modules may be added, and the interconnection of certain modules may be altered. 
     Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that the particular embodiments shown and described by way of illustration are in no way intended to be considered limiting. Therefore, reference to the details of the preferred embodiments is not intended to limit their scope.