I just tested the changes for getting the alarm id. There were a few items I had to change to compile it and then I ran it with Vicknet's trick of updating the seconds in every loop for a couple of (virtual) years. It worked fine. Of course since I was setting the seconds (or in a few high speed tests, minutes) it didn't hit right on the second, but it ran fine.
The code I used to test it with:
#include <Time.h>
#include <TimeAlarms.h>
AlarmID_t morningAlarmID, afternoonAlarmID, eveningAlarmID;
char buf[100];
void setup()
{
Serial.begin(57600);
Serial.println("Initializing..");
morningAlarmID = Alarm.alarmRepeat(8,30,0, onAlarm);
afternoonAlarmID = Alarm.alarmRepeat(13,25,0,onAlarm);
eveningAlarmID = Alarm.alarmRepeat(17,45,0,onAlarm);
}
void onAlarm()
{
// alarm callback function
AlarmId id = Alarm. getTriggeredAlarmId();
if(id == morningAlarmID) {
Serial.println("Morning Alarm");
}
else if (id == afternoonAlarmID) {
Serial.println("Afternoon Alarm");
}
else if (id == eveningAlarmID) {
Serial.println("Evening Alarm");
}
else {
Serial.println("Invalid Alarm ID");
}
sprintf(buf,"Time %d:%d:%d %d/%d/%d", hour(),minute(),second(),day(),month(),year());
Serial.println(buf);
}
void loop()
{
Alarm.delay(0);
adjustTime(55);
// sprintf(buf,"Time %d:%d:%d %d/%d/%d", hour(),minute(),second(),day(),month(),year());
// Serial.println(buf);
}