Predictive power management in a wireless sensor network using presence detection

A system comprising a plurality of self-powered devices and a plurality of proximity self-powered devices. The plurality of self-powered devices may be configured to (i) perform instructions, (ii) store scheduling data and (iii) select one of a plurality of modes of operation. The proximity self-powered devices may be configured to (i) detect a presence and (ii) select one of a plurality of modes of operation. The plurality of self-powered devices may select one of the plurality of modes of operation based on (i) the stored scheduling data and (ii) the presence detected by at least one of the plurality of proximity self-powered devices.

FIELD OF THE INVENTION

The embodiments disclosed herein relate to power management in self-powered electronic devices, and, in particular, to predictive power management in self-powered electronic devices that include power saving features using presence detection.

BACKGROUND OF THE INVENTION

Private and public networks, such as the Internet, continue to grow at an exponential rate. These rapidly expanding networks consume a tremendous amount of power, which is typically supplied from traditional electrical power grids. As such, most networked computers are either tethered to electrical wall outlets or require periodic charging at electrical wall outlets. Many networked computers, however, have benefitted tremendously by being self-powered. For example, emergency communication systems, computing devices in rural areas where access to traditional power sources is limited, etc.

However, current self-powered devices, such as devices that obtain energy from solar power, typically waste much of their power communicating with other networked computing devices. As such, it would be highly desirable to provide a self-powered device (SPD) that consumes less power when communicating with other devices in a network.

Wireless sensor networks have been proposed for a wide range of monitoring applications in various industries, such as health care, energy, transportation, infrastructure, agriculture, security, the environment and many other fields. Billions of active sensors have been installed that can wirelessly connect to networks and capture data. Such an installed base of sensors creates issues such as powering such sensors as well as transporting and storing the data received from the sensors.

Various conventional approaches have been developed in response to particular constraints. Microelectronics companies are concerned with creating low power devices with energy harvesting technologies and improved batteries. Communications companies are continuing to build networks with more radio towers, improved data compression and adherence to interference regulations. Cloud computing companies are developing approaches for storing more data with data structures suited for the expected exponential growth in capturing data. Such conventional approaches are unlikely to be sufficient with the grand vision of the “Internet of Things”. The communications bandwidth (and data storage on the Internet to implement such an approach) could include hundreds of times as many sensors as conventional smartphones, potentially consuming the highest amount of energy of the Internet.

Most conventional approaches are based on autonomous sensor nodes that are always on and capture and transmit large amounts of sensor data to a network that always needs to be listening and recording the transmissions. The network then needs to relay back an acknowledgment to the sensor that the data was accurately received. If scaled to a trillion sensors, a huge number of devices would need to be implemented with batteries that would be unaffordable (or at least inconvenient) to change. A huge amount of traffic on already congested networks would further increase the power needs of each device, since higher antenna output would likely be needed to overcome interference and noise.

Different approaches are needed. The motivation of a better approach stems from a more fundamental question—Why do we need all of this data anyway? The data and related power needs of capturing, transmitting and recording data are highly context and application dependent. Most conventional sensors blindly capture and transmit data. Such sensors assume the application needs or knows what to do with that data. Some data inevitably are more important than others. The importance of data can vary with time and with the knowledge embedded in the application.

It would be desirable to implement a predictive power management in a wireless sensor network.

SUMMARY OF THE INVENTION

The present invention concerns a system comprising a plurality of self-powered devices and a plurality of proximity self-powered devices. The plurality of self-powered devices may be configured to (i) perform instructions, (ii) store scheduling data and (iii) select one of a plurality of modes of operation. The proximity self-powered devices may be configured to (i) detect a presence and (ii) select one of a plurality of modes of operation. The plurality of self-powered devices may select one of the plurality of modes of operation based on (i) the stored scheduling data and (ii) the presence detected by at least one of the plurality of proximity self-powered devices.

Like reference numerals refer to the same or similar components throughout the several views of the drawings.

DETAILED DESCRIPTION OF EMBODIMENTS

Embodiments of self-powered systems, devices, and methods are described herein. The self-powered system may include a computing device that selectively communicates with a self-powered device. The self-powered device may include: a circuit to power the self-powered device; memory; a processor; and a program mechanism that is stored in the memory for execution by the processor. The program mechanism may include instructions for selecting one of a plurality of modes of operation, including a first mode of operation in which the self-powered device consumes less than a pre-determined amount of power and a second mode of operation in which self-powered device consumes more than the pre-determined amount of power. (SeeFIG. 17).

Embodiments of the invention provide a context-aware and/or power-aware wireless sensor network system that enables application needs to determine which data is captured, transmitted and/or stored at the edge of the wireless sensor network. Such an implementation may result in lower power usage, lower bandwidth usage, less interference, and/or less storage and/or processing capacity in the cloud. The determination of which data is important may change and may be determined based on context and/or knowledge. The sensor system is highly adaptable. A software application can reprogram the sensor nodes with new instructions as data needs change and/or grow more complex. Additionally, the power management of the sensor nodes is application-driven to prioritize limited power resources according to the application needs. Power resources may be calculated based on available energy, a power budget, predicted future power needs and/or energy harvesting opportunities.

The program mechanism may further include instructions for communicating with the computing device when the self-powered device is in the second mode of operation. The self-powered device may conserve power by alternating between the first mode of operation and the second mode of operation such that the self-powered device is in the second mode of operation during pre-determined time intervals. A duty-cycle of the second mode of operation relative to the first mode of operation may be based on a power budget for the self-powered device.

The computing device and the self-powered device may be synchronized such that transmit circuits and receive circuits in the computing device and the self-powered device are to communicate signals during one or more of the pre-determined time intervals or adaptively-determined time intervals. In some embodiments, the synchronization includes use of a Network Time Protocol. In some embodiments, the synchronization includes a Wi-Fi periodic beacon signal.

The computing device may poll the self-powered device during one or more of the pre-determined or adaptively-determined time intervals.

The self-powered device may switch to the second mode of operation prior to one or more of the pre-determined time intervals or adaptively-determined time intervals, and the self-powered device may switch to the first mode of operation after one or more of the pre-determined or adaptively-determined time intervals.

In some embodiments, the self-powered device further includes instructions for determining a periodicity of the pre-determined time intervals or adaptively-determined time intervals in accordance with signals provided by the computing device, and the duty-cycle is further determined in accordance with the periodicity.

In some embodiments, the self-powered device further includes instructions for combining messages that are to be communicated to the computing device in order to reduce a communication overhead.

In some embodiments, the system further includes one or more additional self-powered devices and a coordination element. The coordination element may assign communication priorities to the self-powered device and the one or more additional self-powered devices in accordance with power budgets for these devices.

In some embodiments, the self-powered device further includes instructions for providing an acknowledgment message to a sending self-powered device with a higher priority than other types of messages.

In some embodiments, a circuit converts an external energy source into signals that power the self-powered device. The external energy source may include light.

In some embodiments, the circuit includes a component, such as a photovoltaic cell, a wind energy generator, a thermo-electric energy generator, a kinetic energy generator, a piezoelectric device, a magnetic energy generator, and/or a chemical-to-electricity generator.

In some embodiments, the computing device provides control information to the self-powered device.

In some embodiments, the self-powered device includes one or more sensors. The sensor may measure a characteristic, such as temperature, humidity, pressure, vibration, light, motion, sound, proximity, flow rate, electrical voltage, and electrical current.

In some embodiments, the self-powered device may provide configuration information to one or more output devices in accordance with the measured characteristic, the internal status of the self-powered device, any received message, elapsed time, local and/or remote user interaction, or a local and/or remote automatic process. The output devices may include a switch, a relay, an electromechanical actuator, a heater, a fan, a speaker, a solenoid, a motor, an electric field generator, a magnetic field generator, and an electro-magnetic field generator.

The following description describes various self-powered devices (“SPDs”), systems that include SPDs, and methods for operating SPDs and the systems that they operate in. SPDs are devices that are configured to operate solely under power sources from external energy sources, such as light, thermal, kinetic, wind, wave or other energy. In some embodiments, the SPDs may also be powered by battery power and/or using a power line at ˜50 or ˜60 Hz.

The SPDs may include a variety of features and/or functionality (i.e., hardware and/or software) to conserve power. In particular, the SPDs may use duty-cycle power management in which the SPDs alternate between low and high-power modes of operation based on a power budget. The SPDs may also alternate between many different power-consumption modes. Furthermore, the SPDs may communicate with computing devices during communication windows. This communication may be periodic and may utilize pre-determined time windows. For systems that include multiple SPDs, a communication priority may be assigned to a given SPD based on its power budget, with a higher priority accorded to devices that have a lower power budget. The SPDs may also combine messages in order to reduce communication overhead and/or give higher priority to providing acknowledgment messages over other types of messages.

FIG. 1is a block diagram of a system100including one or more self-powered devices102. The system100may also include other computing devices, such as desktop or stationary computers104, laptop computers106, personal digital assistants116, cellular telephones, or the like. These computing devices may be connected to one another via one or more routers or switches110, firewalls112, wireless access points114, fixed network connections108, or other computer networking equipment, such as computers, cables, switches, firewalls, routers, bridges, gateways, or the like. These computing devices are generally located remotely from the SPDs102.

In some embodiments, the system100has a single connection link between a SPD (such as SPD102-1) and a remote computing device (such as computing device104-1), while in other embodiments there may be many wired and/or wireless links between one or more of the SPDs102and the computing devices104, such as Universal Serial Bus (USB), Firewire, Ethernet, coaxial cable, copper telephone line, optical fiber, wireless, infra-red, or the like. For example, SPD102-2may couple to the system100via a WiFi (Wireless Fidelity—IEEE 802.11x wireless networking protocol) access point114. Also, the system100may communicate over private or public networks, such as an intranet and/or the Internet.

Referring toFIG. 2, a block diagram of a system150is shown implementing a context of the present invention. The system is shown comprising a block170, a block172, a block174, and a block102. The block170may be implemented as a mobile computing device. The block172may be implemented as a network data services device. The block174may be implemented as a network computing services device. The block102may be implemented as a self-powered device, such as a wireless sensor node. In one example, the SPD102may be implemented as part of the mobile computing device170. The SPD102is shown receiving inputs from a number of blocks160a-160n. The blocks160a-160nmay be implemented as sensors. The sensors160a-160nmay also be referenced as sensors A, B, C, etc. The block160amay represent (or capture) a contextual logic signal. Another block (e.g.,160b) may represent (or capture) a beacon signal. The block160nmay represent (or capture) a proximity signal. Various other signals may be captured by the sensor node102.

Referring toFIG. 3, a diagram illustrating a plurality of sensor nodes102a-102nis shown. The sensor nodes102a-102nmay be implemented as SPDs. The sensor nodes102a-102nare shown connected to a mobile computing device170b. However, some of the sensor nodes102a-102nmay be connected to a mobile computing device170a, while others may be connected to the mobile computing device170b, while still others may be connected to a mobile computing device170n. The particular number of sensor nodes102a-102nand wireless computing devices170a-170nmay be varied to meet the design criteria of a particular implementation.

Each of the sensor nodes102a-102nmay have a power budget based on predicted energy input and/or energy output needs. For example, an energy input need may be a function of past patterns and/or cycles as well as predictable future opportunities to harvest energy from the environment (e.g., weather and/or day/night/seasonal patterns on a photovoltaic device, etc.), at least up to the storage capacity. The predicted energy expenditures may also be based on the predicted power consumed given known upcoming calendar and/or event data as well as other inputs.

A context-aware activation signal may be used to wake up the device102. The device102may begin sensing and/or processing other data, and/or provide power management that is context-aware. A higher priority may be placed on processing certain data. Such data may be data deciding whether to spend more power to transfer the data with less delay and/or more reliability. For example, logic may be implemented to boost radio power based on priority and/or distance from a cellular tower. Such logic may minimize the radio power that may otherwise reduce interference with other sensors.

One or more of sensors160a-160nmay be implemented internally as a beacon signal sensor or as a radiation sensor, a blood glucose sensor, a proximity sensor, chemical/gas sensor, blood pressure sensor, a location sensor, a pollution sensor, a heart rate sensor, a vibration sensor, an air flow sensor, a heart rate variability sensor, an acceleration sensor, a fluid flow sensor, a skin conductance sensor, a position sensor, a direction sensor, a rotation sensor, a weight sensor, a displacement sensor, a machine operations sensor, a fluid retention sensor, a velocity sensor, a leakage sensor, a respiration sensor, a magnetic field, a microphone, an ECG, one or more derived quantities, temperature, image, color, pulse oximetry, physical pressure, odor, drug delivery, air pressure, voltage, container opening, etc. One or more of the sensors160a-160n, or a combination of the sensors160a-160nmay be implemented internally as part of the sensor node102(e.g., within a sensor node housing), or alternatively may be implemented externally (e.g., as a separate sensing device coupled to the sensor node102). Additionally, the sensors160a-160nmay transmit data directly to a network, in which case the sensor node102may receive data as a network data source. Such network data sources may include, for example, environmental or weather data, location-based data, proximity data, etc.

The various sensors160a-160nmay be configured in one of a number of categories, such as a logical condition, a fluid/gas level, a biological process, etc. The logical conditions may be further configured to receive signals from devices such as a beacon, a proximity sensor, a location sensor, a vibration sensor, an acceleration sensor, a position/direction sensor, a displacement velocity sensor, a magnetic field sensor, a temperature sensor, a physical pressure sensor, an air pressure sensor, a force/strain sensor, a moisture/humidity sensor, etc. The fluid/gas level category of sensors may be implemented to receive signals from devices such as a radiation sensor, a chemical/gas sensor, a pollution sensor, an air flow sensor, a fluid flow sensor, a rotation sensor, a machine operations sensor, a leakage sensor, a microphone, an image/color sensor, an odor sensor, a voltage sensor, an electrical sensor, a current sensor, a gyroscope, etc. The biological process category of sensors may be configured to receive signals from devices such as a blood glucose sensor, a blood pressure sensor, a heart rate sensor, a heart rate variability sensor, a skin conductance sensor, a weight measuring device, a fluid retention sensor, a respiration device, and ECG, a pulse oximetry device, a drug delivery device, a container opening device, a medication dispensing device, a microbial device, etc.

FIG. 4is a block diagram of an embodiment of a self-powered devices102shown inFIG. 1. SPD200contains a plurality of components, such as at least one central processing unit (CPU)202, memory204, an optional wireless transceiver206coupled to a wireless antenna208, an energy collector210, an energy converter212with an optional energy storage device214, optional user input and/or output devices216, an optional network interface218, one or more optional sensors and/or output devices like actuators or one or more sensor/actuator interfaces220configured to be coupled to the one or more sensors, and at least one bus222that connects the aforementioned components. Different embodiments may include some or all of these components. Also in some embodiments, these components are, at least partially, housed within a housing, where the housing may be configured to withstand direct exposure to the elements, such as sun and rain.

The CPU202may include programmable or non-programmable circuits, such as ASICs or microcontrollers. This circuitry typically includes non-volatile memory to retain programmed memory204functionality, event logs, and/or data, even after a period of power that is insufficient for continued operation. In some embodiments, the data contained in memory204may be updated while the SPD is deployed, in response to either local and/or remote instigation, allowing new and/or different capabilities to be added to the functionality.

Using the memory204, the CPU202operates and manages the remainder of the components in the SPD200. In some embodiments, some SPDs may also operate and manage other SPDs in the system100(FIG. 1).

The wireless transceiver206includes a transmitter and receiver configured for transmitting and receiving radio signals via the antenna208.

The energy collector210is any suitable mechanism for collecting energy from the surrounding environment in which the SPD is located. For example, the energy collector210may include photovoltaic cells that generate electrical energy from light, wind energy generator(s), thermo-electric energy generator(s), kinetic (motion) energy generator(s) (such as piezoelectric devices), magnetic/inductive energy generator(s), chemical-to-electricity generator(s), etc. Furthermore, the energy collector210may collect electromagnetic energy from, for example, a system of antenna(s) and rectifying device(s), or other suitable means. In addition, in some embodiments, electrical energy may be collected via signals received through the network interface218. In other embodiments, energy may be collected from more than one of these sources at the same time, or at different times. Also in some embodiments, energy collection may be supplemented with more traditional power sources, such as replaceable batteries, AC (line) power, an external DC power supply, Power-over-Ethernet, or the like.

In embodiments where the collector210generates power from light, the collector may include one or more photovoltaic (PV) cells (also known as “solar cells”). These cells absorb incident radiation (light) and convert that radiation to electrical energy. In addition to the PV cell(s) themselves, the collector may contain any necessary interconnections to form a series and/or parallel array of cells. The properties of the electrical energy generated by a PV cell for a particular intensity of incident light are typically characterized by an open-circuit voltage VOC, a short-circuit current ISC, and a maximum power delivered PMAX, which occurs at a particular output voltage VMAX(where VMAX≦VOC) and output current IMAX(where IMAX≦ISC). (For many PV cells, ISCand IMAXare roughly proportional to the intensity of the incident light across several orders of intensity magnitude, whereas VSCand VMAXare comparatively constant, perhaps changing by a factor of only 2 or 3 across the same large variation of incident lighting conditions).

