Reading the comments to @joan's answer, it occurs to me that you might be open to "Low Power" in lieu of "Zero Power".
If that's the case, and your RPi model is 4B you can reduce the current draw to about 35-40 mA (200mW) by changing a couple of configuration variables in your EEPROM bootcode. See this answer for details.
You can schedule entry into "Low Power" power mode programmatically (e.g. cron
), but you will still need external hardware (a momentary push-button switch) to restore the RPi to an operational state. If it must be automated, this can be done with the DS3231 Realtime Clock (RTC) to pull the GLOBAL_EN
via on the PCB low at the specified time. Additional hardware is required to automate wakeup, but software-wise this is supported by the kernel via a dtoverlay
.
If you actually do need "Zero Power", you can also get that, but NOT through the EEPROM bootcode. And it will require a bit more external hardware. I won't go on as I'm not sure which solution you're committed to, but feel free to ask another question, or edit this one.
In summary then:
You can enter "Low Power mode" by properly setting two (2) config variables in the bootcode stored in EEPROM but you can't exit "Low Power mode" without external hardware.
You can enter "Zero Power mode" using the dtoverlay=gpio-poweroff
in /boot/config.txt
. This will require additional hardware; perhaps a RTC and a PMIC.
You cannot have them both (Zero Power and Low Power). I cannot explain why this is, but will refer you to The Organization's experts.