Energy in sensor networks is a distributed, non-transferable resource. Over time, differences in energy availability are likely to arise. Protocols like routing trees may concentrate energy usage at certain nodes. Differences in energy harvesting arising from environmental variations, such as if one node is in the sun and another is in the shade, can produce variations in charging rates and battery levels. Because many sensor network applications require nodes to collaborate - to ensure complete sensor coverage or route data to the network's edge - a small set of nodes whose continued operation is threatened by low batteries can have a disproportionate impact on the fidelity provided by the network as a whole. In the most extreme case, the loss of a single sink node may render the remainder of the network unreachable. While previous research has addressed reducing the energy usage of individual nodes, the challenge of collaborative energy management has been largely ignored. We present Integrated Distributed Energy Awareness (IDEA), a sensor network service enabling effective network-wide energy decision making. IDEA integrates into the sensor network application by providing an API allowing components to evaluate their impact on other nodes. IDEA distributes information about each node's load rate, charging rate, and battery level to other nodes whose decisions affect it. Finally, IDEA enables awareness of the connection between the behavior of each node and the application's energy goals, guiding the network toward states that improve performance. This paper describes the IDEA architecture and demonstrates its use through three case studies. Using both simulation and testbed experiments, we evaluate each IDEA application by comparing it to simpler approaches that do not integrate distributed energy awareness. We show that using IDEA can significantly improve performance compared with solutions operating with purely local information.