The PV cells may be based on a number of different technologies, including monocrystalline silicon, multicrystalline silicon, amorphous silicon, thin-film, or other photovoltaic technologies. If the collector210uses more than one cell, the cells may be connected together in series to provide a higher voltage than a single cell, in parallel to provide a higher current, or in a hybrid configuration to provide higher current and voltage than a single cell. The cells may be physically arranged at the best possible location to receive incident light, such as above the SPD. In some embodiments, the cells form an integral part of the SPD housing so as to not detract from the appearance of the device. Also in some embodiments, energy collection procedures236(described further below) are configured to notify the user of the power output from the collector210, such that the user may determine the best physical location of the cells for optimal energy collection. For example, the SPD may display an indication or emit an audible tone that varies and/or is representational of the instantaneous collected power. Since the SPD may have the ability to store excess collected energy, the ability to maximize the collected energy over some extended time may be particularly valuable for some SPD applications.

In some embodiments, the SPD200is intended to be used over a wide range of lighting conditions, varying from direct sunlight to low-level indoor fluorescent lighting. In these embodiments, the SPD200may efficiently collect and convert the incident light energy to usable electricity. Selection of the appropriate type and size of PV cell(s) to use for a particular embodiment of the SPD200is typically determined by the corresponding power required, expected radiant light conditions, and cost constraints for that embodiment of the SPD200.

The energy converter212is electrically coupled to the collector210and the optional energy storage device214. The converter212converts the energy collected by the collector210into a form that is usable by the SPD200. Typically, this conversion is from one voltage to another, for example from the maximum power voltage (Vmax) of the PV cell(s) to the appropriate supply voltage(s) of the rest of the subsystems in the SPD200. The storage device214, which may more generally include an energy storage device such as a battery or capacitor, stores the converted energy for later use by the SPD200. When excess energy is collected, this excess energy is stored until the battery214is fully charged. When there is insufficient energy being collected, the battery214provides additional energy until it has discharged or reached a minimum useable level. If the energy from the collector210is otherwise deemed adequate for use by the SPD200, then the battery214of the collector may be minimized or eliminated.

For some embodiments, the SPD200may need a useful life of many years, and the converter212may need to operate over this lifetime without requiring replacement of any internal energy storage device(s), such as the battery214. This lifetime may need to be maintained over the expected range of operating temperature and humidity, and also after many charge/discharge cycles, in some cases many of these cycles occur every day.

The network interface218and/or wireless transceiver206may include hardware as well as associated firmware and/or software components. The network interface218provides communications connectivity to the remainder of the system100(FIG. 1) via wired connections, while the wireless transceiver206and antenna208provide communications connectivity to the remainder of the system100(FIG. 1) via wireless connections. Some embodiments may include both wired and wireless connectivity, while other embodiments may include one or the other. Furthermore, some embodiments may include more than one network interface218and/or wireless transceiver206. In still other embodiments, no network interface218or wireless transceiver206is provided, as the SPD200does not require connectivity to the system100(FIG. 1), such as for stand-alone, sense-and-display or sense-and-control applications.

The network interface218may be of any suitable type, such as a parallel interface, a serial interface, or the like. These interfaces may be based on a proprietary format or on industry-standard protocols, such as SCSI, printer-style Parallel Port, ESDI, GPIB, PCI, RS-232, Ethernet, I2C, USB, FireWire, Token Ring, DS1, or DS3. For purposes of this discussion, the possible wired connectivity also includes communication through optical fibers. These optical-fiber-based communications protocols may similarly be serial or parallel, and may be based on industry standards (e.g.—Fiber Channel, OC-3, OC-12, etc.) or may be proprietary in nature.

Possible wireless connectivity for the wireless transceiver206include radio-based protocols, light-based protocols, magnetic-induction-based protocols, or other methods of communicating that do not require some sort of physical connection. Radio-based interfaces may be based on industry standards, such as Wi-Fi (IEEE 802.11-based protocols), BlueTooth, RFID, and other interfaces known to those skilled in the art, or may be proprietary in nature. Light-based protocols may be industry standard (e.g.—IrDA, or other industry-standard protocols) or may be proprietary in nature.

The user input and/or output devices216may include input devices for controlling the SPD200, such as one or more buttons or switches, a keyboard, a touch screen, a proximity sensor, a microphone, and other input functions known to those skilled in the art, or some combination of these. The user input and/or output devices216may also include output devices, such as one or more indicators (such as light-emitting diodes, or passive reflective indicators), multi-digit numeric or alpha-numeric displays, an array of pixels (such as bit-mapped LCD screen or another pixeled array of indicators), speakers, or the like. Inputs and outputs may be initialized and/or updated, through an automatic process and/or through user interaction, and coordinated remotely and/or locally at the installed location.

A number of techniques can be used to conserve the power of the user input/output devices, including operating the output devices at a lower duty cycle or turning the output devices off when available power is low. Depending on the underlying technology, displays may also be dimmed, or operated at reduced contrast or refresh rate, with different encoding/decoding parameters, and other power-conservation techniques known to those skilled in the art. In addition, various forms of input and output functions may be combined, such as the use of proximity sensors as a “user input” so that the display may activate automatically when sensing a user's presence.

The memory204may comprise Random Access Memory (RAM) and/or Read Only Memory (ROM). The memory204may include an operating system226that has instructions for communicating, processing, accessing, storing, or searching data. Examples of suitable operating systems include embedded LINUX or a proprietary or scaled-down operating system. In addition, memory204may include communication procedures228, wireless procedures230, power management procedures232, sensor procedures234, the energy collection procedures236, input/output procedures238, and other applications, such as applications240and242.

The communication procedures228are used for communicating with the remainder of the devices in the system100(FIG. 1). The communication procedures228may also control power management of the wireless transceiver206and/or network interface218, protocol implementation and participation (such as with 802.11b, etc.), persistent network interface or wireless operating parameter management, network interface statistics management, bridging/routing functions, encryption and security services, etc.

The wireless procedures230may work in conjunction with the communication procedures228to facilitate wireless communication between other devices in the system100(FIG. 1) and the SPD200. In some embodiments, the SPD200may also include a wireless network adapter, for example, as at least part of a printed circuit board that controls communication at the data link level (OSI layers 1 and 2) between an external computing device and the SPD200.

For some embodiments of the SPD, conserving power is of utmost importance. In these embodiments, numerous techniques may be used to reduce power consumption. One or more of these techniques may be implemented using hardware and/or software, such as the power management procedures232. For example, power consumption may be reduced by maximizing gain of the passive input components; coalescing messages; explicit attention to latencies; access point placement; duty cycling and/or sleep modes; priority ranking based on power levels; static and/or dynamic tokenization of commonly exchanged information blocks; static and/or dynamic distillation of repeated information blocks; periodic (versus continuous) transceiver enable; peer-forwarding based on power disparities; gateway routing based on power disparities; and other power-conservation techniques known to those skilled in the art.

Thus, in some embodiments, the power management procedures232are used to reduce power consumption by the SPD200by (i) initiating a series of prioritized shutdowns of partial or entire subsystems when the available power from the collector210and/or battery214becomes insufficient to keep the SPD200fully powered, and/or (ii) ensuring partial or entire subsystems are powered back on when sufficient power again becomes available to support additional operation usually according to the priority of each function in the subsystem.

The sensor procedures234are used to measure variables from the sensors and/or communicate with output devices. For example, the procedures may be monitoring the sensors for ambient and/or external stimuli, collecting and formatting the information, and then initiating any appropriate action based on that input information. For the output function(s), these procedures initiate, modify, and/or terminate the operation of the output device(s). In conjunction with the power management procedures232, the sensor procedures234also manage the power consumption and operating characteristics of the sensors and/or the output devices220.

The energy collection procedures236are used to control and manage energy collection and storage, such as by (i) monitoring the voltage and current produced by the collector210and, based on the known properties of the collector210, determining the intensity of the input energy (light, heat, motion, etc.) to the collector210as well as the overall energy being made available to the SPD200, (ii) ensuring that the current drawn from the collector210is adjusted to maximize the power extracted from the collector210, (iii) ensuring that the storage device214(if present) is properly charged, and/or (iv) monitoring and controlling the available energy stored in the battery214, etc.

The user input/output procedures238control and manage the user input/output devices216, such as by collecting and formatting (thresholding, debouncing, etc.) the user input, and initiating any appropriate action based on that input. For the output function(s), these procedures are responsible for any necessary formatting/construction of the information to be displayed, as well as updates of that displayed information. In addition to these primary functions, these procedures in conjunction with the power management procedures232manage the power consumption of the user input/output devices216.

Referring toFIG. 5, a more detailed diagram of one of the sensor nodes102ais shown as a block (or circuit)200a. Each of the self-powered sensor nodes102a-102nmay include a processor, an RF transceiver, an energy storage unit, one or more sensors and a memory. The memory may store a set of instructions executable by the processor to evaluate and selectively store sensed data in the memory or transmit sensed data based on sensor data values and the stored instructions. The remote computing device170may be located separately from the sensor node102a. The device170may be selectively coupled to one of the sensor nodes102a-102nto collect stored data and/or to transmit new instructions to the sensor node.

The sensor node200ais shown comprising a block202a, a block204a, a block206a, a block208a, a block210a, a block214a, a block250a, a block252a, and a block254a. The block202amay be implemented as a CPU (or processor) circuit. The block204amay be implemented as a memory. Details of the memory204aare shown by the blocks270a-270n. The block206amay be implemented as a radio. The block208amay be implemented as an antenna. The antenna208aand the radio206amay form a transceiver. The block210amay be implemented as an energy capture unit (ECU). The block214amay be implemented as an energy storage unit (ESU). The block250amay be implemented as a sensor I/O. The block252amay be implemented as a user I/O circuit. The block254amay be implemented as a clock generation circuit.

The output portion of the user I/O252amay be configured to preset one or more signals to a speaker, a display, an LED, a vibrator, an actuator, an electrical field, a magnetic field, etc. The signals presented to the I/O252amay be an electrical signal (such as a DC signal), a data signal, etc. The input portion of the user I/O252amay be configured to receive signals from a microphone, a camera, a light sensor, a motion sensor, a position sensor, a button, a touch screen, a proximity sensor, etc. The signals presented to the I/O252amay be an electrical signal, such as a DC signal, a data signal, etc.

In one example, the sensor102may implement a learning process and/or predictive modeling on the CPU202a(to be described in more detail in connection withFIGS. 12-14). New rules may be stored in the memory204a. In another example, the machine learning process(es) may be run on the mobile computing device170and/or the network computing services block174. The processing power and energy to implement the learning process(es) may use more aggregated data and/or processing power than the sensor102can process efficiently while running on the energy storage unit214a. By offloading the processing, the overall energy used by the sensors102a-102nmay be reduced.

FIG. 6is a block diagram of a photovoltaic collector300of a self-powered device, such as the SPD200(FIG. 4). As described above, in some embodiments the collector300includes one or more PV cells301connected together to supply power to the converter212(FIG. 4). When illuminated, the interconnected PV cells301together produce a current IPVat a voltage VPV. In other embodiments, other forms of energy collection and generation of electricity from external energy sources may be used. Whether the generator(s) derive their input power from light, heat, motion, chemical energy, vibration, pressure, network interface communications, other electromagnetic radiation, or some other form of energy, or some combination of these external sources, the electricity produced is characterized by an output voltage at some output current.

An optimal operating point typically exists where the output voltage at a particular output current yields a maximum power from the available input energy and operation at this optimal operating point may be achieved using the methods described below. Furthermore, more than one of these PV cells301may be combined as shown using PV cells of the same or different types. Furthermore, in some embodiments, switching mechanisms are provided so that the presence of one set of PV cells301do not adversely affect the operation of another set of PV cells301, such as when one set is operating, and another set is not operating.

FIG. 7is a block diagram illustrating an embodiment of a converter400, such as the converter212(FIG. 4). In some embodiments, the converter400includes an input DC-to-DC converter402, a storage device404, and an output DC-to-DC converter406. The input DC-to-DC converter402transforms the current coming from the collector at VPVto the voltage VSTOREof the storage device404. The output DC-to-DC converter406transforms the current flowing from the storage device404to the voltage(s) used by the other subsystems in the SPD, known as VOUT1, VOUT2, etc. These output voltages may be the same or different depending on the requirements of the SPD. If present, the storage device404includes one or more physical rechargeable storage devices interconnected in series and/or parallel that meet the requirements of that embodiment. One should note that in some embodiments, a storage device may not be required. In these embodiments, all that is required is to convert the input voltage derived from the collector210(FIG. 4) to the output voltage required by the rest of the subsystems in the SPD. Additionally, other embodiments do not require the input DC-to-DC converter406if the optimal voltage supplied by the collector210(FIG. 4) is within a predefined acceptable range. Likewise, some embodiments do not require the output DC-to-DC converter406if the rest of the subsystems in the SPD are able to operate using the output voltage from the storage device404.

FIG. 8is a block diagram illustrating an embodiment of the current flow500from the collector210(FIG. 4). In order to maximize the power taken from the collector210(FIG. 4), the converter212(FIG. 4) attempts to maintain the current flowing from the PV cells301(FIG. 6) at about IMAX, which yields a voltage of approximately VMAX. Since the optimal voltage VMAXof the collector210(FIG. 4) may be different from the voltage VSTOREof the storage device404(FIG. 7), some embodiments may make use of a DC-to-DC converter (as described above) to make the voltage transformation, preferably with minimal power loss. Suitable DC-to-DC converters operate in a switching mode, which is to say that they periodically draw some current to “charge” an inductor, then “discharge” that current (at a different voltage) into the load. These two operations may then be repeated when more power needs to be transferred.

For DC-to-DC converters, the time that the current is being drawn into the converter to charge the inductor may be referred to as TON, and the time that the DC-to-DC converter is transferring the stored charge to its load (or is otherwise waiting for the next cycle to begin) may be referred to as TOFF. The full cycle time of the converter may be expressed as TON+TOFF. Similarly, the current drawn into the DC-to-DC converter when it is on may be referred to as IDCON, and the current drawn into it when it is discharging its inductor to the load (or it is otherwise waiting for the next cycle to begin) may be referred to as IDCOFF. In order to maintain the maximum power output from the collector, the time average of these two converter input currents may be kept to about IMAX.

For most switching DC-to-DC converters, IDCOFFis approximately equal to 0, and assuming that the converter is on for only a small fraction of its full cycle time (TON+TOFF), the IDCONusually needs to be greater than IMAX. Unfortunately, for a DC-to-DC converter operating in these conditions connected directly to the collector210(FIG. 4), the current drawn alternates between IDCONduring TONand approximately 0 during TOFF, neither of which are the optimal current IMAX. Therefore, to maintain the optimal current drawn from the collector at about IMAX, a capacitor510or other charge-storage device may be connected across the output of the collector, as shown. With the addition of the capacitor510, when the DC-to-DC converter is on, the net current into the capacitor is IPV−IDCON. Since IDCONis typically greater in magnitude than IPV, the capacitor510is therefore discharging during TON. During TOFF, typically IDCOFF≈0, so the net current into the capacitor510is IPV−IDCOFF≈IPV, and the capacitor510is charging. The average value of the current into the capacitor510may be expressed as

(IPV-IDCON)·TON+(IPV)·TOFFTON+TOFF
which may be set to be approximately IMAXfor efficient operation of the collector210(FIG. 4). For large capacitances, the drop in the voltage of the capacitor510during TONmay be very small, and the rise in the voltage during TOFFmay likewise be very small.

Since the average current drawn from the collector210(FIG. 4), IPV, is now maintained at approximately IMAX, the average voltage on the capacitor510(and the collector210inFIG. 4) is, therefore, approximately VMAX. The value of the capacitor510is chosen such that the variation in voltage is small enough to be acceptably close to VMAX.

As previously stated, the maximum power of one of the PV cells301(FIG. 6) typically occurs at a certain current IMAX, and at a certain voltage VMAX. However, the actual values of this operating point may change with incident light intensity, operating temperature, and may also vary from device to device due to processing and manufacturing differences. This may make it difficult to predetermine the ideal operating point values for any particular device at any particular light intensity and temperature. In some embodiments, the ideal operating point for the PV cell(s)301(FIG. 6) may be determined automatically and, furthermore, may be adjusted automatically as operating conditions change, using the following method.

To determine the power being delivered by the converter212(FIG. 4), the energy collection procedures236(FIG. 4) periodically measure the current IPVfrom the collector210(FIG. 4), and the voltage VPVon the collector210(FIG. 4), and multiplies these two values together. One way to increase the average current drawn by the input DC-to-DC converter402, usually resulting in a reduced VPV, is by increasing the on time of the DC-to-DC converter, TON. Likewise, by reducing TON, the average current drawn from the collector210(FIG. 4) may be decreased, allowing VPVto increase. Other means to increase or decrease the average current drawn by the input DC-to DC converter may be used.

