Wireless Sensor Networks (WSNs) which consist of randomly deployed tiny sensors, data processing unit and communicating components have a wide range of applications, such as agriculture, business, military and health. WSN are constrained by power, memory and computational resources and require a novel design approach. The number of WSN deployments for real life applications have rapidly increased. Still, the energy problem remains one of the major barriers preventing the complete exploitation of this technology. Sensor nodes are typically powered by batteries with a limited lifetime and even with the harvesting of additional energy from the external environment (e.g., using solar cells or piezo-electric mechanisms) it remains a limited resource to be consumed judiciously.