This is a good question and one I am considering with the mesh devices which I want to run for long periods on a LiPo battery. I have researched what can be done based upon voltage measurement. The Xenon and Argon (and Photon) do not have LiPo battery gauge ICs, although you could implement an external one with the Photon via I2C - but more power usage! The Xenon and Argon as I understand things use an internal pin (BATT) with a resistor voltage divider so the voltage output of the LiPo battery can be easily and accurately measured. However, I am unclear whether this decouples when the device is sleeping. Since, sleep modes have not been implemented yet - won’t know for certain until 0.8.0-RC.?? released.
Voltage measurement can’t tell you much for certain but 3 things are pretty clear. See diagram below:
4.1V - Fully Charged
4.1V to >3.7V - Nominal
<=3.7V - Needs recharging
All depends upon the current drawn relative to the battery C rating. I intend to do some experimentation as the peak current load is what will determine the battery life as much as the duty cycle. The other factor here is that for the Photon you must be jacking up the volts to 5 to feed the Vin pin? That will lose some power.