To maintain the maximum power from the collector210(FIG. 4) under varying operating conditions, the energy collection procedures236(FIG. 4) (i) measure the power from the collector210(FIG. 4), (ii) increase IPVby a small amount, such as 0.1% to 1% of the full value, (iii) measure the power from the collector210(FIG. 4), (iv) if power has increased, go to step (ii) above, otherwise continue, (v) decrease IPVby a small amount, such as 0.1% to 1% of the full value, (vi) measure the power from the collector210(FIG. 4), (vii) if power has increased, go to step (v) above, otherwise go to step (ii) above. Using this process, the controller may continuously “hunt” for the maximum power delivered from the collector210(FIG. 4). As the operating conditions vary, this procedure may allow those changes to be tracked by the SPD, allowing the energy collection procedures to continuously adjust the operating point of the collector210(FIG. 4) in order to achieve maximum power delivery.

To prevent operating at only either the maximum current ISCor the maximum voltage VOC, which may happen under very low lighting and/or other extreme conditions, when it may be difficult to determine how the power from the collector210(FIG. 4) has actually changed, the procedure may be modified to switch the direction of the “hunt” if the change in IPVvalue has moved in the same direction for the last 10 or 20 (or other appropriate number of) steps or iterations. This means that under extreme operating conditions, the operating point of the collector210(FIG. 4) may be scanned across a wide range of possible operating points to increase the likelihood that the maximum power delivery point is found. In some embodiments, to ensure that the storage device404(FIG. 7) in the converter212(FIG. 4) is maintained within its safe operating parameters, its voltage and/or current may be continuously monitored by the controller.

When the maximum capacity of the battery214(FIG. 4) is reached, the controller typically turns off the input DC-to-DC converter. This may be accomplished by setting the on time TONof the DC-to-DC converter to approximately zero, or otherwise disabling its operation.

When the energy held in the battery214(FIG. 4) gets low, and/or is not otherwise being sufficiently recharged from the collector210(FIG. 4), the energy collection procedures236(FIG. 4) may reduce the power consumption of the other subsystems in the SPD. In some embodiments, the energy collection procedures236(FIG. 4) may compare the energy in the battery214(FIG. 4) against one or more pre-determined low-energy thresholds, and once the threshold(s) is crossed, the energy collection procedures236(FIG. 4) may take one or more action(s) to reduce the energy demand from the battery214(FIG. 4), if appropriate.

When the remaining energy in the battery214(FIG. 4) drops to the lowest threshold, below which proper operation of the SPD may no longer be guaranteed, in some embodiments, the energy collection procedures236(FIG. 4) and/or the power management procedures232(FIG. 4) initiate a series of controlled shutdowns of any subsystems that remain on, including the majority of the SPD itself. Once this is accomplished, the SPD may be held in a reset condition, through the use of an automatic circuit until sufficient energy is delivered to the battery214(FIG. 4) to allow initiation of SPD startup.

When the energy level of the battery214(FIG. 4) transitions from below the lowest threshold to above that threshold, a subset of the SPD may be automatically brought out of reset and may begin to turn on various subsystems of the SPD, typically in a prioritized sequence, depending upon how much energy is in the battery214(FIG. 4), and/or how quickly it is being recharged. As increasing energy becomes available in the battery214(FIG. 4) and/or more power is available from the converter212(FIG. 4), and the various low-power thresholds are overcome, more and more SPD subsystems may be brought out of any low-power states until eventually the SPD may be returned to its full-power mode.

To eliminate unnecessarily repeated or oscillatory transitions between various low-power states, some embodiments may include an appropriate amount of hysteresis to be added to each threshold. This ensures that as a low-power threshold is approached in the decreasing direction, a slightly lower value than the nominal threshold value may be required to be achieved before transitioning the SPD to the next lower-power state. Likewise, when the energy in the battery214(FIG. 4) is increasing and that threshold is approached, a slightly higher value than the nominal threshold value may be required to be achieved before transitioning from the previous low-power state. The amount of hysteresis for each threshold level is chosen to minimize oscillatory transitions, yet not make the actual transition points too different from the nominal threshold value.

In a given embodiment, there may be zero or more network interfaces, such as the network interface218(FIG. 4) of one or more types. The specific type(s) of network interfaces utilized in an SPD do not necessarily imply a specific network behavior, and may include technologies such as, but not limited to, wired interfaces (RS-232, RS-485, USB, Ethernet, FDDI, Fiber Channel, or any other wire or cable-based protocol, standard or proprietary) and wireless interfaces (Bluetooth, Zigbee, IrDA, UWB, Wi-Fi, GPRS, GSM, CDMA, or any other wireless protocol, standard or proprietary).

As illustrated inFIG. 9, typically each network interface includes the following hardware and software layers, as defined by the classic OSI networking reference model: physical layer610(such as RS-232, 100BaseT, T1 and radio), link layer612(such as Ethernet, FDDI, Wi-Fi and HDLC), network layer614(such as IP, IPX and similar protocols), transport layer616(such as TCP, UDP, RTP and SMB). Higher layers, such as session layer618, presentation layer620and application layer622, may be viewed as part of the client software, so are not discussed as part of the network interface itself.

In many embodiments, one of the key attributes of the network interface may be its operation on an extremely low power budget. This is discussed further below.

Numerous issues may affect power usage in an implementation of the network interface, including range requirements, the amount of power consumed per unit of time, the amount of power consumed per bit conveyed, and any needed networking layer overhead from the associated network interface software stack and its impact on the power consumed in generating, transmitting, receiving, and processing that overhead.

In general, the power consumption of a communication subsystem increases with the amount of data communicated and the distance that the communications traverse. Similarly, a low-bit-rate communications system may generally be designed to consume less power per unit of operating time than a high-bit-rate system, but may have a higher cost per bit communicated. Finally, communication subsystems based on newer, specialized, and/or proprietary communications protocols often consume less power for a given transmission distance or bit rate than existing, general-purpose, and/or standardized protocols.

Keeping in mind these general characteristics, the design, implementation, and usage of each network interface for a particular embodiment of an SPD may have various constraints including (but not limited to): The need for wireless vs. wired operation. The distance required for data transmission. The volume of data to be transferred for the SPD application. The sensitivity of the application to data stream latency. The frequency of communications needed to meet protocol requirements. Any compatibility requirements with installed network infrastructure. The average power available to the network interface subsystem. The tolerable cost and/or size of the subsystem.

Several methods to reduce average power in the network interface subsystem are described here. Embodiments of the SPD may use one, many, all, or none of these methods and strategies. Some strategies outlined are applicable to any network interface technology while others are applicable only to one or some network interface technologies.

One class of radio computer network technology is based on the IEEE 802.11 set of standards, commonly referred to as “Wi-Fi”. Versions of this standard support various transmission distances and bit rates, and existing equipment may support more than one version simultaneously. In an exemplary embodiment, therefore, the SPD may be used with one or more IEEE 802.11 “Wi-Fi” Protocols. Implementation in embodiments that support a compatible version of Wi-Fi may typically not require installation of an additional wireless access point(s) in the external computer network. Instead, an existing, i.e., an already-installed, access point(s) may typically be used. In some cases, the access point functionality may already be incorporated into the remote device(s), such as computer devices104(FIG. 1), with which the SPD(s)102(FIG. 1) communicate.

An additional advantage of using a Wi-Fi radio is that the components needed to implement the radio are often readily available, physically small, and relatively inexpensive. The Wi-Fi data rate may also be high enough for most SPD applications. However, the existing component sets may consume relatively large amounts of power, even when not transmitting. Thus, in some embodiments, various schemes to dramatically reduce the power consumption of the Wi-Fi radio may be employed.

In some embodiments, the SPD includes sleep modes and/or duty-cycle control. Selectively shutting down or turning off some or all of circuits in the physical-layer networking subsystems may offer the ability to reduce power consumption. These features are typically referred to as “sleep modes”. The duty cycle of such subsystems is the ratio of the time the subsystem spends in the “on” or “awake” state compared with the total time. Assuming the higher-layer protocols and/or applications may tolerate it, adjusting the duty-cycle of the network interface may allow the controller to reduce power consumption of the subsystem without requiring additional external hardware and/or reconfiguration of the device.

For some network interface technologies, a high-rate of power consumption when active may be more than offset by the low power consumption from remaining in sleep mode the majority of the time and powering the subsystem for the minimum time necessary to affect communication. Thus, for a given amount of data to be transferred, some implementations of the network interface may have a high power-per-unit-of-time cost but may still be efficient in the cost of the power per bit communicated.

This approach accepts a high power draw for short periods of time because it seeks to optimize the power per bit communicated through the network interface. It is possible for such an implementation to consume less average power than an implementation using a low-bit-rate protocol because the network interface may spend substantially less time powered on even though the network interface is drawing more power when it is powered on.

Often, it is not known beforehand when a message must be sent from an SPD to a remote device such as one of the computer devices104(FIG. 1) and vice-versa. In particular, if the network interface in an embodiment is operated with duty-cycle control (as described above and further below) then its transceiver spends some of its time active, and some of its time disabled in a sleep mode. If a message is to be properly communicated, the transmitting device must be enabled and the receiving device must likewise be enabled in order to detect the message and properly receive it.

When there are no power consumption constraints, the transceiver circuits in each device may be left enabled all of the time. In some embodiments, however, there may be power consumption constraints, so it may be desirable to use duty-cycle control as a power management technique. To ensure that message communication may occur reliably under these conditions, the duty cycles between the transmitting and receiving devices need to be aligned such that the transceivers are enabled in each device at the same time.

By using periodic communication windows, the duty-cycle alignment may be achieved through synchronization. This assures that the transmitter in the sending device and the receiver in the receiving device are enabled at the same time. This is illustrated inFIG. 10, in which (a) transceivers are enabled just prior to the communication time window, (b) communication occurs, often lasting just long enough to initiate a session (seeFIG. 9) that will span numerous enable periods, and (c) each SPD shuts down its transceiver as soon as it can, but no later than after some limited period of time.

In some embodiments, therefore, periodic transceiver enabling is used. Different network interface protocols may support such enabling. For example, a sparsely populated Wi-Fi network may be used in conjunction with a periodic beacon signal having an appropriate rate. The periodic beacon signal may be adjustable. The periodic beacon signal notifies some or all radio NICs (the Wi-Fi nomenclature for a remote node versus an access point) of its presence, timestamp, supported rates, capabilities, and an indication of any traffic waiting to be transmitted (TIM). In concert with the beacon signal, a Wi-Fi NIC may be kept in sleep mode for an interval just short of the beacon signal interval, and then be automatically woken-up in time to receive the beacon signal. The NIC may then determine if there is any traffic queued up for it to receive, and then receive the traffic (if any). It may then send the pending items it has queued for transmission (if any) and then go to sleep again until the next beacon signal interval.

In some embodiments, to reduce the power consumed by a Wi-Fi radio subsystem that uses commercially-available chip sets, yet still maintain an adequate communications bit-rate, the radio may be kept in a low-power “off” or “standby” mode as much as possible. In some embodiments, the standby mode may be used the majority of the time. One way to do this is to take advantage of Wi-Fi's beacon feature, described above, whereby the Wi-Fi access point associated with an SPD periodically polls the SPD (and any other associated remote Wi-Fi devices the access point is aware of) at regular pre-set intervals. The beacon signal interval may often be set at once per 100 ms (although a different interval may instead be configured in the access point). By monitoring the beacon signal activity, the SPD determines the beacon signal period. Thus, the SPD knows when the next beacon signal will occur, thus when it must awaken to receive the next beacon signal.

By placing the SPD's radio in a low-power “off” or “standby” mode until just before the beacon signal arrives, the SPD's controller may ensure that the SPD radio is active during the beacon signal time so as to transfer any data to or from the access point, and then return the radio to its low-power state as soon as the data transfer is complete. Assuming the beacon signal interval is not set to be unreasonably short, this strategy may allow the SPD radio to spend the large majority of its time in a very low power state yet still maintain sufficiently low transmission latencies and adequate data throughput to support typical SPD operation.

Some techniques used to reduce power consumption in the network may benefit from having an SPD synchronized in some way with one or more other nodes and/or access points in the network. If all nodes and/or access points participating in the communications exchange are synchronized then they will know when to enable their transceivers for periodic communications.

In one embodiment, synchronization may be achieved using the Network Time Protocol (NTP) that is typically available in computer networks that adhere to the Internet Protocol (IP) set of standards. By utilizing the NTP facilities available in the network, an SPD and other nodes may accurately determine the time of day and, from this information, facilitate their periodic communications.

In another embodiment, synchronization may be achieved by leaving the SPD's network interface receiver enabled long enough to receive several periodic transmissions. By observing the periodicity of the transmissions, the SPD may then enter a sleep state between the periodic transmissions, gradually increasing the length of the intervening sleep states until the duty cycle of the network interface is low enough to achieve the desired power savings but high enough to ensure sufficient probability of being awake during the periodic transmissions.

Moreover, standardized communications between computers typically operate in layers. However, additional layers increase overhead costs that negatively impact efficiency, as measured in terms of payload data communicated per unit of energy and/or power consumed. Coalescing messages is a systems approach to efficiency, and allows for communications to be optimized by having additional knowledge about the communicating devices and/or the protocols they are using to communicate.

In a typical embodiment, messages for various purposes flow between the SPD and one or more remote device(s). In the event that more than one such message is going to the same remote device, it may be possible to examine the pending messages destined for that remote device and combine the messages into a form of multi-block message so that layering overheads are minimized.

Combining or coalescing messages may be combined with periodic transceiver enabling and duty-cycle control to create a natural collection or “queuing” point in time where opportunities for combining the messages prior to communication may be found.

Most messages to and from an SPD may be categorized into various classes. Attention messages include a message from a client node on the network requesting information or service from a server node. Information messages include a message to or from an SPD containing information. This message may be in response to an Attention Message and/or may contain unsolicited information. Ack/Nak Messages include a message to or from an SPD indicating that a previous message is being acknowledged, or negatively acknowledged.

In an exemplary embodiment of coalescing, an information block consisting of 1000 bytes in total of data is to be sent from a remote device to an SPD. Even though the 1000 bytes are to be sent from the same remote device to the same SPD, because of the way the information block is typically created using modern software methods, it is often sent as a series of smaller messages, each consisting of 50 to 100 bytes of payload data. Each message, if sent individually over Ethernet, typically may have a wrapper that includes the UDP header, the IP header, and the 802.3 header, plus the preamble. In total, this may double the number of bits transmitted in each message, as compared with just the bits in the payload data. Therefore, coalescing these messages into a multi-block message may require a frame to indicate the coalescing behavior (perhaps 4 bytes) and an additional approximately 2 bytes per block of data to demarcate each sub-block for later extraction. This multi-block message may still have the UDP header, the IP header, the 802.3 header, and the preamble, but only one for each of these, thus requiring approximately one tenth the overhead necessary as compared with no coalescing of the information.

Communicating a message from one computer to another generally involves some form of acknowledgment (positive or negative) that the message was seen, acted on, or otherwise processed. When an SPD sends a message to a remote device, the time that the SPD spends waiting for acknowledgment to return from the remote device may often be time that the SPD is waiting with its network interface and/or other subsystems powered on. Minimizing the time waiting for the return Ack/Nak Message minimizes the overall time that the SPD subsystems remain powered on, thus reducing the average power consumption of the SPD.

There are a variety of ways such latency may be reduced or minimized, including: Arrange for the remote device to acknowledge a message immediately upon its receipt by the remote device, and not to wait for the message to be fully processed and/or any message-requested action to be completed. Arrange for the remote device to acknowledge a message as a high-priority task in its internal task-scheduling algorithm. Allow the remote device to coalesce the Ack/Nak Messages it needs to return to an SPD and then let the SPD “decoalesce” them upon receipt for distribution to the SPD's internal sending entities. The coalescing of Ack/Nak Messages by the remote device may be performed separately for each SPD that is communicating with the remote device. Process the messages where the sender is awaiting a response preferentially over other message types. Some, all, or none of the above methods may be used in an SPD and/or remote device implementation in order to reduce the power consumption and/or otherwise increase the operating efficiency of an SPD.

In applications where a remote server is handling information for multiple requesting SPDs, there may arise cases where some SPDs have a lower average power budget than others. In such cases, the scheduling of resources when dealing with multiple SPDs simultaneously may favor those with lower power budgets to minimize the impact of latency on their power budgets.

In the case of multiple SPDs requesting communication in an environment using periodic transceiver enabling, one technique to optimize power consumption includes a coordinating element (such as the server handling the requests) giving preferential permission to communicate to the energy-poor SPD(s) ahead of the energy-rich SPD(s) during the period of permitted communication. The energy-poor SPD(s) may then disable their network interfaces(s) and/or other subsystems sooner, better conserving their less-abundant power than the energy-rich SPDs. This approach is illustrated inFIG. 11, in which (d) transceivers are enabled just prior to the communication time window, (e) numerous SPDs vie for the ability to communicate so that a coordinating element (such as a server) utilizes a token scheme to control which SPDs communicate thereby allowing energy-poor nodes to communicate preferentially in order to allow them to disable their transceivers sooner and save power, and (f) each SPD shuts down its transceiver as soon as it can, but no later than after some predetermined and limited period of time.

