Hello @wsanders
you answered your question yourself - power off functionality is not implemented yet on M5PaperS3 and therefore RTC alarms do not work.
Some background (as I understand it). Some M5Stack devices - like M5Paper (non S3 version) - can not power off while being powered from USB so the current code in Power_Class does the following: it sets up both, RTC alarm and ESP sleep functions (e.g. deep sleep and light sleep). It then first attempts to power off - which works when powered from battery, so the code execution ends here. However when powered from USB, power off does nothing and the 'backup' ESP sleep functions take over.
So with M5PaperS3 and the current state of Power_Class when you call timerSleep(int seconds) it works because ESP sleep function is setup and can take over. However when you call the other timerSleep() functions nothing happens as the ESP sleep functions are not setup here and power off isn't implemented yet.
And when you call setAlarmIRQ(30) and powerOff() manually nothing happens either - same reason again - power off is not implemented yet.
BTW: you can still test your code though - during the 30 seconds you can double-click the side button to actually power off M5Paper and when the time is up it should power on again.
Thanks
Felix