Within the intelligent energy management process there are several techniques to be used in conjunction to optimize the life of the node and its availability with the final goal being an energy-neutral operation. The first process used is to monitor the availability of energy from the different energy sources and the quantity of energy available from the attached energy store(s). This enables decisions to be made regarding how long the node should spend in the low-power sleep mode if the energy used while in its active state is to be replaced and thus yield an energy-neutral operation. During times of lower ambient energy availability, it may be necessary to set a sleep duration that will not allow full replenishment of the energy store between cycles, but will keep the node at the minimum level of availability called for in the scenario. Once more energy becomes available from the energy harvesters, the node can then start to replenish its energy store, and once sufficient energy has been stored, the sleep duration can be reduced, increasing the availability of the node. Steps are also taken to minimize energy usage within the node, with peripherals and modules being powered down when they are not required and any I/O pins not currently in use set as inputs to prevent them from driving the current into the external circuitry.
A further strategy uses the current energy status of the node to make decisions regarding the relaying of messages from other nodes, based on their perceived importance. The current energy status of the node is defined as one of a series of discrete points, ranging between zero energy and sufficient energy for continuous operation. This approach has been described by Merrett et al. [5] and is used in their IDEALS/RMR system. In the implementation used in this demonstration, when the energy status of the node is updated, it is assigned a power priority (PP) level based on the amount available. We use levels PP0, PP1, …, PP5, where PP0 represents no energy in the store(s) and PP5 equates to the energy store(s) being full. When a message is produced by a node, for instance, when reporting a sensor reading, a message priority (MP) level is assigned to it based on the value of the information contained in the message. These priorities range from MP1 to MP5 with MP1 messages carrying the highest value information and MP5 carrying the lowest value information. When a message is received for relaying, the message and power priorities are compared and only if the message priority is high enough in comparison to the power priority is the message relayed. The relationship between the message and power priority levels is shown in Figure 8.9. For example, a message with a priority MP1 would be relayed if the node is in the power priority levels PP1 to PP5. However, a message with priority MP3 will only be relayed if the node has a power priority level of PP3 or above. In the case when the energy level of
![]() |
![]() |
![]() |
![]() |
Figure 8.9 Relationship between the message and the power priority levels. (After: [5].)
the node has been assigned a lower level, say, PP2, the message will be dropped, as the value of the information within the message is not considered high enough to justify the energy used in relaying it.
The software that deals with the energy management process has been built in a modular manner and is organized as a three-layer stack. These layers consist of:
• The physical energy layer interfaces directly to the energy resources and their associated hardware.
• Above this layer is the energy analysis layer, which takes information from the physical layer and uses information about the energy sources to calculate the actual energy produced or stored depending on the type of module.
• The top layer of the stack process is the energy control layer, which provides a high-level view of the energy subsystem and reports the status of the energy hardware to the rest of the application software in a manner independent of the actual hardware used.
Further details on this stack approach to energy management can be found in
[6].