In the case of multiple SPDs requesting service from a remote device, another technique to optimize power consumption includes the server preferentially servicing the power-poor SPD(s) ahead of the energy-rich SPD(s) if requests from more than one SPD are pending completion at the server. Minimizing the response time to the energy-poor SPDs may help them conserve their less-abundant power by allowing them to place their network interface(s) and/or other subsystems in a sleep mode sooner at the expense of more energy-rich SPDs.

As a refinement on the ideas of periodic transceiver enable and duty-cycle power management, pseudo-time slot allocation may be used. This technique recognizes that multiple SPDs operating in a network or ecosystem may experience contention in communicating, especially to a central point such as a Wi-Fi access point and/or a server. This technique allows each client SPD to attempt to exercise its periodic communications during the same periodic interval but each in a time slot that occurs at a different, pre-assigned phase within the periodic interval. Just prior to the periodic communications interval, the master/server node may queue up time slot assignment messages, one destined to each client SPD, indicating when the SPD may exercise its right to communicate within the periodic interval. Alternatively, another method of assigning time slots may be used as long as only one client SPD is assigned a particular time slot or as long as there is an effective way to handle time-slot conflict issues.

At the beginning of the periodic interval, all SPDs accept one (or a small number of) message(s) to allow the time slot assignment message to be received. Alternatively, this part of the protocol may be eliminated if the time slots have already been assigned through some other method. If the assigned time slot for an SPD has not yet arrived, the SPD may place its network interface and/or other subsystems in a sleep state (if they are not already in such a state) and reawaken them just before the time slot arrives. When the assigned time slot does arrive, the appropriate SPD may then transfer any pending messages with the master/server node.

The method(s) used to assign the order of the time slots may use any number of algorithms or procedures, such as pseudo-random, round-robin, fairness, and other algorithms known to those skilled in the art, and may also offer the most energy-poor SPD in the ecosystem the first right to communicate, followed by the next-most-energy-poor SPD, and so on in an orderly progression. The scheduling algorithms may take advantage of information such as the energy available to the SPD, the estimated energy it may need to communicate, its communications bandwidth and/or latency requirements, how often it has communicated in the past, and/or other relevant information.

In a communications system between computers that implement an application having a predefined function, blocks of information are typically communicated repeatedly, and the contents of some of the blocks may often be known beforehand. For a communications subsystem where every communicated bit represents another reduction in the available power, replacing large blocks of this type with reference tags may reduce the number of bits that must be exchanged to accomplish a given functionality. Receipt of a particular reference tag may indicate to the receiving device that it may replace the reference tag with the associated block of information.

In an exemplary embodiment, an SPD is used to display a calendar. A calendar view may be represented by a series of visual “planes”. Each plane may represent something either new to a day's calendar entry or something that does not change from one day to the next. The unchanging elements may be considered background planes that may be stored in the SPD memory and referenced by a symbolic name (a reference tag) that is shorter than the image they represent. Typically, when displaying a calendar, the elements that must change regularly from one day's view to the next are few and are generally the label for each block of allocated time. All other items may effectively be referred to by the reference tag, effectively reducing the number of bits that must be transmitted to display the calendar view.

An enhancement to traditional static distillation (as described further below) is a process of dynamic distillation of repeated blocks. In this dynamic process, a server (either an SPD or a remote device) may associate a block of information represented by a reference tag “on the fly”. After establishing the meaning of the reference tag with the client (either a remote device or an SPD), the server thereafter utilizes the tag to communicate the intended information in a more cost-effective manner than communicating the information itself.

In an exemplary embodiment, an SPD is used to display a calendar. Consider a block of time on the calendar with a label describing that block of time. If the total calendar time was 8 hours and the label applied to a 30 minute interval, the label describing that time frame may typically be transmitted to the SPD, in full, approximately 16 times. Conversely, sending a single message to define the label image along with its reference tag may allow use of just the tag in all subsequent communications, thus reducing the amount of information transmitted (and possibly stored).

As discussed previously, it is often the case that proprietary and/or shorter range communication protocols may operate on less power than standard and/or longer-range protocols. In addition, it is possible for the different SPDs in a network or ecosystem to have vastly different power budgets due to available energy conditions, opportunity for wired operations, or other factors. In such cases, a gateway/peer-forwarding behavior may be implemented that utilizes SPD power reserves as a link-cost metric. Combined with routing behaviors among SPDs in an ecosystem, such a routing algorithm may provide the optimal communications path by allowing the energy-rich SPD or SPDs to operate as gateway nodes to other parts of the network.

In an exemplary embodiment, a Wi-Fi transceiver and a very-low-power radio transceiver are provided as network interfaces in each of several SPDs in a network. The SPDs communicate with each other and with a non-SPD remote device. The Wi-Fi network interface has a power-per-bit-communicated cost of transceiver operation that is many times what the same bit costs to communicate over the very-low-power radio link. Furthermore, at least one of the SPDs may have an abundant energy source. In such a case, the SPD that has abundant energy may be selected to communicate through its Wi-Fi network interface to the remote device, forwarding messages to and from the other SPDs through its very-low-power radio link. The other SPDs, which may have relatively scarce energy sources, may therefore communicate through their very-low-power radio links, and, therefore, reduce the power consumed for communications.

In addition, some embodiments of the SPD contain software and/or hardware mechanisms to aid in the placement of an entire SPD and/or access point. These mechanisms may be utilized in order to maximize the quality of the wireless networking signal in order to improve communications bandwidth, to reduce the communications error rate, and/or to reduce the power consumed for communications. For example, in some embodiments, the SPD includes a mechanism that displays an indication or emits an audible tone that varies proportionally with and/or is representative of the quality of the communications signals to aid in the placement of the SPD and/or access point.

In addition to (or instead of) optimizing the placement of SPD nodes and/or access points, the existing placements may be utilized along with a mechanism to additionally take advantage of the nodes and/or access points with better placements. As an extension to the concept of gateway operations for wireless networks (described further below), the SPD may dynamically or statically select which SPD and/or access point is to be used as the gateway for the others based on a combination of SPD energy reserves and/or communications signal strength.

In an exemplary embodiment, obstructions may sometimes severely influence the signal strength seen by a wireless node on a network. Moving the antenna, emitter and/or detector for an access point or SPD by a few feet may make dramatic differences in signal strength. Treatment of a group of SPDs as a system and selecting the SPD(s) with the best signal strength to operate as the gateways for the group of SPDs may allow for higher communications quality and/or lower communications power.

In some embodiments, another method to reduce the power consumption of an SPD wireless radio subsystem is to turn the radio on briefly after a period of “off” time, such as once every 10 or 100 seconds. Assuming the “on” time during this period is kept to 10 or a few 10s of milliseconds (or less), this may result in a sufficiently low average power such that even low-cost, readily-available wireless protocol (such as Wi-Fi) chip sets may be used in SPDs with extremely tight power constraints. The ratio of “on” time to “off” time and the corresponding ratio of “on” power to “off” power determines the average power consumption of the SPD's communications subsystem. Thus, the “off” time may be chosen to achieve a particular low average power consumption given a minimum “on” time to complete the wireless protocol steps needed to send and/or receive a complete message, the “off” time may be chosen to be appropriately long.

One difficulty with this approach may be in keeping the access point (or other centralized wireless protocol device) from concluding that the remote wireless protocol device (in this case, the SPD) has left the wireless network. If the access point has concluded that the SPD has left the network and then subsequently the SPD attempts to reestablish communications with the access point, this may require the SPD to go through a complete wireless protocol “rejoin” procedure each time the SPD wanted to have data wirelessly transferred. By convincing the access point that the SPD has been subject to a temporary interference with its transmission signal, the communications may be reestablished without requiring the more involved, time-consuming, and power-consuming “rejoin” procedure. Various schemes known to those skilled in the art may be used to convince the access point that the SPD has not left the wireless network, even if the SPD has not communicated for many seconds.

Some embodiments may have a minimum amount of user input/output (I/O) functionality for setting basic operating parameters. In some embodiments, even this minimum amount of user I/O functionality may be unnecessary for normal operation and this I/O may be made inaccessible after initial deployment of the device.

In some embodiments, one or more SPDs may include a single-indicator display. A variety of power-saving techniques may be applied to a single-indicator display. These include (but are not limited to): Applying intermittent power to the indicator at a high-enough frequency such that it appears to be on continuously when viewed by the human eye. This frequency may be in the range of 60 cycles per second or greater. In concert with intermittently powering the single indicator, adjust the duty cycle of the power circuit for the indicator such that the indicator is powered for substantially less than 100% of each cycle. This technique relies on the human eye's propensity to integrate the light that it receives in such a way that a rapidly-pulsing indicator may appear to be on continuously if the frequency of pulsation is high enough, and also that the eye will tend to overestimate the width of the pulses such that the indicator will appear brighter than the duty cycle may otherwise suggest.

Also in some embodiments, one or more SPDs may include a simple numeric or alpha-numeric display. A variety of power saving techniques, such as those described above, may be used with these types of displays.

In some embodiments, one or more SPDs may include a pixeled display. A variety of power-saving techniques may be applied to pixeled displays. These include (but are not limited to): Application of sleep modes based on scheduled “night” periods. Leaving the display in sleep mode until user proximity is automatically detected and/or the user otherwise triggers active operation of the display. Requiring an explicit user trigger for high-power-drain items such as backlights.

Depending on the application being served by the SPD, numerous forms of sensors may be utilized in an SPD embodiment. Sensors with implications for power management or other unique purposes are described below, but any form of sensor operable within the SPD's power budget, size restrictions, product cost, and/or other constraints may be supported.

In some embodiments, one or more SPDs may include a passive infra-red (PIR) device or some other mechanism to effect proximity detection of personnel. Their application in an SPD embodiment for display of information may alter the behavior of the SPD to minimize power consumption. For example, driving or updating an LCD display consumes power that may be reduced or eliminated by suppressing updates to the display and/or shutting down the display if no one is present to observe the content of the display.

In some embodiments, one or more SPDs may include a photo-detector, since the presence of light may be an indicator of current or pending activity. In one embodiment, to display information, the absence of light may also indicate it may be prudent to enter a power-down state. The SPD may also inform a central monitoring point that insufficient light is present in an area that is intended to be lit for security, safety, aesthetic, or other reasons.

A variety of methods and strategies may be used to reduce power in the controller. Some embodiments of the SPD may use one, many, all, or none of these methods and strategies.

In some embodiments, operating power is reduced during periods of inactivity. Often times the controller's periodic tasks may be arranged such that they are completed in a burst of activity followed by a period of inactivity until the periodic tasks again need to be performed. As long as these periods of activity and inactivity are kept relatively short and frequent, it may appear to the rest of the SPD that the controller is performing these tasks continuously, albeit at a slower rate.

In some embodiments, the controller may be designed to “sleep” during the periods of inactivity, and “wake up” in response to some stimulus, change of state, and/or elapsed time. This may be useful when the power consumption of the controller during sleep is lower than when it is awake. The average power consumption for the controller operating in this way may be less than if it were awake all of the time.

Some techniques to reduce power in the controller during periods of inactivity include running the controller's internal circuitry at a lower frequency and/or lower voltage than when it is fully awake, executing fewer instructions per unit time than when it is fully awake, and selectively disabling some or all of the functions within the controller.

In some embodiments, operating power may be reduced during periods of reduced activity. For example, the controller may have several different reduced-power modes of operation, as compared with its full-power, full-operation mode. Often, only a subset of the full capabilities of the controller is needed at any particular time. In this case, some of the functions of the controller may be unused except during specific times and may be disabled the rest of the time to reduce average power consumption. Additionally, some of the functions within the controller may be needed but only at a slower operating rate so operating them at a lower frequency may reduce average power consumption. Continuously adjusting the operating frequency of one or more subsystems to better match the needed performance at any particular time may also reduce the controller's average power consumption. By automatically selecting the appropriate low-power operating mode appropriate for the tasks it needs to perform at any particular period of time, the controller may reduce its average power consumption while still allowing the SPD to operate acceptably well.

In some embodiments, operating power is reduced by running at a lower or lowest voltage. Often, the circuitry that may be used to implement a particular controller embodiment is specified to operate properly over a range of voltages. Typically, the lowest power consumption is achieved at the lowest supply voltage. In some embodiments, the maximum frequency of guaranteed operation is reduced when the supply voltage is reduced, even if the supply voltage remains within the specified operating range. Also, in some embodiments, certain functions of the controller may be guaranteed to operate only at a higher minimum voltage than the minimum voltage required by other functions.

By allowing the operating voltage of the controller to be varied, some embodiments may have the controller select its operating voltage based on the frequency at which it needs to operate and/or which functions it needs to use during any particular period of time. Using this technique, the average power consumption of the controller may be lower than if the controller were to be operated at the highest minimum guaranteed operating voltage of all of its frequencies and functions.

In some embodiments of the SPD, updating the controller's non-volatile program and/or data memory may allow the controller to maintain the contents of its memory after a loss of power. In some cases, these non-volatile memory circuits require a higher operating voltage during update operations than during read operations. Allowing the controller to adjust the operating voltage of the non-volatile memory subsystem, such that it is operated at the higher voltage only during update operations, and operated at the lower voltage during read operations, may reduce the average power consumption of some embodiments of the SPD.

In some embodiments, the total extra power consumption needed in the controller when the higher voltage is used for writing to non-volatile memory circuits may be further reduced by grouping together the non-volatile-memory update operations. The “overhead” time spent raising and lowering the voltage may, therefore, be shared among multiple update operations. This means that for a given set of update operations, the time (and excess power) spent on most of the “overhead” may be eliminated.

A variety of methods may be used to initialize the SPD operating parameters. One method that may be used is through the inclusion of a USB port or similar serial interface for initial configuration and/or initial power charge of the SPD and to use a laptop or computer that is able to directly operate at the MAC layer of the Wi-Fi protocol to set up the higher layer operations. In many environments where the SPD is operating, the DHCP protocol is often available, so the IP address(es) may be obtained automatically. In environments where the DHCP protocol is not available or is otherwise inappropriate to be used, the IP address(es) and other relevant operating parameters may be allocated manually.

Some embodiments include a button on the back of the SPD that invokes the display of the IP address momentarily. With the IP address known, a configuration utility downloadable from a web site or other convenient location may be used to configure the operating behaviors of the SPD. Alternatively, for embodiments in which the SPD includes touch-screen capability, triggering a configuration mode may lead to a series of menu queries that may adequately drive initial configurations.

For some of SPD applications, compromise of the host network by the SPD is typically not possible due to the limited network interface power budget and/or lack of standard higher-layer protocols that will be present on the device. For example, in many SPD embodiments, there will not typically be support for TCP operations. The SPD functional behaviors, therefore, will be governed by an entirely proprietary message set. In some embodiments, however, passwords and/or other means may be used to limit access to the SPD to authorized personnel and/or designated remote device(s).

Referring toFIG. 12, a method (or process)700is shown. The method700illustrates an example of a low power activation signal monitoring process. The method700generally comprises a step (or state)702, a step (or state)704, a decision step (or state)706, a step (or state)708, a step (or state)710, a step (or state)712, a decision step (or state)714, and a step (or state)716. The step702may start a low power mode cycle (or process). Next, the step704may collect and store energy. Next, the step706may determine the amount of energy needed for the predicted power usage. If there is not enough energy stored, the method700moves to the step708. To reduce power usage, the step708may slow down an internal clock to the CPU202aand/or may lower the operating voltage. If there is enough energy for the predicted power needs, the method700moves to the step710. The step710senses one or more activation signals. If an activation signal is present, such as a signal received from the step712, the decision step714determines if an activation condition has been met. If not, the method700moves back to the step702. If an activation condition has been met, the method700moves to the step716. The step716starts a data collection mode (to be described in more detail in connection withFIG. 13).

Referring toFIG. 13, a method (or process)800is shown. The method800illustrates an example of a power-aware data collection process. The method800comprises a step (or state)802, a step (or state)804, a decision step (or state)806, a step (or state)808, a step (or state)810, a step (or state)812, a step (or state)814, a step (or state)816, and a step (or state)818. The step802starts the data collection mode cycle. Next, the step804collects and stores energy. Next, the step806determines if enough energy has been stored to perform a minimum predicted operation based on the predicted power needs. If not, the method800moves to the step808. The step808may perform a number of prioritization rules based on a power budget. For example, the step808may activate/deactivate one or more components, adjust the duty cycle and/or timing interval, adjust a voltage on the components or other power saving parameters (or rules). If there is enough energy stored for the predicted power needs, the method800moves to the state810. The decision state810determines if the conditions are still met to remain in the data collection mode. If not, the method800moves to the state812, which returns to the lower power mode. If the conditions are still met, the method800moves to the state814. The state814stores and processes sensor data. Next, the decision state816determines if the communication conditions have been met. If not, the method800moves back to the state802. If the communication conditions have been met, the method800moves to the state818. The state818starts the communication mode (to be described in more detail in connection withFIG. 14).

