Skip to content

Instantly share code, notes, and snippets.

@jtaseff
Last active March 6, 2024 15:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jtaseff/7a6cb0242ae2ab210663545c8a4bc3ee to your computer and use it in GitHub Desktop.
Save jtaseff/7a6cb0242ae2ab210663545c8a4bc3ee to your computer and use it in GitHub Desktop.
RemindMe engine for Home Assistant - Task reminder notifications
alias: RemindMe - Task Reminders
description: ""
trigger:
- platform: time_pattern
minutes: "10"
- platform: time_pattern
minutes: "25"
- platform: time_pattern
minutes: "40"
- platform: time_pattern
minutes: "55"
condition: []
action:
- service: todo.get_items
metadata: {}
data:
status: needs_action
target:
entity_id:
- todo.remind_me
response_variable: itemlist
- repeat:
for_each: "{{ itemlist['todo.remind_me']['items'] }}"
sequence:
- service: persistent_notification.create
metadata: {}
data:
title: Forced
message: "{{ repeat.item }}"
enabled: false
- choose:
- conditions:
- condition: template
value_template: "{{ as_datetime(repeat.item.due) < now() }}"
sequence:
- if:
- condition: state
entity_id: input_boolean.remindme_unforgettable_reminders
state: "on"
then:
- service: persistent_notification.create
metadata: {}
data:
title: "{{ repeat.item.summary }}"
message: "Overdue: {{ repeat.item }}"
enabled: false
- service: notify.reminder_notification_group
metadata: {}
data:
message: "{{ repeat.item.summary }}"
data:
group: Reminders
channel: Reminders-PastDue
importance: low
sticky: "true"
persistent: true
alert_once: true
notification_icon: mdi:reminder
tag: "{{ repeat.item.summary }}"
origdata: "{{ repeat.item }}"
origdue: "{{ repeat.item.due }}"
url: /todo?entity_id=todo.remind_me
clickAction: /todo?entity_id=todo.remind_me
actions:
- action: Reminder-Complete
title: Complete
- action: Reminder-Snooze2hr
title: 2 Hours
- action: Reminder-Snooze1day
title: Tomorrow
- conditions:
- condition: template
value_template: >-
{{ as_datetime(repeat.item.due) < now() +
timedelta(minutes=15) }}
sequence:
- service: persistent_notification.create
metadata: {}
data:
title: "Upcoming: {{ repeat.item.summary }}"
message: "{{ repeat.item }}"
enabled: false
- service: notify.reminder_notification_group
metadata: {}
data:
message: "{{ repeat.item.summary }}"
data:
group: Reminders
channel: Reminders-Active
importance: default
sticky: "true"
persistent: true
alert_once: true
notification_icon: mdi:reminder
tag: "{{ repeat.item.summary }}"
origdata: "{{ repeat.item }}"
origdue: "{{ repeat.item.due }}"
url: /todo?entity_id=todo.remind_me
clickAction: /todo?entity_id=todo.remind_me
actions:
- action: Reminder-Complete
title: Complete
- action: Reminder-Snooze2hr
title: 2 Hours
- action: Reminder-Snooze1day
title: Tomorrow
mode: single
@jtaseff
Copy link
Author

jtaseff commented Mar 4, 2024

This is called every 15 minutes and sends reminders for any tasks coming up in the next 15 minutes.
It also sends re-reminders for any that are past due (optional with a helper boolean) - this guarantees reminders can't get swiped away or lost when your phone restarts, they'll keep popping up until marked Complete or snoozed.
It would be cool if HA has an automation trigger when a task becomes due, like calendar events starting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment