I’ve been using the default clock app on Samsung phones as my alarm(s), for almost two decades.

A recent update has changed the ‘upcoming alarm’ notification. You have the option to dismiss/shut off an alarm that’s supposed to sound in the next 5-30min via that notification; but a recent update has changed that to dismiss ALL upcoming alarms for the entire day, as well as every upcoming alarm for future days if they’re set for the same time.

I used to have a sporadic work schedule with varying start times; so I’d set/schedule my alarms for the next week or two in advance. If I set one for 8am tomorrow and one for 8am four days from now; dismissing that first alarm at 7:40am also dismisses the one that’s four days away…

If I set alarms for 8am, 10am, and noon today; dismissing the first one at 7:45 dismisses all three alarms together…

There is no options to change this, the only related setting is for how early that ‘upcoming alarm’ notification shows up (5, 15, or 30min)


What alarm app do you use? Got a recommendation?

/edit

People seem to be misunderstanding me. I don’t have trouble waking up/snoozing alarms too much.

I just need a typical alarm app, but one that doesn’t dismiss a bunch of unrelated alarms instead of just the one that’s supposed to go off very soon.

I was just curious if people had a particular one they liked.

  • Midnight Wolf@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    3 hours ago

    This is likely way overkill for your needs, but I have Home Assistant control my phone’s alarms, based on my various calendars that I sync using CalDav through DAVx5. HA will adjust the wake-up buffer based on what calendar the event is - so if yesterday I had an in-person appointment at 10am, and the buffer was 2.5h, but tomorrow’s event is remote, I don’t need to wake up as early, and so it adjusts the buffer because of it. This is set in the automation.

    Main automation
    alias: wreckedcarzz - Auto-Set Phone Alarm from CalDAV
    description: ''
    triggers:
      - trigger: calendar
        event: start
        offset: '-8:0:0'
        entity_id: calendar.appointments
        id: in_person
      - trigger: calendar
        event: start
        offset: '-8:0:0'
        entity_id: calendar.appointments_remote
        id: remote
      - trigger: calendar
        event: start
        offset: '-8:0:0'
        entity_id: calendar.trips_and_vacations
        id: trips
        enabled: false
      - trigger: calendar
        event: start
        offset: '-8:0:0'
        entity_id: calendar.work_schedule
        id: work
    conditions:
      - condition: template
        value_template: '{{ trigger.calendar_event.all_day == false }}'
        alias: Make sure the event is not for the whole day
      - alias: Last triggered at least 12 hours ago
        condition: template
        value_template: >-
          {{ this.attributes.last_triggered == None or (now() -
          this.attributes.last_triggered) > timedelta(hours=12) }}
    actions:
      - variables:
          new_buffer: >-
            {% set current = states('input_number.alarm_wake_up_time_buffer') |
            float(0) %}
    
            {% if trigger.id == 'in_person' %}
              {{ current if 2.5 <= current <= 3.5 else 3 }}
            {% elif trigger.id == 'remote' %}
              {{ current if 0.5 <= current <= 2.0 else 1 }}
            {% elif trigger.id == 'work' %}
              {{ current if 1.5 <= current <= 2.5 else 2 }}
            {% elif trigger.id == 'trips' %}
              {{ current if 1.0 <= current <= 2.0 else 1.5 }}
            {% else %}
              {{ current if 1.5 <= current <= 3.5 else 2.5 }}
            {% endif %}
          alarm_hour: >-
            {{ ((as_datetime(trigger.calendar_event.start) | as_local) -
            timedelta(hours=new_buffer | float)).hour }}
          alarm_min: >-
            {{ ((as_datetime(trigger.calendar_event.start) | as_local) -
            timedelta(hours=new_buffer | float)).minute }}
          event_title: >-
            {{ trigger.calendar_event.summary | replace(',', '') | replace(':', '')
            }}
      - alias: Update the dashboard slider
        action: input_number.set_value
        target:
          entity_id: input_number.alarm_wake_up_time_buffer
        data:
          value: '{{ new_buffer | float }}'
      - alias: Send the alarm command
        action: notify.mobile_app_wreckedcarzz_phone
        data:
          message: command_activity
          data:
            ttl: 0
            priority: high
            intent_action: android.intent.action.SET_ALARM
            intent_extras: >-
              android.intent.extra.alarm.HOUR:{{ alarm_hour
              }},android.intent.extra.alarm.MINUTES:{{ alarm_min
              }},android.intent.extra.alarm.MESSAGE:{{ event_title
              }},android.intent.extra.alarm.SKIP_UI:true
    

    Then I created the necessary helper (input_number.alarm_wake_up_time_buffer) for how early to set the alarm at runtime. Integrate CalDav of course, syncing your calendars to HA, and adjust the automation script as needed. Make sure HA can run in the background/is not limited by battery optimization. And this all requires the HA companion app, obviously.

    Boom, with all that in-place, I just set my events into my calendar, they sync, HA triggers a couple hours before I need to wake up, it sets the alarm, and I get woken up at the planned time.

    I use the Google clock, so no promises for any other system, but I’ve been using this for 6+ months and it’s been great. It does add a point of failure (server/HA freezes; internet outage when the automation triggers) but it hasn’t happened yet, just hypotheticals.