Referring toFIG. 14, a method (or process)900is shown. The method illustrates a power-aware communications mode. The method900generally comprises a step (or state)902, a step (or state)904, a step (or state)906, a step (or state)908, a decision step (or state)910, a decision step (or state)912, a step (or state)914, a step (or state)916, and a step (or state)918. The state902starts the communication mode. Next, the state904activates the radio (or wireless transceiver). Next, the state906adjusts the broadcast power of the radio based on a power budget, interference levels, and/or communication prioritization rules. Next, the method900moves to the state908. The state908sends collected data. Next, the decision state910determines if an acknowledgment has been received. If not, the method900moves to the decision state912. The decision state912determines if the data received is priority data. Priority data may be considered data that may break low power operation rules. If so, the method900moves back to the state906. If the data is not priority data, the method900moves to the state914. In the decision state910, if an acknowledgment has been received, the method900moves to the state914. In the state914, the method900receives instructions related to predicted power needs, activation condition rules, and/or communication rules. Next, the method900moves to the state916, which sends an acknowledgment. Next the state918returns to the data collection mode (e.g., the process800).

The controller in the SPD may maintain the physical and logical address of the SPD. A default set of these addresses may be pre-programmed when the SPD is manufactured. If necessary, some or all of these addresses may be set or changed when the SPD is initially deployed and/or changed while the SPD is operational.

In the event that the SPD is deployed in a network that does not broadcast its security information, the network interface access codes will need to be entered as part of the initial configuration of the SPD.

The issues of privacy and encryption are of concern when there is a need for protection of information communicated across an open network interface. This need may be addressed in a number of ways with respect to SPD communications with a remote device, including: Information communicated across the external computer network may be sent in a proprietary format, minimizing the risk of casual observance through the use of a network “sniffer” or similar device. Standard encryption techniques may be applied to communications across the external computer network for even more robust privacy and protection against unauthorized observation.

In embodiments that include communication with the remote device(s), this communication typically takes place through the external computer network. Some embodiments of the SPD may contain one or more network interfaces that implement a wireless communications protocol. The wireless protocol may be a standard, commonly-deployed technology, such as “Wi-Fi” (IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, etc.), or the protocol may be a specialized one particularly tailored to the low-power transmission distance, and/or other needs of the SPD and/or its application. Combinations of different network interface types are also possible, allowing for gateway operations where applicable.

Regardless of the type of wireless protocol, one (or more) devices in the external computer network typically provide the wireless connection to the overall external computer network. Whether the external computer network is inherently wireless or a hybrid of wired and wireless networking technologies, the device that operates as the intermediary to provide the connection is often referred to as a wireless access point. In some cases, the wireless access point may be built into a node on the network, and/or may be part of one or more remote device(s). In some cases, the wireless access point may be a device dedicated to bridging the wireless network to a wired network. In some cases, the remote device may use a built-in wireless interface to directly communicate to the SPD (in Wi-Fi nomenclature, this is known as “ad-hoc” operation mode).

The wireless access point used by the SPD may be a standard commercially-available device that is typically used with other standard wireless products or the access point may be a specialized device whose wireless port may be used only with the SPD. The access point may be configured to support one or more SPDs, one or more other commercially-available wireless products, or any combination of these. In most cases, the function of the access point for the SPD may be to convert the wireless messages from the SPD to the wired networking protocol used by the external computer network and vice-versa.

A role of the external computer network when used with the SPD is typically to transfer messages from the SPD to the remote device(s) and vice-versa. In many cases, it is expected that standard, already-installed computer networks may be used for this function. Therefore, the SPD may typically be operated such that its messages may be easily converted by the existing wireless access point(s) for carriage across the computer network.

Typically, the SPD does not require any protocol changes in the wired part of the external computer network and in some cases, requires no special protocol changes for the wireless portion either. SPD messages may therefore be constructed, formatted, and addressed for easy transport across the external computer network to the remote device(s), and vice-versa.

In cases where proprietary communication methods are used between SPDs, a gateway function may exist either among the SPDs or in a special-purpose device co-located with the SPDs but connected to the external computer network via a standards-oriented wired or wireless means.

Once the network connectivity has been established between the SPD and the remote device(s), they may typically communicate with each other using the standard messaging format and protocol(s) used in the external computer network. Each SPD may have a unique network address, or other means to be addressed uniquely, and likewise, each remote device may have a unique network address, or a means to be addressed uniquely. Properly-addressed messages may be sent across the external computer network by both the SPD(s) and the remote device(s) using the existing networking mechanisms.

Referring toFIG. 15, a context diagram of a system1000showing wireless signal configurations is shown. The memory204amay contain instructions outlining a set of threshold conditions for storing sensed data (e.g., the process800). The memory204amay also contain instructions outlining a set of threshold conditions for transmitting sensed data (e.g., the process900). The instructions for storing and/or transmitting data may be based on a power budget and/or available power. The instructions may contain computational logic for computing a threshold condition based on one or more types of sensed data and/or one or more data points over time. A beacon1002is shown connected between the network computing services block174and the wireless sensing device102. The beacon1002may be used to send a signal from the network computing device174to the sensor node102. The beacon1002may send a signal to wake up the node102, or to prepare the node102to receive new instructions, etc. A software agent block1010ais shown in the mobile computing device170a. Similarly, a software agent block1010nis shown in the computing device170n. A software agent block1020is shown in the network computing services block174. The software processing may be distributed between the mobile computing devices170a-170nand the network computing services block174. A network data services block1040is shown connected to the network computing services block174. The network data services block shows a number of classifications of network data services1050a-1050n.

In one example, the computational logic may include a cascade (e.g., one or more) of threshold conditions that may be used to determine when additional features of the sensor node102will be powered on or powered off. For example, when the sensor node102determines that one of the sensors (e.g., a sensor A) detects a signal over a determined threshold, then one or more other sensors (e.g., a sensor B and/or a sensor C) may be activated. In another example, when the sensor node102determines that the sensor B in combination with the node C are below a threshold, then the sensors B and C may be turned off. In such an example, one of the sensors160a-160nmay be awake (or operational) continuously. Other sensors160a-160nmay only be powered on when the sensor node102determines that monitoring is needed (e.g., by the continuously operated one of the sensors160a-160n). Other input parameters may be uploaded by the mobile computing device170to the sensor node102. Such parameters may include a schedule of when sensor data should be captured and/or stored.

The computational logic cascade may implement a power-aware prioritization of sensor data capture and/or communications information. For example, when power stored in the ESU circuit214ais low, the duty cycle of the sensor node102may be changed less frequently. In one example, the logic may only receive signals from the sensors160a-160bwhen power is sufficient.

The computational logic may include logic for coalescing data, such as only recording changes to a base state or expected state. A computationally efficient process may be implemented. For example, a process that only records the average value of one or more of the sensors160a-160nover a period of time may be used. The sensor102may begin to record events if a measurement received from the sensors160a-160nis significantly above average.

Since the sensor nodes102a-102nare self-powered (through the energy storage unit214a), the power budget of the sensor nodes102a-102nis generally kept small. By capturing additional energy with the ECU214a, the nodes102a-102nmay operate for long periods of time on a single battery. The energy storage unit214amay be implemented as a battery or other storage device. The energy capture unit214amay store energy through various sources, such as energy created through harvesting of light, vibration, thermal variation, thermal gradient, infrared, chemical, RF sources or some combination.

The computational logic for determining the threshold conditions for storing and/or transmitting data may be based on currently available power, predicted future energy harvesting opportunities (e.g., based on forecasting the future environment), and/or predicted energy consumption (e.g., based on applying the threshold rules to the forecast environment).

A machine learning process that optimizes the predictive model may be set up as a series of energy input functions and/or energy consumption functions with scaling factors that are optimized based on historical data for the sensor nodes102a-102n. Based on prior patterns, the model may operate with techniques of machine learning optimization including, but not limited to, a least square minimization of the difference between model predictions and actual historical data, various gradient descent techniques, etc.

In order to adapt the duty cycle, the sensor sampling rates, the adaptive and conditional powering of additional sensors based on a set of initial sensors, the data storage and data transmission policies of the sensor node102, each energy use in the system150may be characterized as an energy cost function. For example, energy harvesting may be a negative cost, or energy contribution. Each data captured may be characterized as a utility or benefit function. An optimization may be performed to maximize the utility within a set of cost parameters. Alternatively, optimization may be performed to maximize utility per unit of cost.

In one example, the remote computing device170may be a local device on the edge of the network. For example, the remote computing device170may be implemented as a smartphone, or personal digital assistant (PDA) type device, which in turn is connected to the central data storage and computing facility174. In such an implementation, some or all of the computational logic for determining the threshold conditions and/or rules may be implemented on the devices170a-170n. In such an example, only the threshold values (or simplified rules) may need to be transmitted to the sensor nodes102a-102n. In one example, a subset of the processing is done on the sensor nodes102a-102n. If power is not an issue, the devices170a-170nmay capture a more complete stream of data from the local sensor nodes. The data may then be processed and/or be evaluated locally before being sent to a central server on the computers facility174. Such an implementation may reduce network traffic and/or storage needed at the central data center174. The central data center174may send program instructions to one or more of the smartphones170a-170nfor computing threshold conditions. The program instructions may in turn be sent to one of the sensor nodes102a-102n.

Various sources of data may be used to generate energy consumption and/or harvesting predictions. Such sources may include (i) a schedule of upcoming calendar events in the neighborhood of the sensor, (ii) the proximity to or presence of nearby people, objects, buildings, vehicles, (iii) security or threat conditions that increase the importance of sensing, (iv) location-based data (such as features of the location of the sensor), (v) weather forecasts and/or other environmental conditions, (vi) scheduled or location-based energy harvesting opportunities, (vii) presence of increased ambient or directed RF power, (viii) known or observed cycles including day, week, month, season, and/or (ix) other patterns in prior data.

Various energy harvesting technologies may be used in the energy capture unit214a. Examples of such technologies include piezoelectric effects of stress and/or strain, vibration, thermal gradient, thermal variation, solar photovoltaic, ambient light photovoltaic, infrared, radio frequency, chemical energy, air or fluid flow, and electromagnetic fields. Many of these effects are context dependent and may vary with location, time, proximity to other devices or environmental features and other factors. Being able to predict future energy inputs based on the context of the sensor node102may help to determine the current power budget.

In addition to the environmental context, the predicted power inputs and predicted power consumption may take into account various application rules encoded in the control logic of the memory204a. Such inputs may be used to determine the duty cycle sensor node102, the sampling rate of the sensor, the conditional powering of different components, as well as the data storage and/or data transmission policies.

In an example of a security application used to detect intruders, the sensor node102may have a very different predicted power need than the same presence or proximity sensor node102used to optimize lighting and heating based on building or room usage. The security application may consume power when an office is closed. The lighting and heating application may need to be active during the scheduled office hours. The energy harvesting opportunities may also be different. The security application may need to store enough power during the day to last throughout the night. The office energy application may be able to harvest enough energy during the day to meet most needs. The transmission policies for the security application may be immediate during non-office hours. The transmission policy for the energy application may be daily or weekly. In another example, a seismic vibration sensor might have a high sampling rate after an initial threshold event, while a temperature sensor might be needed less frequently. For many applications, a diminishing return on the value of the data occurs at higher sampling rates. The particular value depends on the application.

The predicted power needs and/or harvesting opportunities may be computed through machine learning techniques in which the contribution of environmental features to energy harvesting and energy consumption are learned based on prior observations. For example, consider an application where during a time interval tiand at location l, energy contribution or cost is expressed as a linear relationship between a set of environmental features f and energy the contribution by the following equation:
Δe(ti,l)=a1f1(ti,l)+a2f2(ti,l)+a3f3(ti,l)+a4f4(ti,l)

For environmental factors that cost energy, the scaling factors are negative. For environmental conditions that add to energy harvesting, the factor is positive. The change in energy does not go over the storage capacity of the node. The charge does not generally fall under a threshold without shutting down the sensor node102.

For a time series over all the time intervals, an expression with F being a matrix (where each row is a time interval and each column is a feature) may result in a total energy contribution or drain from environmental factors of
E=F×a

The time intervals before the current time, the actual features and/or energy needs or contributions have already been measured and may be considered the ground truth or training set for a predictive model. The scaling factors may be fit using well known machine learning techniques. The functions describing dependence of the change in energy and features of the environment may first be estimated with known relationships (e.g., such as solar radiation and the contribution to a photovoltaic) so that the machine learning is focused on scaling the relationship to the particular sensor node rather than discovering the relationship in the first place. The sensor node102may be implemented with known components. The energy inputs and/or cost functions of such known components should be related to the technology used. The scaling factors are normally related to the context and/or application.

In order to create the most efficient power management in a wireless sensor network, the machine learning techniques may be trained with data collected on a subset of the sensor nodes and/or for a subset of time. The power budget and/or power predictions may be calculated at a central computer in the network computing services block174for larger calculations. For calculations with fewer features, the power budget may be calculated on the remote computing device170. The results of the optimization of the model may be communicated to the sensor node102in the form of program instructions and/or thresholds.

The optimization of the scaling factors of the predictive model may also take into account the effect of the control logic and the rules currently in use to adapt the duty cycle sensor of the node102, the sensor sampling rate, as well as the data recording and/or transmission policies. The functions that express the relationship between a predicted feature of the environment or context to power consumption can include the rules in the calculation so that the optimization is application-specific.

In some SPD applications, the software agent(s)1010a-1010nrunning on the remote device(s)170a-170nmay be used to communicate with the SPD through the external computer network. In some embodiments, the communication may be automatic, with each interaction triggered by some change of status in the remote device, the SPD, or both. In some embodiments, the communication may be manually initiated by a user of the remote device, such as to change the configuration or other state of the SPD. In some embodiments, both initiation modes may be supported.

Note that in some embodiments, the user directly interacts with the remote device(s), such as with a keyboard and/or mouse and/or display/monitor. In some embodiments, the user interacts indirectly with the remote device(s), such as across a computer network and/or additional communications link.

In some embodiments, communication is automatically initiated by the remote device. Some examples of uses of automatic communication initiated by the remote device may include: The SPD displays a subset of database information: a software agent running on the remote device periodically searches a database resident in the remote device and/or in a computer reachable through the external computer network. The results of the search, possibly along with other relevant information, are formatted by the software agent and are sent to the SPD, especially when those results have changed since the previous update. The SPD displays meeting room information: a software agent running on the remote device monitors the reservations for the meeting room to which the SPD is attached. The software agent may periodically interrogate the networked calendar and/or reservation system (such as Microsoft Outlook, IBM/Lotus Notes, etc.) and send the reservation information, possibly along with other relevant information, to the SPD for display. This application may be useful for general businesses, as well as businesses making rooms available to third parties, such as hotels, convention centers, etc. The SPD displays examination room information in a hospital or doctor's office. A software agent running on the remote device monitors the patient reservations for the room to which the SPD is attached. The information may allow the medical personnel to know who is in the room without having to enter the room and disturb the patient, and without having to find the reservation clerk and ask him/her about the status of the room. The SPD displays news, advertising, and/or market information: a software agent running on the remote device gathers various news, advertising, stock quotes, headlines, or other relevant information from internal and/or external sources (such as from the Internet). The software agent may format the information and periodically sends the formatted information to the SPD for display. The SPD displays pricing or other product status information: the SPD (or a set of SPDs) may be positioned adjacent to its (their) corresponding retail product(s). Each SPD may be used to display up-to-date pricing and/or other product status information in a supermarket, retail store, warehouse, or other locations. The software agent running on the remote device may gather data to be displayed on each SPD from a database or other computer system, and/or from direct user input at the remote device. The SPD is used as a personal display for each employee/user/customer: an SPD may be attached to each employee's cubicle or office, and may be used to display personal information, such as where the employee is presently, if the employee is on vacation, if the employee is available for drop-in conferences, or other employee circumstances. The employee may update the display by sending messages through the software agent running on the remote device, and this information may be sent to the SPD, possibly along with other relevant information, such as scheduling derived from other sources. The SPD displays room status information: an SPD may be placed in a room used by many people, such as an area with several cubicles, a ball room, an auditorium, or other locations. The software agent running on the remote device may gather any messages relevant to that room, such as general notices, announcements, or other messages, and may merge that with relevant local data, such as time, date, the current temperature in the room, and may send the formatted information to the SPD for display. The SPD is used as an annunciator: the SPD may be used to display important real-time information needed by people in the room where the SPD is located. For example, in a technical support or telephone call-center application, the SPD may display the average wait for customers on hold, the number of customers presently being served, whether the wait time is increasing, or other relevant information. The software agent running on the remote device may collect real-time information from the telephone switch and combine that information with other relevant information, such as time of day, recent history, or up time, to generate formatted data to send to the SPD for display. The SPD is used as an actuator: the SPD may contain one or more motors, actuators, electrical contacts, or other similar components which may be used to move or position some external mechanical or electrical apparatus. The SPD may receive a message from the remote device requesting that the mechanical or electrical apparatus be moved, repositioned, turned on, turned off, or otherwise adjusted. Alternatively, the SPD may receive a message requesting the status of the mechanical or electrical apparatus, and the SPD may respond with a message reporting that status.

