After a few unexpected shutdowns, due to low battery power, that resulted in SD card corruption (specifically Git cache corruption) I decided to take advantage of the LBO pin on the PowerBoost 1000c.
The LBO pin will go to 0V when the battery voltage drops below 3.2V. We can utilize a GPIO pin on the Raspberry Pi Zero W to monitor the LBO pin state and then initiate a system shutdown when the LBO pin goes low.
I selected GPIO pin 21 simply because it was at the end of the bonnet and out of the way.
Adding a male pin to the PowerBoost 1000c and a female jumper cable to the bonnet allows for easy disassembly if components need to be replaced.
To configure pin 21, we need but a few lines of code at the beginning of the guerillaClock.py script
#LBO shutdown PIN PIN = 21 GPIO.setmode(GPIO.BCM) GPIO.setup(PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
And finally, at the end of the main loop we check the current state of the LBO pin and shutdown the system if necessary.
#Check for low power if not GPIO.input(PIN): logger.debug("Low Battery Power Detected. Shutting down...") GCD.off() os.system("sudo shutdown -h now")