In some embodiments, communication is automatically initiated by the SPD. Some examples of uses of automatic communication initiated by the SPD may include: The SPD used as a security sensor: the SPD may contains sensors to detect various environmental states, such as temperature, humidity, lighting, motion, vibration, noise, shock, pressure, or other environmental states. For example, in a security application, a small SPD may be attached to a window and used to detect if the window has been opened or broken. If such a stimulus is detected, the SPD may send a message to the remote device for further processing. The SPD may also send non-urgent messages periodically to confirm its continued correct operation and/or that the communication link is still functional. SPD reports its own health status: the SPD may send messages to the remote device to indicate that the SPD continues to operate correctly and/or the communication link is still intact. When the SPD detects an internal problem, such as insufficient input power and/or internal energy storage to continue operation, the SPD may send a message to the remote device to request maintenance service or other appropriate action. When the remote device does not receive a periodic health status message from the SPD, the remote device may conclude that the communications link and/or the SPD have failed, and the remote device may then take an appropriate action. SPD used as a HVAC sensor: the SPD may be used in a heating/ventilation/air-conditioning application, and may sense temperature, humidity, lighting, or other environmental states. The information may be sent to the remote device for further processing with data from other sensors, and the state of the HVAC system may then be sent to the SPD for display, along with current time, date, local temperature, or other relevant information. SPD used as an intercom: the SPD may contain a microphone and speaker, and perhaps “doorbell” and “talk” buttons. The SPD may send a message to the remote device when the “doorbell” button is pushed, and may digitize/decode voice signals for use with the internal microphone and speaker. The digitized voice data may be sent to and from the remote device, or another computer interconnected with the external computer network.

The software agent (SA) running on the remote device(s) may perform a variety of tasks, depending upon the embodiment(s) of the SPD(s) with which it communicates and the intended functionality of the SA and its embodiment(s). SA embodiments typically contain combinations of subprograms which each perform a specific task or set of tasks. For example, some subprograms may be responsible for reading information from a database while other subprograms write to a database. Some subprograms may perform both tasks. SAs that contain both readers and writers may have complex interactions with their corresponding database(s) as well as when communicating with the associated SPD(s).

An example SA application and associated environments that may be used with SPD(s) are described below. Actual embodiments of SAs may implement one, some, all, or none of the following examples.

In an exemplary embodiment, the SA may implement a calendar. This application allows an SPD (or set of SPDs) to be used for resource management, such as for reservation management of a conference room. The SPD(s) used for this application may typically contain a display of some sort that may show resource scheduling information. The SPD(s) may communicate with the remote device(s) running the calendar SA(s), and the calendar SA(s) may typically interact with a separate calendar management program/database, such as Microsoft Outlook or IBM Lotus Notes. Through the interaction with the separate calendar management program/database, the SA(s) may gather the necessary data to send to the SPD(s) for appropriate display of scheduling information, and/or gather the necessary data from the SPD(s) to appropriately update the separate calendar management program/database.

The calendar application may be implemented in a variety of environments. Exemplary environments include small offices using off-site hosted MS-Exchange services, small offices using off-site hosted World Wide Web Distributed Authoring and Versioning or WebDAV services (a set of extensions to the Hypertext Transfer Protocol (HTTP) that allows users to collaboratively edit and manage files on remote web servers), medium-to-large offices using MS-Exchange, and medium-to-large offices using local WebDAV.

For small offices using off-site hosted MS-Exchange,FIG. 16Aillustrates an expected environment for a small office using a hosted MS-Exchange server for their mail services. In, this example, company A may have 3 conference rooms, and computer 2 may be an administrative computer that is running Outlook and the SPD A Software Agent (SA). Note that in this example, multiple companies share a single MS-Exchange server, accessing the server via their internet connection perhaps over SSL or VPN connections through a firewall. Routers, hubs, etc. are assumed to be in the LAN cloud but are omitted for clarity.

The configuration illustrated inFIG. 16Aposes several challenges: Installation/operational simplicity: Small offices often operate with little to no information technology staff available for applications training, management or installation. Exchange server modification avoidance: hosting companies providing MS-Exchange services often resist extensions to shared server platforms. Additional outlook license avoidance: MS-Outlook seat license costs are often high for small offices. As a consequence, they typically have less volume discount and purchasing leverage. Minimizing communications hops: Offsite hosting often creates large, variable latencies in communications to the MS-Exchange server. A variety of software architectures may be used to address these challenges. These are described below.

In some embodiments, installation and operational simplicity are linked as an issue but may be accomplished in several only somewhat-related ways as follows: Software Agents (SAs) may be designed to be installed only on client workstations.

In this way, access to a server machine by an SPD administrator may not be necessary. Two software elements may be used to fulfill the SA behaviors in each of two client workstations: one is an Outlook VBA extension (a version of Visual Basic that is embedded in Outlook) and the other is a separate supporting service. Both software elements may be installed in the same process. As a consequence, decisions about which is needed under what conditions may not be necessary. Delegation may be “hooked” so that the notification of delegate status for a resource managed with an SPD may be provided to the (potentially new) delegate with the option of installing the necessary components to manage the resource. Standard Outlook resource management may be used for creation and management (i.e., delegation) of the resource as a mailbox. This may allow meeting organizers, even for those individuals who are not administrators of the rooms, to use the source when scheduling meetings. Standard Outlook resource management may be used to avoid data collisions or conflicts in accepting resource booking requests. Installation of VBA elements may be largely invisible. To all appearances there may be an additional tool available to manage the SPDs and client software but otherwise it is just standard Outlook for handling the resource. The supporting service may be “fed” information by the Outlook VBA extension in the background on an event-driven basis. This may provide display updates to the SPD, such that no user intervention may be necessary. The supporting service may be a member of a cooperating group of services running on the machines of all resources owners and delegates. SPD communication may be performed only by the currently elected master whose role may be constantly negotiated behind the scenes without administrator input.

In some embodiments, utilization of the Outlook VBA mechanism and a local high-priority software service may allow scheduling and creation of resources without changes to the MS-Exchange server.

In some embodiments, utilization of the Outlook VBA mechanism and the creation of the resources as a resource mailbox may avoid any need for an additional Outlook license.

In some embodiments, utilizing the locally-located workstation of the administrator(s) reduces the latency and communications delays to a best case path over the LAN versus the uncertain path to the MS-Exchange server, thereby minimizing communication hops.

For small offices using off-site hosted WebDAV,FIG. 16Billustrates an environment for a small office using an offsite hosted iCalendar (a calendar application developed by Apple Computer). In this example, company A may have 3 conference rooms, and computers 1 and 2 may be running the SPD management utilities and Software Agent (SA). Note that the server is accessed via an Internet connection, such as over SSL or VPN connections through a firewall. Routers, hubs, etc. are assumed in the LAN bubble above but are omitted for clarity.

The configuration illustrated inFIG. 16Bposes several challenges: Installation/operational simplicity: Small offices often operate with little to no information technology staff available for applications training, management or installation. The generic nature of WebDAV/iCal services: No calendar behaviors really exist within a WebDAV/iCal service. Instead, the application provides a web-based transactional-based information storage service on which a group calendaring system may be built. Minimizing communications hops: Offsite hosting creates large, variable latencies during communication with the WebDAV server. A variety of software architectures may be used to address these challenges. These are described below.

In some embodiments, installation and operational simplicity are linked as an issue but are accomplished in several only somewhat related ways as follows: Installation of software may be limited to client workstations such that no administrator access to any form of server machine is necessary. Two software elements may be used to fulfill the SA behaviors in each of two client workstations. One of these may be an SPD management utility to fulfill the same purpose as the Outlook VBA application. The other may be a separate supporting service. Both software elements may be installed in the same process. In this way, no decisions regarding which one is needed under what conditions may be necessary. Delegation may be handled using an email notification that indicates the delegation status for the resource to be managed. An attached executable file, which is generated and pre-configured for the WebDAV options necessary, may be optionally installed to install the components necessary to manage the resource.

For medium-to-large offices using MS Exchange,FIG. 16Cillustrates a local MS-Exchange server for their mail services. In this example, Company A may have 3 conference rooms, and computers 1 and 2 may be running Outlook and the SPD Software Agent (SA). Note the more direct connections between the system components. Once again, routers, hubs, etc. are assumed in the LAN bubble above but are omitted for clarity.

For medium-to-large offices using off-site hosted WebDAV,FIG. 16Dillustrates a local WebDAV server for iCalendar services. In this example, company A may have 3 conference rooms, and computers 1 and 2 may be running SPD management utilities and Software Agent (SA). Note the more direct connections between the system components. Once again, routers, hubs, etc. are assumed in the LAN bubble above but are omitted for clarity.

In other embodiments (not shown), the SPDs may be used in systems that implement or use Microsoft Outlook and/or Lotus Notes (an application offered by IBM).

The remote device(s), such as computer devices104(e.g., as described inFIG. 1) may have a CPU and a memory (e.g., shown as122and120inFIG. 1, respectively). The CPU of the remote device(s)104may be similar to the CPU202of the SPDs102. The memory of the remote device(s)104may be similar to the memory204of the SPDs102. The type, functionality, throughput and/or capacity of the CPU and/or the memory of the remote device(s)104may be varied according to the design criteria of a particular implementation.

The remote device(s)104may also be implemented as the mobile computing device170and/or the network data services device172. For example, the software agent1010amay be stored in the memory of the mobile computing device170a(e.g., as shown inFIG. 15). In another example, the software agent1020may be stored in the memory of the network computing services174(e.g., as shown inFIG. 15). The implementation of the remote device(s)104may be varied according to the design criteria of a particular implementation.

Effective use of equipment and/or resources may be an important factor for management of an enterprise environment (e.g., a hospital, a corporate office, a government services building, etc.). For example, efficient room reservation may prevent conflicting use of resources. In some embodiments, pieces of equipment (e.g., resources) may not be fixed to rooms and/or locations. For example, resources may be mounted on movable stations and/or trolleys. In another example, some equipment may be leased and/or rented for a particular occasion.

In an embodiment implemented in a hospital, room reservations may be expanded to include movable equipment. Generally, enterprise environments may want an effective way to trace/track resources to ensure resources are available and not underutilized (e.g., used inefficiently). Different types of rooms may have different purposes. For example, some rooms may be used for consultations and/or examinations. In another example, some smaller rooms may be for patient care and/or small meetings. In yet another example, rooms may be used for operations (e.g., a sterile environment). In another example, large rooms may be used for large gatherings (e.g., dozens and/or hundreds of people). In still another example, some rooms may have expensive lab equipment such as MRIs and/or X-ray machines. The predictability of needs for each type of room may be different. There may be an associated risk when a piece of equipment and/or resource goes offline and/or becomes unavailable.

Resources may be rooms, equipment (e.g., stationary equipment such as MRI machines, moveable equipment such as defibrillator units, etc.), personnel, heating and cooling systems, emergency systems, security systems, etc. The type of resource may be varied according to the design criteria of a particular implementation. The resources may have a consumable such as a refillable product (e.g., toner, water level, chemical level, power capacity, etc.). For example, if the resource is personnel the consumable may be considered an amount of time available for efficient and/or safe work before rest is needed. In some embodiments, the resources may have an expiry time (e.g., a time when the consumable needs replacing, a time before maintenance is needed, a time before the entire resource should be replaced, etc.). The resources should be configured to satisfy health, safety and/or regulatory standards. The type of resource and/or consumable may be varied according to the design criteria of a particular implementation.

In some embodiments a resource may be backed-up with a secondary power source (e.g., a battery). For example, in regular circumstances the battery may not be used, but the battery may have a mandated level of charge to ensure compliance (e.g., safety concerns, regulatory compliance, etc.). The level of charge of the batter may be affected by storage time, battery deterioration and/or actual usage. For example, battery-powered resources, especially movable equipment, should satisfy battery compliance.

Generally, enterprise environments want the right equipment at the right place to ensure efficient use of resources. For example, in some cutting-edge hospitals stations may be implemented as mobile robots. In another example of a conventional hospital environment, hospital stations may flag and/or signal an orderly, nurse and/or technician to indicate where to be and/or go next. The remote device(s)104may implement scheduling data to ensure efficient use of resources.

Determining scheduling data may be a resource-constrained project scheduling problem (e.g., RCPSP). The remote device(s)104may formulate the RCPSP to determine the scheduling data. The scheduling data may be comprised of various activities. The remote device(s)104may determine that there are N activities in a project. For example, a set (e.g., J={j_0, j_1, . . . , j_N, j_N+1}) may denote the set of activities. The remote device(s)104may implement restraints to manage and/or solve the RCPSP. For example, constraints may be that activities cannot be both segmented and preempted (e.g., the activities have to be scheduled).

Generally, some activities may have to precede others (e.g., have a higher priority, be completed sooner, etc.). The remote device(s)104may determine precedence and/or priority by managing precedence relationships. For example, the precedence relationships may be represented by an acyclic graph (e.g., represented as G=(V, E)) stored in the memory of the remote device(s)104. The vertices V of the acyclic graph may be a set of activities. The edges E of the acyclic graph may represent the precedence relationship. In some embodiments, a placeholder activity (e.g., j_0) having no predecessor and/or a placeholder activity (e.g., j_N+1) having no successor may be implemented for analytical convenience.

The remote device(s)104may determine a set (e.g., Q={q_0, q_1, . . . , q_i, . . . , q_M}) to denote renewable resource types. The remote device(s)104may determine a set (e.g., R={rq_0, rq_1, . . . , rq_i, rq_M}) to denote a resource capacity for resource of type. For example, the value rq_i may be a value greater than or equal to zero indicating the resource capacity of the renewable resource type q_i. Each activity in the set J may have an associated duration (e.g., dj_0, dj_1, . . . , dj_i, . . . , dj_N+1). Each activity in the set J may have an associated resource requirement (e.g., rjq_0, rjq_1, . . . , rjq_i, . . . , rjq_M), where rjq_i may represent a requirement of resource the q_i when activity j is scheduled.

The remote device(s)104may store a schedule. The schedule may be denoted by a vector (e.g., S={sj_0, sj_1, . . . , sj_N, sj_N+1}), where sj_N denotes a start time of the activity j_N. A makespan may be defined. The makespan may be a difference between a maximum finish time and a minimum starting time over all activities. The remote device(s)104may determine whether a schedule is feasible. For example, the schedule may be feasible if (1) no activity is started before predecessors of the activity are finished and (2) for every time t, a sum of the resource requirements for all ongoing activities does not exceed enforced capacities.

The RCPSP solved by the remote device(s)104may comprise finding a feasible schedule with a minimal makespan. The remote device(s)104may implement techniques to solve the RCPSP. For example, one technique to solve the RCPSP is the Ant Colony Optimization method. More details on Ant Colony Optimization may be found in “Ant Colony Optimization for Resource-Constrained Project Scheduling”, by Merkle et al, IEEE Trans. On Evolutionary Computation, Vol. 6, August 2002 and “Using an Enhanced Ant Colony System to Solve Resource-Constrained Project Scheduling Problem”, by Chen et al, IJCSNS, Vol. 6, No. 11, November 2006, the appropriate sections of which are incorporated by reference. The technique implemented to solve the RCPSP may be varied according to the design criteria of a particular implementation.

The remote device(s)104may determine the scheduling data by mapping the management problem to the RCPSP. In some embodiments, rooms, movable equipment stations and/or personnel may be denoted as resources. Resources of the same type may be considered fungible. For an example in a hospital, there may be 5 examination rooms which are all similar and/or identical for most purposes. The 5 examination rooms may be given a resource label of ‘Examination Room’, and a resource capacity value of 5. In another example, there may be 3 identical rooms for meetings. The identical meeting rooms may be given a resource label of ‘Customer Meeting Room’ and/or ‘Staff Meeting Room’.

Some resources may be non-fungible for some purposes. For an example in a hospital, there may be four ophthalmologists on call, all fungible for most purposes (e.g., have the same credentials and/or capable of performing the same activities). However, if a patient requests a specific specialist then the requested ophthalmologist become non-fungible (e.g., the resources may not be capable of performing the same activity). In another example, various meeting rooms may be suitable for most purposes and may be part of the same resource capacity. However, one room may have extra equipment (e.g., a projector) and may be non-fungible for a particular purpose. The remote device(s)104may label each resource having a non-fungible purpose with a unique label. The unique label may be one implementation to resolve non-fungible functions performed by the resources.

Customer and/or patient services and/or demands may be mapped as activities. In one example, if a patient requests a consultation with a dermatologist then the consultation may become an activity to be scheduled. In another example, if a patient is to be admitted overnight then the room reservation may become an activity. In yet another example, if a client sets up a meeting with a facility manager then the facility manager meeting may become an activity. In still another example, if a group books an outdoor activity on the front lawn of an office complex over the weekend, the booking of the front lawn may become an activity.

The activities may be assumed to last a pre-determined time unit (e.g., a time slot of one hour, a time slot of 30 minutes, a time slot of 15 minutes, etc.). Activities that last longer than the pre-determined time slots may be broken-up into units having the same time as the pre-determined time slots. Activities that last longer than the pre-determined time slots may form contiguous blocks of time. Contiguous blocks of time may be enforced by storing these as precedence relationships in the acyclic graph G=(V, E).

In some embodiments, specific treatments and/or studies during a patient stay may be represented as activities. For example, a heart-surgery patient may need a lung capacity test twice a day, which may be entered as two activities. The precedence relationships may be that both of the lung capacity tests have to be scheduled after the surgery. Further precedence relationships may be that the second of the lung capacity tests should be performed after a certain amount of time after the first of the lung capacity tests.

The remote device(s)104may model the enterprise management as a type of RCPSP. For an example of a hospital, the hospital may want to clear an activity queue as quickly as possible (e.g., to discharge patients quickly and/or file claims with the insurance company). However, unlike a conventional RCPSP, the scheduling data in the enterprise environment may be revised constantly (e.g., at pre-defined intervals, as new information is received, as prompted by a user, etc.).

The remote device(s)104may perform refinement rounds for various time frames (e.g., similar to how weather forecasting operates). For example, an RCPSP refinement round may be performed by the remote device(s)104for the next 6-8 hours. In another example, an RCPSP refinement round may be performed by the remote device(s)104for the next 24 hours. In yet another example, an RCPSP refinement round may be performed by the remote device(s)104for the next 5-7 days. The time frame of the refinement rounds may be varied according to the design criteria of a particular implementation.

The SPDs102may be assigned and/or paired with every possible resource. Assigning the SPDs102to each resource provides each resource with an ability to self-monitor, switch to stand-by mode and/or wake from sleep when the resource is scheduled to be used. Using the SPDs102, the resource may communicate with the remote device(s)104. The SPDs102may select one or more modes based on the scheduling data. For example, the SPDs102may enter an active state during an activity and/or an inactive (e.g., low-power) mode during an activity based on whether the assigned resource is used for the particular activity.

In some embodiments, personnel may wear one of the SPDs102. For example, in a hospital environment emergency residents may be assigned one of the SPDs102. The SPDs may measure an alertness (e.g., based on hours spent working) of the emergency workers. The SPDs102may indicate to the emergency workers that time is available to rest. While the emergency workers are resting, the SPDs may communicate to the remote device(s)104that the worker is unavailable. In another example, the SPDs102may indicate that unionized employees should stop working to prevent the employees from exceeding overtime regulations.

The SPDs102may be in communication with the remote device(s)104. The SPDs102may store updated the scheduling data communicated by the remote device(s)104in the memory204. For example, the SPDs may communicate periodically, as new information is available to send, and/or at pre-determined time periods. The remote device(s)104may receive updates about incoming activities involving the resources assigned to the SPDs102. For example, a mobile instrument station may start signaling and/or flagging that the resource (e.g., the mobile instrument station) should be moved to a new location (e.g., to be used for a different activity). In another example, a consultation room may display a name of the next patient on a door plate display (e.g., one of the SPDs102configured to operate as a display). In yet another example, an ICU nurse may be messaged by the SPD102to perform a check (e.g., one of the activities). In still another example, a staff member may be reminded by the SPD102to check that a conference room is prepared for a meeting. The remote device(s)104may send updated scheduling data to the SPDs102(e.g., the scheduling data may be updated based on information sent by the SPDs102to the remote device104).

The SPDs102may be configured to flag the assigned resource as unavailable. For example, the SPD102may perform a diagnostics test to detect a malfunction (e.g., of the assigned resource and/or the SPD102). If the SPD102flags the resource as unavailable a communication may be sent to the remote device(s)104. The remote device(s)104may reduce the resource capacity of the resource that is unavailable. For example, the next refinement round may not include the unavailable resource. The unavailable resource may not be used during the refinement rounds until the SPD102communicates that the resource is available (e.g., repaired, refilled, recharged, etc.).

In some embodiments, the SPDs102may be notified of future activities based on the scheduling data. The SPDs102may communicate to the remote device(s)104that the assigned resource may be depleted soon (e.g., the remote device104may check the power budget of the SPD102and/or the assigned resource). In one example, a portable generator may have enough gasoline (e.g., gas may be a consumable of the portable generator resource) for a current outdoor event, but not the next event. The resource assigned to the SPD102may be capable of completing the activity currently assigned but may not be capable of completing upcoming activities. For example, the back-up battery of the assigned resource may have enough charge for the ongoing shift, but not enough charge for the next day. The remote device104may communicate to the SPD102to enter a conservation and/or recovery mode of operation when the SPD102has an insufficient power budget.

The SPD102may signal to the centralized RCPSP (e.g., the remote device(s)104) that the assigned resource will be unavailable. The remote device(s)104may retire the resource from the refinement rounds for the next day, but not from the refinement rounds for the current shift. The resource paired with the SPD102may run a local scheduling problem to opportunistically go into recharge and/or maintenance mode when not expected to be in use. For an example of irrigating an outdoor lawn, there may be a maintenance operation scheduled for a particular time of day (e.g., 8 pm). If another activity (e.g., an outdoor corporate function) spans past 8 pm the maintenance mode may not start. The SPDs handling the sprinkler system may delay irrigation to the next available opportunity.

The enterprise environment may also comprise an outdoor environment (e.g., the front lawn of an office complex). For example, the SPDs102may measure grass deterioration. If the grass deterioration level exceeds a pre-determined amount, the resource (e.g., use of the lawn) may be retired until the grass recovers.

The remote device(s) may include risk metrics when determining the scheduling data. The resources may be assigned usage risk (e.g., based on a current condition of the resource, a capacity of the resource, etc.). Each time slot may be assigned a risk capacity. For example, the risk capacity may be a risk budget the enterprise environment is capable of handling and/or may be afforded at a particular time. The determination of usage risk and/or the risk capacity of time slots may be varied according to the design criteria of a particular implementation.

For an example of a hospital, fewer specialists and/or personnel may be available during a night shift. The remote device(s)104may determine there is low risk capacity during the time slots of the night shift (e.g., fewer resources are available if some resources fail). In some embodiments context information and/or historical data may be used to determine risk capacity. For example, the enterprise environment may expect more activity on certain dates. The remote device(s)104may be programmed (e.g., based on management decisions of the enterprise environment) to lean towards safety prior to and/or during a particular period and assign a low risk capacity.

The SPDs102assigned to the resources may be configured to self-monitor and/or update a risk cost associated with the assigned resource. The SPDs102may determine the risk cost associated with the assigned resource based on various factors. For example, the risk cost associated with the resource may be inferred from collected data and/or historical data using machine learning techniques. In an example of a hospital, the risk cost may be a function of a medical history of the patient and/or a patient type (e.g., the risk cost may not always be a function of something intrinsic to the resource). In another example, particular employees may be known to be careless with some resources. The resource may be assigned a higher risk cost when assigned to the careless employee.

Based on the risk metrics the scheduling data may be different. For example, risky activities may be spread in time to avoid clustering risky activities together. In another example, risky activities may be managed by scheduling the activity when more resources are available (e.g., provide a higher probability of avoiding the risk and/or manage the risk better if an undesirable outcome occurs).

Referring toFIG. 18, a flow diagram of a method1100is shown. The method1100may categorize resource availability. The method1100generally comprises a step (or state)1102, a step (or state)1104, a decision step (or state)1106, a decision step (or state)1108, a step (or state)1110, a step (or state)1112, a decision step (or state)1114, a step (or state)1116, a decision step (or state)1118, a step (or state)1120, a step (or state)1122, a step (or state)1124, and a step (or state)1126.

The step1102may be a start state. In the step1104, the remote device(s)104may categorize one or more resources (e.g., based on information from the SPDs102). The decision step1106may determine if there are more resources to categorize. If so, the method1100moves to the decision step1108. If not, the method1100moves to the step1110. The decision step1108determines if a particular resource is in the same category as another resource. If so, the method1100moves to the step1112. If not, the method1100moves back to the step1104. The step1112may increase a resource capacity. Next, the decision step1114determines if a particular resource has a non-fungible purpose. If not, the method moves back to the step1104. If so, the method moves to the step1116. The step1116applies a unique label to the resource for the non-fungible purpose.

In the step1110the remote device(s)104may determine a risk factor associated with each of the resources (e.g., based on information from the assigned SPDs102). Next, the decision step1118determines if a resource has been flagged as unavailable. If so, the method1100moves to the state1120. If not, the method1100moves to the state1122. The step1120marks a resource as considered unavailable for scheduling. The method1100then moves to the step1124, which provides a resource availability data for scheduling. The step1122marks a resource as considered available for scheduling. The method1100then moves to the step1124. Next, the step1126ends the method1100.

Referring toFIG. 19, a flow diagram of a method1140is shown. The method1140may determine scheduling data. The method1140generally comprises a step (or state)1142, a step (or state)1144, a step (or state)1146, a decision step (or state)1148, a step (or state)1150, a step (or state)1152, a step (or state)1154, a step (or state)1156, a decision step (or state)1158, a step (or state)1160, a step (or state)1162, and a step (or state)1164. The step1142starts the method1140. In the step1144, the remote device(s)104receives resource availability data. Next, the step1146maps service demands as activities. Next, the decision step1148determines if the activity is longer than a time slot. If so, the method1140moves to the step1150. If not, the method1140moves to the step1152. The step1150schedules the activity units with a high precedence relationship. The step1150moves to the step1152. In the step1152, the remote device(s)104determines a precedence relationship between the activities.

Next, the step1154determines a risk capacity of the time slots. Next, the step1156schedules the activities based on precedence relationships, risk capacity and/or resource availability data. Next, the decision step1158determines if another round of refinements are needed. If so, the method1140moves to the step1160. If not, the method1140moves to the step1162. The step1160selects a time frame of a subsequent refinement round, then moves back to the step1144. The step1162sends scheduling data to the SPDs102. The step1164ends the method1140.

Referring toFIG. 20, a flow diagram of method1180is shown. The method1180may operate the SPDs102and/or the associated resources based on the scheduling data. The method1180generally comprises a step (or state)1182, a step (or state)1184, a step (or state)1186, a decision step (or state)1188, a step (or state)1190, a step (or state)1192, a step (or state)1194, a step (or state)1196, a decision step (or state)1198, a decision step (or state)1200, a step (or state)1202, a step (or state)1204, and a step (or state)1206. The step1182generally comprises a start step. In the step1184, the SPDs102cycle between various modes based on default patterns (e.g., patterns already scheduled and/or pre-configured patterns). Next, the step1186checks the scheduling data. Next, the decision step1188determines if the scheduling data indicates an activity. If so, the method1180moves to the step1190. If not, the method1180moves back to the state1184.

The step1190turns on one or more active SPDs for a particular activity. In the step1192, the SPDs inactive for the particular activity may enter a low powered mode. Next, in the step1194, the inactive SPDs may be flagged as available and/or the active SPDs may be flagged as unavailable (e.g., for refinement rounds performed by the remote device(s)104). Next, the step1196checks scheduling data. The decision step1198determines if a particular activity has ended. If so, the method1180moves back to the step1184. If not, the method1180moves to the step1200. The decision step1200determines if another activity has been scheduled. If so, the method1180moves to the step1202. If not, the method1180moves to the step1204. The step1202adjusts a status of the SPDs102according to the priorities (e.g., based on the precedence relationships). The step1204maintains the status of the SPDs102. The step1206ends the method1180.

Referring toFIG. 21, a flow diagram of a method1220is shown. The method1220may update scheduling data for the SPDs102from the remote device(s)104. The method1220generally comprises a step (or state)1222, a step (or state)1224, a decision step (or state)1226, a step (or state)1228, a step (or state)1230, a decision step (or state)1232, a step (or state)1234, a step (or state)1236, a step (or state)1238, and a step (or state)1240.

The step1222may be a start step. The step1224may cycle modes of the SPDs102based on one or more scheduled patterns. Next, the decision step1226determines if a communication mode has started. If not, the method1220moves back to the step1224. If so, the method1220moves to the step1228. In the step1228, the SPDs102communicate with the remote device104. Next, the step1230checks the scheduling data. Next, the decision state1232determines if the remote device104has updated the scheduling data. If so, the method1220moves to the step1234. If not, the method1220moves to the step1236. The step1234updates the SPD scheduling data. The step1236ends communication with the remote device104. The step1238cycles the modes of the SPDs based on the scheduled patterns (e.g., the scheduling data). Next, the step1240ends the method1220.

Referring toFIG. 22, a flow diagram of a method1260is shown. The method1260may check a power budget of the SPDs102. The method1260generally comprises a step (or state)1262, a step (or state)1264, a step (or state)1266, a decision step (or state)1268, a step (or state)1270, a decision step (or state)1272, a step (or state)1274, a step (or state)1276, and a step (or state)1278. The step1261may be a start step. Next, the step1264may cycle modes of the SPDs102based on the scheduling data. Next, the step1266may check the scheduling data. Next, the decision step1268determines if there is an upcoming activity. If not, the method1260moves back to the step1264. If so, the method1260moves to the step1270. The step1270checks the power budget of the SPDs102used for the specified activity. Next, the decision step1272determines if the SPDs102have enough power for the activity. If so, the method moves back to the step1264. If not, the method1260moves to the step1274. The step1274removes the SPDs with insufficient power from the applicable refinement rounds (e.g., the next shift, the next day, the next week, etc.). Next, the step1276conserves and/or recovers power for the SPDs with insufficient power. Next, the step1278ends the method1260.

Referring toFIG. 23, a flow diagram of a method1300is shown. The method1300may display resource availability of an examination room. The method1300generally comprises a step (or state)1302, a step (or state)1304, a step (or state)1306, a step (or state)1308, a decision step (or state)1310, a step (or state)1312, a step (or state)1314, a step (or state)1316, and a step (or state)1318. The step1302may be a start step. In the step1304, the SPD (e.g., a display device) may display examination room information. Next, in the step1306the SPD102begins communication with the remove device104. Next, the step1308checks the room for reservation information (e.g., an activity from the scheduling data). Next, the step1310determines if there is updated information for the room. If not, the method1300moves back to the step1304. If so, the method1300moves to the step1312. The step1312updates the room information stored in the SPD (e.g., in the memory204). Next, in the step1314the SPD ends the communication with the remote device104. Next, in the step1316the SPD displays updated examination room information. The step1318ends the method1300.

The SPDs102may be configured to perform a self-assessment of the assigned/paired resource. The self-assessment may determine an amount of measured wear of the assigned resource. For example, the measured wear may be a fluid level of the resource (e.g., a lubricant level). In another example, the amount of measured wear may be a number of recharges of a rechargeable battery pack. The SPDs102may communicate the amount of measured wear to the remote device(s)104. In some embodiments, the SPDs102may be configured to run and/or solve a local scheduling problem to opportunistically enter a maintenance mode for the assigned resource. The maintenance mode may be entered based on the scheduling data and/or the amount of measured wear (e.g., a function of the measured wear). In some embodiments, the maintenance mode may be performed by the SPD102and/or the assigned resource (e.g., recharging a battery, cooling down, waiting for a lawn to regrow, etc.). In other embodiments, the maintenance mode may be performed by personnel (e.g., repair personnel).

In some embodiments, the resources may be leased equipment. The SPDs102assigned and/or paired to leased resources may flag the leased resource as unavailable. For example, a manager of the enterprise environment may determine a budget (e.g., a cap) for various resources. The leased resource may have a cost driven by actual usage. The leased resource may be flagged as unavailable if an accumulated cost over a time period exceeds a pre-determined cap. For example, a vehicle may be leased based on mileage (e.g., use). When the vehicle reaches a particular mileage, the cost of continued use of the vehicle may exceed the available budget. The vehicle may be flagged as unavailable to prevent exceeding the available budget.

In some embodiments, the remote device(s)104may assign prices (e.g., a representation of a value of the resource) to the resources. The activities in the scheduling data may be assigned budgets. The assigned prices of the resources may go up or down based on an amount and/or a demand of the resource. For example, the assigned price of a resource may increase as the resource becomes depleted (e.g., has a lower capacity). In another example, the assigned price of the resource may increase when the resource is in high demand. The SPDs102and/or the remote device(s)104may communicate and/or update the assigned prices of the various resources. The remote device(s)104may use the assigned prices of the resources and/or the assigned budgets of the activities to determine the scheduling data.

In some embodiments, the SPDs102assigned and/or paired with the resources may be configured to adjust settings of the assigned resources. For example, a setting may be a high-speed mode and a low-speed mode for a fan. In another example, the setting may be an intensity of lights in a meeting room. In yet another example, the setting may be turning on/off lawn sprinklers. The type of setting may be varied according to the design criteria of a particular implementation.

Some resources may perform similar activities. In some embodiments, using one resource may have an indirect effect. For example, a setting to open a ceiling skylight in an office building may be performed to let in more natural light. However, an indirect effect may be that opening the ceiling skylight lets more heat into the office building. For example, the remote device(s)104may know that the ceiling skylights are scheduled to be open and a heat level in the enterprise environment may be increased. Based on the activation of one resource (e.g., the skylight being opened) another of the resources may have a setting changed (e.g., the air conditioning system may be activated to operate at a higher capacity).

The SPDs102may be assigned and/or paired with resources. Based on the type of resource assigned, the SPD102may perform a particular function. For example, a subset of the SPDs102may be proximity and/or presence SPDs. The proximity SPDs may be configured to detect a presence. In some embodiments, the proximity SPDs may be implemented using cameras, motion detectors, heat detectors, pressure sensors, RFID detectors, etc. For example, the proximity SPDs may be configured to perform facial recognition to distinguish between various people attending an activity. More details on methods for detecting a presence may be found in “A survey of human-sensing: Methods for detecting presence, count, location, track, and identity”, by Teixeira et al., ACM Computing Surveys 5, 2010, the appropriate sections of which are incorporated by reference. The implementation of the proximity SPDs may be varied according to the design criteria of a particular implementation.

A number of people attending an activity may affect the amount of resources that should be allocated. For example, if a greater number of people attend the activity than accounted for during the refinement rounds performed by the remote device(s)104then more resources may need to be allocated for the activity. In another example, if a lesser number of people attend the activity than accounted for during the refinement rounds performed by the remote device(s)104then fewer resources may need to be allocated for the activity. The number of people attending the activity may be determined based on the presence detected by the proximity SPDs. The remote device(s)104may receive the detected presence information and then may run refinement rounds to re-allocate resources (e.g., provide updated scheduling data to the SPDs and/or the assigned resources).

The proximity/presence SPDs may be configured to detect people arriving/entering, currently present and/or leaving a room and/or working area. In some embodiments, the proximity SPDs may be configured to recognize a presence of specific individuals, a particular person, and/or a class of people (e.g., a VIP). For example, the VIP may be a CEO of a company.

Using the presence detected by the proximity SPDs, the RCPSP may change on the fly. Changing the RCPSP may affect resource capacity and/or the prioritization of the activities. For example, the precedence relationships may be altered based on the detected presence.

A consequence of presence may be an effect on consumption of one or more of the resources. For example, a lawn may need more time to recover based on the detected presence (e.g., if 100 people attend a garden party activity instead of 20 people). In another example, an AC unit may consume more electricity if an auditorium is at full capacity as opposed to half empty and/or completely empty. The SPDs102assigned/paired to the AC unit may be configured to select a higher power consuming mode of operation based on the presence detected in the auditorium by the proximity SPDs.

An expected number of attendees may affect the scheduling data and/or the allocation of resource for an activity. For example, context information may comprise the expected number of attendees. Generally, the RCPSP may be solved by the remote device(s)104using the expected number of attendees. For example, the expected number of attendees may be determined based on context information. The method of determining the expected number of attendees may be varied according to the design criteria of a particular implementation.

During an activity, presence information detected by the proximity SPDs may indicate that more or less resources are being consumed. In some embodiments, activities may span consecutive time slots. The remote device(s)104may assign more or less resources based on the detected presence (e.g., a number of attendees, a VIP being identified, etc.).

For example, a 2 hour seminar may be an activity scheduled in a company auditorium. The seminar activity may be broken up into 8 sequential activities (e.g., based on a time slot size of 15 minutes). The seminar may be encoded in the graph G=(V, E) by the remote device(s)104. Based on the expected number of attendees, the refinement rounds may assign a given cost of the seminar in terms of resources (e.g., AC settings, equipment reserved, attending staff, etc.). If the remote device(s)104run the refinement rounds every hour, the scheduling data may be updated prior to the midpoint of the seminar (e.g., when 4 of the 8 activity time slots are still remaining for the seminar). Based on the presence detected by the proximity SPDs, the actual attendance may be determined. For example, if the actual attendance detected by the proximity SPDs indicates 50% of the expected attendance then the remote device(s)104may communicate to the SPDs102to reduce AC operation and/or reallocate some of the attending staff to other activities.

The detected presence by the proximity SPDs for one activity may affect the expected number of attendees for another activity (e.g., a related activity). For example, a cocktail reception may be scheduled after the seminar. The cocktail party may be a related activity of the seminar (e.g., the attendance of the seminar may be related to the attendance of the cocktail party). For example, if the actual attendance of the seminar is lower than expected then the expected number of attendees for the cocktail reception may be lowered accordingly.

Machine learning techniques may be implemented by the remote device(s)104to determine the expected number of attendees. For example, the remote device(s)104may use context information such as past attendance to similar activities. In another example, the remote device(s)104may estimate attendance to the activity based on a topic and/or keywords used to describe similar activities. An estimation of the expected number of attendees may be used as the expected attendance for a new activity. The method of determining the expected number of attendees and/or the context information used may be varied according to the design criteria of a particular implementation.

The detected presence by the proximity SPDs may affect the maintenance time of the resources. The SPDs102assigned and/or paired with the resources may receive presence detection information during the activity. In some embodiments, the remote device(s)104may receive the detected presence, update the scheduling data and then communicate the updated scheduling data to the SPDs102. In other embodiments, the SPDs102may store the scheduling data and may make adjustments based on the detected presence communicated by the proximity SPDs. For example, the SPDs102may store the scheduling data along with rules and/or guidelines indicating permitted adjustments to the use of the assigned resource based on the presence detected (e.g., to allow the SPDs102to select modes of operation without receiving information from the remote device(s)104).

Based on presence detected by the proximity SPDs, the need for maintenance and/or recharging may be readjusted. For an example of a lawn of an office complex, the proximity SPDs may detect 100 people attending garden party activity. The remote device(s)104may reduce the lawn “charge” (e.g., the capacity of the resource) far more when 100 people are detected than if 10 attendees are detected. The lawn may be deemed to have a pre-determined capacity before it should be scheduled for recovery. For example, the lawn may be flagged as unavailable and/or temporarily retired from use when a greater number of attendees are detected by the proximity SPDs.

In some embodiments, based on the presence detected by the proximity SPDs, a warning flag may be issued if the number of attendees causes a resource to be outside of compliance. For example, rooms may have a maximum occupancy as determined by a fire department, safety guidelines and/or laws/regulations. The remote device(s)104may take action (e.g., reallocate resources) if a room is about to exceed a limit. For example, the remote device(s)104may run a refinement round and/or provide updated scheduling data to allocate an “overflow” room. In another example, the updated scheduling data may flag personnel to stop more attendees from entering and/or send a notification cancelling a reminder of the activity. The type of resource allocation performed to prevent a resource from being outside of compliance may be varied according to the design criteria of a particular implementation. The detected presence by the proximity SPDs indicating that occupancy has exceeded a limit may be used by the remote device(s)104as context information when scheduling future activities.

In some embodiments, the presence detected by the proximity SPDs may act as an interrupt signal for various SPDs. For example, an SPD may be in a mode of operation (e.g., a power conservation mode). The proximity SPDs may detect a presence, and an interrupt signal may be sent to the SPD. The SPD may perform a duty cycle based on the interrupt signal (e.g., select a particular mode of operation for a pre-determined amount of time). The SPD may then return to a previous mode of operation after completing the duty cycle.

The precedence relationships of the activities may change based on a VIP being in attendance. The proximity SPDs may be configured to detect VIPs (e.g., based on facial recognition, RFID signals, etc.). For example, a CEO of a company may attend the activity without prior notice. In another example, a VP of sales of a customer may decide to attend a customer meeting. The resources allocated for the activity may be re-allocated based on the proximity SPDs detecting the presence of the VIP. The remote device(s)104may run a refinement round based on the detected presence of the VIP communicated by the proximity SPDs.

For example, the presence detected by the proximity SPDs during an activity may indicate the presence of a VIP. The activity may span consecutive time slots. The remote device(s)104may assign a higher priority (e.g., increase the precedence relationship) to the remaining time slots for the activity. The scheduling data may be updated to re-allocate the resources.

Past attendance by VIPs may be used as context information. For example, a previous attendance by the VIP may be used to predict a future appearance of the VIP using machine learning techniques. For example, a particular VIP may have a habit of appearing at all the activities on a particular topic. The remote device(s)104may assign higher priority to the activities on the particular topic as encoded in the precedence relations (e.g., the acyclic graph, G=(V, E)).

Referring toFIG. 24, a flow diagram of a method (or process)1340is shown. The method1340may change modes of operation based on presence detection. The method1340generally comprises a step (or state)1342, a step (or state)1344, a decision step (or state)1346, a decision step (or state)1348, a step (or state)1350, a step (or state)1352, a step (or state)1354, a step (or state)1356, a decision step (or state)1358, a step (or state)1360, and a step (or state)1362. The step1342may be a start step. The step1344may monitor one or more of the presence detection and/or proximity SPDs. Next, the method1340may move to the decision step1346.

The decision step1346may determine whether one or more the proximity SPDs have detected a presence. If not, the method1340may move to the decision step1348. The decision step1348may determine whether the presence detection duty cycle for the proximity SPD has ended. If not, the method1340may return to the step1344. If so, the method1340may end at the step1352.

If the decision step1346determines that one or more of the proximity SPDs have detected a presence, the method1340may move to the step1350. The step1350may turn on SPDs associated with the detected presence (e.g., some SPDs may activate based on the presence of the VIP and/or the number of attendees). Next, the step1352may turn off SPDs associated with no detected presence (e.g., some SPDs may enter a low power mode based on the presence of the VIP and/or the number of attendees). The step1356may monitor the presence/proximity detection SPDs (e.g., continue monitoring the proximity detection SPDs during the presence detection duty cycle). Next, the method1340may move to the decision step1358.

The decision step1358may determine whether a presence has been detected. If so, the method1340may move to the decision step1348. If not, the method1340may move to the step1360. The step1360may turn off SPDs associated with the detected presence. Next, the step1362may turn on SPDs associated with no detected presence. Next, the method1340may return to the step1344.

Referring toFIGS. 25A and 25B, a flow diagram of a method (or process)1380is shown. The method1380may change modes of operation for lighting and security systems in an enterprise operation based on presence detection. The method1380generally comprises a step (or state)1382, a step (or state)1384, a step (or state)1386, a step (or state)1388, a decision step (or state)1390, a step (or state)1392, a decision step (or state)1394, a decision step (or state)1396, a decision step (or state)1398, a step (or state)1400, a step (or state)1402, a step (or state)1404, a step (or state)1406, a step (or state)1408, a decision step (or state)1410, a step (or state)1412, and a decision step (or state)1414.

The step1382may be a start step. Next, in the step1384one or more security SPDs may be in a data collection mode (e.g., SPDs assigned to security cameras, motion detectors, audio sensors, etc.). In the step1386, one or more lighting SPDs may be in a low power mode. In the step1388, one or more of the proximity SPDs may be in a low power mode. Next, the method1380may move to the decision step1390.

The decision step1390may determine whether to begin the proximity SPD duty cycle. If not, the method1380may return to the step1388. If so, the method1390may move to the step1392. For example, the proximity SPDs may periodically check for a presence and/or check for the presence at pre-determined times (e.g., based on the scheduling data). In the step1392, the proximity SPDs may start a data collection mode (e.g., begin monitoring for a presence). Next, the method1380may move to the decision step1394.

The decision step1394may determine whether a presence has been detected (e.g., by the proximity SPDs). If not, the method1380may move to the decision step1396. The decision step1396may determine whether to end the duty cycle of the proximity SPDs. If not, the method1380may return to the step1392. If so, the method1380may return to the step1384.

If the decision step1394determines a presence has been detected, the method1380may move to the decision step1398. The decision step1398may determine whether the presence detected is a security risk. For example, the security risk of the presence detected may be determined using facial recognition. If so, the method1380may move to the step1400. The step1400may perform a security response (e.g., activate alarm SPDs, communicate to the remote device(s)104, etc.). Next, the method1380may move to the step1404, which ends the method1380.

If the decision step1398determines the presence detected is not a security risk, the method1380may move to the step1402. In the step1402, the security SPDs may be in a low power mode. Next in the step1406, the lighting SPDs may begin a duty cycle. In the step1408, the proximity SPDs may be in a low power mode. Next, the method1380may move to the decision step1410.

The decision step1410may determine whether the lighting SPD duty cycle has ended (e.g., based on scheduling data, a pre-determined amount of time, etc.). If not, the method1380may return to the step1408. If so, the method1380may move to the step1412. In the step1412, the proximity SPDs may be in a data collection mode. Next, the method1380may move to the decision step1414. The decision step1414may determine whether the proximity SPDs have detected a presence. If so, the method1380may return to the step1406. If not, the method1380may return to the step1384.

Referring toFIG. 26, a flow diagram of a method (or process)1440is shown. The method1440may reallocate resources based on presence detection. The method1440generally comprises a step (or state)1442, a step (or state)1444, a step (or state)1446, a step (or state)1448, a decision step (or state)1450, a step (or state)1452, a decision step (or state)1454, a step (or state)1456, a step (or state)1458, a step (or state)1460, and a step (or state)1462.

The step1442may be a start step. In the step1444, one or more of the activities may be scheduled and/or the resources may be assigned (e.g., by the remote device(s)104). Next in the step1446, the SPDs102may monitor resource levels and/or report the resource levels to the remote device(s)104. In the step1448, the presence/proximity SPDs may monitor the number of people and/or monitor for VIPs. Next, the method1440may move to the decision step1450.

The decision step1450may determine whether one or more VIPs have been detected. If so, the method1440may move to the step1452. The step1452may communicate the detected presence of the VIP to the remote device(s)104. Next, the method1440may move to the step1458. If the decision step1450determines a VIP has not been detected, the method1440may move to the decision step1454.

The decision step1454may determine whether more people have been detected than expected (e.g., whether the actual number of attendees has exceeded the expected number of attendees). If not, the method1440may return to the step1444. If so, the method1440may move to the step1456. The step1456may communicate the actual attendance to the remote device(s)104. Next in the step1458, the remote device(s)104may run a refinement round to reallocate the resources (e.g., reallocate the resources on-the-fly). In the step1460, the remote device(s)104may communicate the updated scheduling data to the SPDs. Next, the method1440may end in the state1462.

Referring toFIG. 27, a flow diagram of a method (or process)1480is shown. The method1480may reallocate resources for related activities based on presence detection. The method1480generally comprises a step (or state)1482, a step (or state)1484, a step (or state)1486, a step (or state)1488, a decision step (or state)1490, a step (or state)1492, a decision step (or state)1494, a step (or state)1496, and a step (or state)1498.

The step1482may be a start step. Next in the step1484, the remote device(s)104may estimate attendance (e.g., determine the expected number of attendees) based on the context information. In the step1486, the remote device(s)104may allocate the resources (e.g., based on the refinement rounds). In the step1488, the presence/proximity SPDs may track an actual attendance of the activity (e.g., based on the detected presence). Next, the method1480may move to the decision step1490.

The decision step1490may determine whether the actual attendance exceeds the limit (e.g., a safety standard, based on the resources allocated, etc.). If so, the method1480may move to the step1492. The step1492may allocate the resources to handle the excess attendees. Next, the method1480may move to the decision step1494. If the decision step1490determines the actual attendance does not exceed the limit, the method1480may move to the decision step1494.

The decision step1494may determine whether the attendance of the current activity affects another activity. If not, the method1480may end at the step1496. If so, the method1480may move to the step1498. In the step1498, the remote device(s)104may reallocate the resources for the affected activity. Next, the method1480may end at the step1496.

In some embodiments, the remote device(s)104may determine a maintenance time (e.g., a recharge and/or recovery time) of the resources based on the presence detected. For example, the resource may be worn down due to greater attendance numbers and/or the presence of a VIP. In one example, the resource may be the lawn and a greater number of attendees at a lawn party may cause more damage to the lawn. The amount of time needed (e.g., the maintenance time) may increase because of the greater number of attendees.

In some embodiments, the remote device(s)104may determine that a resource is recharged (e.g., the capacity is increased) based on the presence detected. For example, personnel may be the resource, and the presence of more personnel may recharge the resource. For example, the personnel may be emergency response staff that may need rest. When more personnel are detected by the presence detection SPDs, the resource may be increased. In some examples, even the same number of employees detected may increase/recharge the resource because a better rested employee may perform a task more efficiently than an exhausted employee.

In some embodiments, billing/invoicing for use of a resource may be based on the presence detected. For example, some enterprise operations may outsource staff. Based on the number of staff outsourced the enterprise operation may be billed more. The presence detection SPDs may be used to determine the presence of the outsourced staff (e.g., the resource).

In some embodiments, the remote device(s)104may determine whether a resource has arrived at a location for the scheduled activity. For example, the resource may be personnel. The remote device(s)104may determine whether the personnel is at the location of the scheduled activity (e.g., prevent personnel from being in the wrong room, etc.). In some embodiments, the SPDs102assigned to the resource may communicate a notification to indicate that the resource is in a wrong location based on the scheduling data. For example, a staff member may be notified by the SPDs102to move to an appropriate location for the activity. In another example, moveable equipment may communicate a notification (e.g., a flashing light, an audible sound, etc.) to indicate to an employee that the equipment should be moved.

While the foregoing description and drawings represent the preferred embodiments of the present invention, it will be understood that various additions, modifications and substitutions may be made therein without departing from the spirit and scope of the present invention as defined in the accompanying claims. In particular, it will be clear to those skilled in the art that the present invention may be embodied in other specific forms, structures, arrangements, proportions, and with other elements, materials, and components, without departing from the spirit or essential characteristics thereof. The presently disclosed embodiments are therefore to be considered in all respects as illustrative and not restrictive, the scope of the invention being indicated by the appended claims, and not limited to the foregoing description.